|
VoltDB - первые впечатления
|
|||
---|---|---|---|
#18+
В общем выдалось тут плотно покрутить эту штуку в разных конфигурациях (2-4-8 нод) и на разных нагрузках. С краш-тестами и т.д. Впечатления двоякие остались.. Основная идея в том, что данные разбиты (партиционированы) по узлам кластера + по сайтам на каждом узле (зависит от кол-ва ядер). Для взаимодействия с данными (select, insert, update, delete) необходимо писать процедуры, которые в идеале д.б. партиционированы по тому же ключу, что и данные (single-partitioned - SP). (Необходимо отметить, что процедура атомарна, она либо выполняется вся, либо откатываются все транзакции внутри процедуры). Тогда в каждой партиции есть данные и есть свой процессинг, это все обслуживается одним ядром в один момент времени, таким образом никаких блокировок нет, обработка данных в одной партиции серилизована. Это конечно здорово. Второй плюс, что вся база in-memory, поэтому никаких кешей и все, что связано с этим. Опять же плюс в производительности. Ну и в силу своей архитектуры k-safe, когда данные одного узла зеркалируются на соседей, записи снапшотов каждой ноды на диск каждые несколько минут и ведения между снапшотами логов, достигается отказоустойчивость кластера к различного рода инцидентам и обеспечивается целостность данных. Пока все замечательно. А теперь чуть отвлечемся - представим себе болид F1, мчящийся по трассе, быстрый мощный, надежный (в последнее время). Это вот Воль в своей стихии. А что будет если на этом болиде выехать в город? Уже не так быстро.. А поехать на дачу? А это совсем уже никак.. вот и Вольт такой же.. на первой же задаче возникла необходимость обеспечения атомарности нескольких последовательных транзакций, которые не могут быть партиционированы по одному ключу (в терминах Вольта multi-partitioned - MP), и в этом случае такие процедуры выполняются одновременно на всех ядрах кластера параллельно, что в силу архитектуры ставит весь кластер на паузу. Если эту же процедуру разложить на последовательность SP процедур то разница в производительности получается 100-1000Х!!! В наших тестах мы получили 2M+ TPS на SP процедурах и 20K на МР процедурах. Такая разница подтверждена инженерами Вольта. (сейчас в роадмапе есть наработки, чтобы ускорить не SP процедуры, будем подождать, но пока не понятно когда). Далее, есть некий "стандартный SQL", но выполнение из консоли или откуда еще непосредственно SQL команд приводит к тому, что все это выполняется в МР режиме, т.е. подключиться консолькой к БД и сделать что-то а-ля select top N равносильно нажать на паузу, это справедливо абсолютно для любой SQL команды. Но справедливости ради даже аналитические запросы работают очень быстро, джойны тоже, но не дай бог выйти за постулат SP, как только вы уходите в MP - это полный треш, непартиционированные джойны и другие запросы МР просто вешают кластер, а точнее ставят его на паузу. В общем резюме - штука прикольная, очень резвая, но пока не разберутся с транзакционной целостностью на произвольной последовательности операций, а вернее с производительностью такой схемы, говорить о чем-то серьезном пока еще рано. Очень узкий рынок есть, но не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2015, 00:47 |
|
VoltDB - первые впечатления
|
|||
---|---|---|---|
#18+
Vovaka, как я понял только для "узких" задач разогнать можно, очень аккуратно используя специфику данной СУБД. По вашему мнению может ли эта система быть применена для ERP как замена MSSQL или Oracle? ERP - включает 2К+ таблиц и соотвественно хаотичные запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 17:31 |
|
VoltDB - первые впечатления
|
|||
---|---|---|---|
#18+
товарищъVovaka, как я понял только для "узких" задач разогнать можно, очень аккуратно используя специфику данной СУБД. По вашему мнению может ли эта система быть применена для ERP как замена MSSQL или Oracle? ERP - включает 2К+ таблиц и соотвественно хаотичные запросы У Вольта проблема с транзакциями. Если в одной транзакции идут изменения данных разных таблиц, то возникают значительные проблемы по производительности. У Вольта изменение данных идет через хранимую процедуру (ХП). Все, что выполняется внутри нее, выполняется является транзакцией. Процедура компилирует DML, оптимизируя выполнение по первичному ключу, если внутри ХП применяется однотипный DML (insert, update или delete) к одной таблице. Если же внутри ХП разные DML или они не по первичному ключу или к разным таблицам, то Вольт выполняет запрос без оптимизации на блокировках ядер процессора, так как сама его архитектура заточена на то, что каждый ключ записи можно сегментировать на ноду и ее ядро, чтобы параллелить работу с записями таблицы. Ну а блокировки это большие тормоза. Таким образом, если требуется передать массив записей в ХП и по ним в цикле сделать однотипный апдейт, то Вольт это сделает с космической скоростью. А если нужно сохранить одной транзакцией мастер запись + массив ее детайл записей, то ХП отработает медленно, вставляя мастер и потом в цикле детайл. Ну а ERP это не только мастер-детайл, это еще например массовые расчеты остатков и т.д. В общем мы по разному рассматривали этот затык, общались с инженерами Вольта по поводу оптимизации транзакций, но решения оптимального не нашли, хотя конечно обходные пути разные увидели. А так этот сервер идеален для сбора и анализа в реалтайме счетчиков, статистики, автоматизации управлению устройствами и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 11:43 |
|
|
start [/forum/topic.php?fid=56&msg=39132099&tid=2015119]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 262ms |
0 / 0 |