|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЕсли запрос начал выполняться до того как писатель вызвал commit() то вернутся 1000 записей до начала писания первой записи этого миллиона. В независимости от текущего положения и состояния писателя. Ок. Задачка номер 2. Два коннекта одновременно добавляют по миллиарду записей. Как будут расположены эти записи в базе: а) Сначала миллиард первого, потом миллиард второго. б) Вперемешку. Каково поведение твоей базы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 22:11 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov bluestreakЕсли запрос начал выполняться до того как писатель вызвал commit() то вернутся 1000 записей до начала писания первой записи этого миллиона. В независимости от текущего положения и состояния писателя. Ок. Задачка номер 2. Два коннекта одновременно добавляют по миллиарду записей. Как будут расположены эти записи в базе: а) Сначала миллиард первого, потом миллиард второго. б) Вперемешку. Каково поведение твоей базы? Если оба миллиарда содержат один commit() в конце - то сначала первый потом второй. Если в таблице не определён timestamp, то обе транзакции войдут без проблем. Если timestamp определён, то база проверяет что данные в хронологическом порядке. Если нет - второй коннект получит ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 23:33 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЕсли оба миллиарда содержат один commit() в конце - то сначала первый потом второй. То есть полная сериализация: пока одна транзакция не завершилась - вторая не стартует? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 23:44 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov bluestreakЕсли оба миллиарда содержат один commit() в конце - то сначала первый потом второй. То есть полная сериализация: пока одна транзакция не завершилась - вторая не стартует? Если по одной таблице - да. Таблицы разные - заливаются полностью параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 23:53 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton Скорее всего - никак. Это не юзкейс таймсерии.... Не угадал. В базе даже специальное понятие ASOF JOIN ввели. В общем, интересная штука. Если реально работает и к ней приделать удобную возможность DB LInk к "обычным" базам (Oracle), то в целом можно придумать более-менее осмысленные применения "в быту". Начина от бухгалтерии и биллинга ЖКХ. Использовать в качестве основной базы данных никто не будет, но почему бы не использовать отдельно для работы/анализа/расчетов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 00:19 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЕсли по одной таблице - да. И если первый клиент впал в кому или тихо скончался от электрической недостаточности на 100500-й записи из миллиона, вторая транзакция будет ждать... сколько? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 00:34 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov bluestreakЕсли по одной таблице - да. И если первый клиент впал в кому или тихо скончался от электрической недостаточности на 100500-й записи из миллиона, вторая транзакция будет ждать... сколько? Это кстати интересно. Сейчас транзакция откатывается если сокет отконнектился. Если впал в кому, то есть idle timeout, т.е. сервер закроет сокет со своей стороны и транзакцию с миллиардом откатит. Можно ещё ввести ограничения снизу на скорость заливки и длину открытой транзакции - это по запросам если необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 00:45 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakЕсли timestamp определён, то база проверяет что данные в хронологическом порядке. То есть если мы вставили в такую таблицу (2019-12-05, 666), а потом решили, что это ошибка, то изменить вставить (2019-12-05, 777) уже не получится? Надо будет убить всю таблицу, а потом вставить её заново, с правильными данными. bluestreakТаблицы разные - заливаются полностью параллельно. Я так понимаю, ключи и прочая ссылочная целостность отсутствует как класс? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 01:27 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Скорее всего - никак. Это не юзкейс таймсерии.... Не угадал. В базе даже специальное понятие ASOF JOIN ввели. В общем, интересная штука. Если реально работает и к ней приделать удобную возможность DB LInk к "обычным" базам (Oracle), то в целом можно придумать более-менее осмысленные применения "в быту". Начина от бухгалтерии и биллинга ЖКХ. Использовать в качестве основной базы данных никто не будет, но почему бы не использовать отдельно для работы/анализа/расчетов Не могу найти ничего внятного по AS OF. Мы используем этот термин на производстве но смысл его несколько другой. Больше относится би-темпоральному снимку мета-данных по состоянию на сейчас. Можете привести пример ASOF JOIN. Обычно JOIN делают по ключам. В таймсериях ключи - обычно timestamp. Достаточно уникальный и вещественный ключ. Каким образом мы можем его джойнить и какой физический смысл на выходе мы получим. Прошу вас не кидайте мне ссылки в литературу. У меня ее полно. Мне интересена ваша интерпретация этого смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 01:40 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov То есть если мы вставили в такую таблицу (2019-12-05, 666), а потом решили, что это ошибка, то изменить вставить (2019-12-05, 777) уже не получится? Надо будет убить всю таблицу, а потом вставить её заново, с правильными данными. Если на ваш вопрос ответить коротко, то — получится, потому как время должно быть больше или равно... Убивать не надо. Если по длиннее, то мы говорим о разных вещах. В OLTP системах когда данные вводятся в рукопашную, происходят ой и ай, время может быть просто системным а ключ записи органическим. В таких условиях поменять все ой и ай можно будет без проблем. Повторяйте ключ при вставке, задавайте новые значения полей, время шагает вперёд и все вставляется. Dimitry Sibiryakov Я так понимаю, ключи и прочая ссылочная целостность отсутствует как класс? Понимаете правильно. Здесь проблема идеологического характера. Отторгать данные это плохая идея. Данные нужно собирать все что идут. Даже плохие данные могут быть полезно использованы. Я придерживаюсь мнения что ссылочная целостность с субд — устаревшее понятие. По этому в QuestDB отсутствует как класс ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 02:54 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, Представьте что у вас есть таймсерия событий которые побуждают механизм, организм, устройство к действию. Так же у вас есть таймсерия действий этого устройства. As of join позволяет соединить в одну запись действия устройства с событиями которые непосредственно предшествовали этим действиям. Финансовый пример это котировки — события; и сделки — действия ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 03:00 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, 4. Не очень понятно, как работают(должны работать) JOIN двух и более time series. Вообще, отличает ли СУБД join'ы: 1) time series с не time series (пример из туториала соединение справочника датчиков и измерений) 2) join time series с time series одинаковой размерности 3) join двух time series с разными размерностями, приводить размерность одних тайм серий к другим Я надеюсь с join достаточно было ссылки на доку? Сообщите если нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 03:13 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Например есть тайм серия минутных баров, есть времени работы биржи, есть сплит акций Мы хотим выбрать данные за 2015 год и получить максимальную цену на каждый день, на момент закрытия биржи, при этом с учетом сплита который произошел 01.03.2015 9:00. (т.е. цену до 01.03.2015 9:00 нужно умножить в два раза) Как должны выглядеть таблицы и какой должен быть запрос? Если цены top of book, то таблица могла бы выглядеть так: Код: plaintext 1.
Если мы предположим что QuestDB может использовать произвольный календарь, то запрос был бы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Но поскольку calendar(‘my fancy calendar’, ‘1d’) пока нет, замените на 1d ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 03:42 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakПо этому в QuestDB отсутствует как класс Вот об этом я и говорил: полное отсутствие фич, которые делают другие СУБД сложными, упрощает разработку узкоспециализированного решения до тривиальности. Опять же к вопросу о транзакциях: одна делает insert into a, inset into b, commit; вторая делает insert into b, insert into a, commit; получаем полный дедлок?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 16:39 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak mayton, Представьте что у вас есть таймсерия событий которые побуждают механизм, организм, устройство к действию. Так же у вас есть таймсерия действий этого устройства. As of join позволяет соединить в одну запись действия устройства с событиями которые непосредственно предшествовали этим действиям. Финансовый пример это котировки — события; и сделки — действия На уровне определений я все равно не могу себе представить событие и действие как сущность. Можете расписать какие поля есть в event, и action? И на основании какого алгоритма одно из них переходит в другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 17:41 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov bluestreakПо этому в QuestDB отсутствует как класс Вот об этом я и говорил: полное отсутствие фич, которые делают другие СУБД сложными, упрощает разработку узкоспециализированного решения до тривиальности. Опять же к вопросу о транзакциях: одна делает insert into a, inset into b, commit; вторая делает insert into b, insert into a, commit; получаем полный дедлок?.. Фичи по проверке целостности данных заключаются в построении деревьев и беганьем по ним туда сюда. Если говорить о сложности то я согласен, традиционные базы O(log n) как минимум по вставкам, QuestDB — O(1) По поводу дедлок — блокировки, включая бесконечные, в questdb тоже отсутствуют как класс. Ваш пример вернёт ошибку даже без тайм-аута. Вы сделали вывод о дедлоке потому что я сказал транзакции по одной таблице сериализованы? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 18:11 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, Давайте попробую, например событие это цена инструмента на рынке: Код: plaintext 1. 2. 3. 4. 5. 6.
У вас есть электронная система которая формирует свои цены на основе рыночных. Задача такой системы не зевать и менять цены как только рынок изменился. Например ваша система опубликовала: Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4. 5.
Т.е на момент публикации цены вашей системой мы получаем самую свежую котировку (15:04) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 18:46 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak, а зачем нужно поле символа? Мы такое - нормализуем к названию сущности. типа Код: sql 1. 2. 3. 4. 5.
Под каждый символ - своя таймсерия. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 19:29 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreakтрадиционные базы O(log n) как минимум по вставкам, QuestDB — O(1) Традиционные базы способны быть O(log N) и по выборкам, а QuestDB - фиксированное O(N). bluestreakВы сделали вывод о дедлоке потому что я сказал транзакции по одной таблице сериализованы? Да. Но какую именно ошибку получит транзакция, пытающаяся вставить данные в две разные таблицы и почему? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 20:20 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, Это как удобно, некоторые организации хранят все символы в одной таблице. Суть джоина не меняется (‘on’ не нужен в вашем случае) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 20:42 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, QuestDB поддерживает индексы и оптимизатор вырулит правильный план если они есть... Логика работы с таблицами такая: есть один writer и неограниченное количество reader‘ов, мы их оставим в покое, они никогда не блокируются. Контекст, который получает writer для транзакции от engine хранит его у себя в списке, если контексту нужен ещё один writer то он опять лезет в engine с запросом. Engine может сказать «writer занят», в этом случае у контекста есть два варианта. Первый — жаловаться пользователю, второй — ждать. Ожидание 1. Хотим добавить имя writer в список ожидания 2. Проверим что все writers которые у контекста уже есть не находятся в списке ожидания. 3. Не находятся — добавим наш writer в этот список 4. Какой-то «наш» writer в списке ожидания — ошибка, откат всего на свете ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 21:55 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
Допустим у меня были такие таблички Код: sql 1. 2. 3. 4. 5. 6.
Код: sql 1. 2. 3. 4.
Time, qtime - вещественная величина. Она может быть любой. Timestamp например может фиксировать время прохождения IP пакета через сетевой интерфейс с точностью до микросекунд. Как это джойнить? Какова вероятность что time/qtime совпадёт? Или там должно быть искусственное округление? Преобразование ключа?? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 23:06 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
mayton, В отличий от реляционных join “asof” не использует равенство «=« для объединения. Совпадать ни количество записей ни значения времени в обоих таблицах не должно (необязательно). Так же нет округления времени. Представьте что мы движемся по таблице corepriceUSDCNY в направлении возрастания времени и присоединяем первую запись из quotesUSDCNY время которой строго меньше времени текущей записи из corepriceUSDCNY ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2019, 23:58 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
bluestreak В отличий от реляционных join “asof” не использует равенство «=« для объединения Похоже, для Вас будет новостью, что реляционные джойны тоже не используют. И внезапно окажется, что писать новую базу было совершенно незачем ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2019, 13:45 |
|
QuestDB - новая СУБД для хранения time series данных
|
|||
---|---|---|---|
#18+
softwarer Похоже, для Вас будет новостью, что реляционные джойны тоже не используют. И внезапно окажется, что писать новую базу было совершенно незачем Вы разрушили мой стеклянный мир :( приведите пример пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2019, 14:18 |
|
|
start [/forum/search_topic.php?author=kyta12&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 10417ms |
total: | 10582ms |
0 / 0 |