Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 СУБД с возможностью указать сколько секунд делать выборку  [new]
Searcher2
Guest
Месяц назад видел такую субд где пишеш
SELECT *
FROM balala
WHERE blalala
а потом чтото типа
DURING 2 SECONDS

И возвращаються все строки, которые удалось выбрать з окромного датасета на протяжении єтих 2 секунд

Как называется, уже полчаса гуглю) Спасибо!
5 окт 15, 15:18    [18236769]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Searcher2,

ну в virtuoso например такое есть, синтаксис другой конечно...
5 окт 15, 16:59    [18237430]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
Searcher2
И возвращаються все строки, которые удалось выбрать з окромного датасета на протяжении єтих 2 секунд

сервер скорее будет поддерживать ограничение времени выполнения запроса, чем время получения выборки.
Потому что методов выполнения запроса много разных, и, например, бывают такие, которые не выдают ни одной записи на протяжении N секунд, а потом могут быстро выдавать весь результат.
Соответственно, в вашем случае, при определенной сложности запроса, вы можете вообще не получить ни одной записи.

Такая фича используется разве что в realtime системах, когда результат надо получить за время N, и не больше, иначе результат уже не нужен.
Кстати, кроме самой СУБД такую фичу может поддерживать какая-нибудь промежуточная прослойка (если СУБД умеет "отменять" выполнение запроса на любом этапе, а прослойка умеет командовать отмену запроса по истечении таймаута).

Что-то такое вроде было в postgresql, но не уверен, что оно есть в "общей" версии. Обычно у разных СУБД есть всякие лимиты времени активности коннекта, и разве что логирование запросов, которые выполняются дольше N секунд.

p.s. искал в гугле, может не так, ничего не нашел.
5 окт 15, 22:05    [18238573]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
roden
Member

Откуда:
Сообщений: 741
Searcher2
...
Как называется ...

Все-таки ... скорее всего это реализация в прослойке или приложении
6 окт 15, 11:50    [18240240]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 713
Searcher2
И возвращаються все строки, которые удалось выбрать з окромного датасета на протяжении єтих 2 секунд

Как называется, уже полчаса гуглю) Спасибо!


Если в оракле, можете делать ограничение по количеству выбираемых записей.

select * from tablename  where rownum <=100


Время можете подобрать эсперементальным путем.
8 окт 15, 12:14    [18251956]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
Serguei
Если в оракле, можете делать ограничение по количеству выбираемых записей.

это не то, и есть практически в любой СУБД

select first n /skip m...
select top n ...
select ... order by ... rows n ...
8 окт 15, 14:42    [18253238]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
ДохтаР
Member [заблокирован]

Откуда: Новоукраинск
Сообщений: 16864
Searcher2
Месяц назад видел такую субд где пишеш
SELECT *
FROM balala
WHERE blalala
а потом чтото типа
DURING 2 SECONDS

И возвращаються все строки, которые удалось выбрать з окромного датасета на протяжении єтих 2 секунд

Как называется, уже полчаса гуглю) Спасибо!


На месте архитектора
я бы такой функционал в продуктив не пустил бы.

Потому, что подобного рода фичи создают
непредсказуемые логические ошибки
в технологических процессах.
Боростья с которыми гораздо дороже , чем
сайзить и тюнить обычную БД.
8 окт 15, 17:02    [18254329]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
JDS
Member

Откуда:
Сообщений: 692
Не пробовал, но вариант в оракле:
1. делаешь пайплан-функцию с одним из вх. параметров время выполнения
2. на входе засекаешь время начала работы с выходом из ф-ции по указанному таймауту
3. делаешь селект к этой функции
4. если все нормуль, радуешься )
8 окт 15, 17:07    [18254368]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
ДохтаР
На месте архитектора я бы такой функционал в продуктив не пустил бы.

почитайте про "системы реального времени". Есть "мягкие" и "жесткие". Для "жестких"
"Ситуация, в которой обработка событий происходит за время, большее предусмотренного, в системе жёсткого реального времени считается фатальной ошибкой."

Допустим, приложению нужен ответ на запрос в течение 1 секунды. Через 2 секунды результат запроса уже нафиг не будет нужен. Поэтому через 2 секунды запрос уже можно отрубать. А если такого ограничения нет, то запрос может выполняться и 3 и более секунд, что приведет к общему уменьшению отклика системы, что сделает неактуальным и ДРУГИЕ запросы.
Так что при наличии данного требования (ограничения запросов по времени), и его отсутствия в реализации, система при определенной нагрузке просто встанет раком.
8 окт 15, 18:50    [18254859]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Зимаргл
Guest
kdv
ДохтаР
На месте архитектора я бы такой функционал в продуктив не пустил бы.

почитайте про "системы реального времени". Есть "мягкие" и "жесткие". Для "жестких"
"Ситуация, в которой обработка событий происходит за время, большее предусмотренного, в системе жёсткого реального времени считается фатальной ошибкой."

Допустим, приложению нужен ответ на запрос в течение 1 секунды. Через 2 секунды результат запроса уже нафиг не будет нужен. Поэтому через 2 секунды запрос уже можно отрубать. А если такого ограничения нет, то запрос может выполняться и 3 и более секунд, что приведет к общему уменьшению отклика системы, что сделает неактуальным и ДРУГИЕ запросы.
Так что при наличии данного требования (ограничения запросов по времени), и его отсутствия в реализации, система при определенной нагрузке просто встанет раком.

Слышал звон да не знаю где он. Классический случай.
В РТ лонг операции дробятся и выполняются отдельной подпрограммой, не влияющей на отклик системы.
8 окт 15, 20:53    [18255349]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
Зимаргл
Слышал звон да не знаю где он. Классический случай.

идите в сад, товарищ. вы, очевидно, не были на докладе Бартунова про real-time запросы к Postgresql в хрен знает каком затертом году.
9 окт 15, 01:45    [18256334]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
Зимаргл,

и вообще - дробятся, не дробятся... выполнить запрос надо за 0.1 сек. а он выполняется за 0.2 сек. Что будете делать?
Казалось бы, в предыдущем сообщении я внятно описал проблемы RT выполнения запросов (или операций вообще, безотносительно СУБД). Вы начинаете нести какую-то фигню по поводу дробления. ?
9 окт 15, 01:47    [18256337]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Зимаргл
Guest
kdv
Зимаргл,

и вообще - дробятся, не дробятся... выполнить запрос надо за 0.1 сек. а он выполняется за 0.2 сек. Что будете делать?
Казалось бы, в предыдущем сообщении я внятно описал проблемы RT выполнения запросов (или операций вообще, безотносительно СУБД). Вы начинаете нести какую-то фигню по поводу дробления. ?

Я занимаюсь РТ системами.
Ты занимаешься СУБД.
Это совершенно ортогональные миры. Непонятно, с чего ты вдруг к СУБД решил приплести РТ? Ты же в этом не понимаешь. И пример написал неадекватный, типа "как правильно вышивать на тракторе". Его обсуждать бессмысленно.

1.Система может являться РТ с _любым_ детерминированным временем отклика. Хоть год. Хотя обычно быстрые.
2.Обычная ОС (и даже тулсет ОС) или СУБД никогда не превратится в РТ независимо от количества бубнов.
2.1 SQL СУБД по определению не может быть РТ для произвольных запросов.
3.Нужно использовать адекватные инструменты.

Для ТС самый адекватный совет 18251956. Если для какого либо тултипа или автокомплита, так можно даже не в отдельном потоке.
9 окт 15, 02:16    [18256367]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30257
Зимаргл
Это совершенно ортогональные миры. Непонятно, с чего ты вдруг к СУБД решил приплести РТ?

потому что я общался с людьми, которые разрабатывают РТ-СУБД. А вот с вами продолжать общение не имею ни малейшего желания.
9 окт 15, 02:30    [18256373]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
mikron
Member

Откуда:
Сообщений: 888
JDS
Не пробовал, но вариант в оракле:
1. делаешь пайплан-функцию с одним из вх. параметров время выполнения
2. на входе засекаешь время начала работы с выходом из ф-ции по указанному таймауту
3. делаешь селект к этой функции
4. если все нормуль, радуешься )


В оракле помоему есть более правилные варианты.
Создать профил. В профиле указать мах время выполнения запроса.
Создать пользователя и приписать ему профил.

Пищу по помяти, если чего полутал или забыл - извените.
9 окт 15, 10:26    [18257147]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Adx
Guest
Searcher2,
хотелось бы узнать пример, где это можно применить на практике.
9 окт 15, 12:18    [18258011]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 713
mikron
Создать профил. В профиле указать мах время выполнения запроса.

угу и все запросы будут работать ровно 2 секунды. Отлично решение! )))
9 окт 15, 16:59    [18259787]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
roden
Member

Откуда:
Сообщений: 741
mikron

В оракле помоему есть более правилные варианты.

Для адептов оракла всегда так
9 окт 15, 18:44    [18260231]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
JDS
Member

Откуда:
Сообщений: 692
mikron
Пищу по помяти, если чего полутал или забыл - извените.

Да. Есть такое вроде, но не испытывал )
9 окт 15, 22:10    [18260996]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67468
Блог
JDS
Не пробовал, но вариант в оракле:
1. делаешь пайплан-функцию с одним из вх. параметров время выполнения

В общем случае очевидно неработоспособен. Впрочем, учитывая, что такой проект вообще неработоспособен, разница небольшая.
9 окт 15, 23:28    [18261393]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 713
kdv
Serguei
Если в оракле, можете делать ограничение по количеству выбираемых записей.

это не то, и есть практически в любой СУБД

select first n /skip m...
select top n ...
select ... order by ... rows n ...


Чем отличается "это" от "того"? Я так понимаю у ТС стоит задача сделать юзер интерфейс отзывчивым, ограничивая выборку данных.
Почему нельзя сделать это таким образом можете поснить?
10 окт 15, 09:56    [18261907]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
JDS
Member

Откуда:
Сообщений: 692
softwarer
В общем случае очевидно неработоспособен. Впрочем, учитывая, что такой проект вообще неработоспособен, разница небольшая.

Проверил ради интереса (правда таймаут маленький)):
+
SQL> create type TypeTestObject as object (object_id number)
  2  /
Type created
SQL> create type TypeTest as table of TypeTestObject;
  2  /
Type created
SQL> create or replace function test_func return TypeTest pipelined
  2  is
  3    t number;
  4  begin
  5    t := dbms_utility.get_time;
  6    for i in (select tao.OBJECT_NAME, tao.OBJECT_ID, tao.OBJECT_TYPE
  7                from all_objects tao)
  8    loop
  9       if dbms_utility.get_time - t > 10 then
 10          raise_application_error(-20001, 'Таймаут еррор )');
 11       end if;
 12  
 13       pipe row (TypeTestObject(i.object_id));
 14    end loop;
 15  end;
 16  /
Function created
SQL> select *
  2    from table(test_func)
  3  /
 OBJECT_ID
----------
       258
       259
       311
       313
       314
       316
       317
       319
       605
       886
       887
       889
       890
       901
       903
       905
       907
       909
       911
       913
 OBJECT_ID
----------
       915
       917
       919
       921
       923
       925
       927
       929
       931
       933
       935
       937
       939
       941
       943
       945
       947
       949
       951
       953
       955
 OBJECT_ID
----------
       957
       959
       961
       963
       965
       967
       969
       971
       973
       975
       977
       979
       981
       983
       984
       985
       987
       989
       991
       993
       995
 OBJECT_ID
----------
       997
       999
      1001
      1003
      1005
      1007
      1009
      1011
      1013
      1015
      1017
      1019
      1021
      1023
      1025
      1027
      1029
      1031
      1033
      1035
      1037
 OBJECT_ID
----------
      1039
      1041
      1043
      1044
      1045
      1047
      1049
      1051
      1053
      1055
      1057
      1059
      1061
      1063
      1065
      1067
      1069
select *
  from table(test_func)
ORA-20001: Таймаут еррор )
ORA-06512: на  "AGS.TEST_FUNC", line 10

И как только начал, сразу понял, что это не совсем корректно - запрос в лупе-то кто будет отсекать?
А здесь получается только фетч и то похоже, что не корректно отсекается - во всяком случае на клиенте выйти точно на указанное время будет почти нереально ) В общем конечно не вариант.

mikron, правильно вспомнил, параметр есть вроде как.
10 окт 15, 16:49    [18262516]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
JDS
Member

Откуда:
Сообщений: 692
Serguei, тем, что 1. даже с роунум запрос в итоге
может отрабатывать дольше чем хочет ТС
2. Все-таки он заведомо вернет не все записи )
В общем ерунда какая-то. В реальной жизни можно сравнить, когда приходишь, а там очередь, посмотрел, что долго, решил не стоять и свалил.
ТС видимо, хотел бы сделать то же самое в субд )
В таком случае обычно стараются уходить от запросов, которые заведомо будут долгими.
Ограничивают выборку условиями, делают предв. оценку и если что выдают соотв. сообщение, ну или делать промежуточную прослойку.
10 окт 15, 18:46    [18262747]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 713
JDS
Serguei, тем, что 1. даже с роунум запрос в итоге
может отрабатывать дольше чем хочет ТС
2. Все-таки он заведомо вернет не все записи )

У нас в системе есть такие запросы для того чтобы, когда пользователь задал слишком широкие критерии поиска, что бы не тянуть на клиента слишком много данных. Все равно огромные списки бесмысленны - работать с ними невозможно.
Так что нужно правильно использовать такие штуки. ИМХО.
10 окт 15, 19:54    [18262892]     Ответить | Цитировать Сообщить модератору
 Re: СУБД с возможностью указать сколько секунд делать выборку  [new]
ViPRos
Member

Откуда:
Сообщений: 9967
Serguei,

ваша решение тожебессмысленно
11 окт 15, 00:30    [18263544]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить