|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Эта группа создана для обсуждения различных аспектов VoltDB - реализации исследовательского проекта H-Store, разработанного совместными усилиями группы ведущих ученых - во главе с доктором Майклом Стоунбрейкером - на базе Массачусетского Технологического Института, Йельского Университета и Университета Брауна. С точки зрения решаемых задач, VoltDB представляет собой распределенную OLTP СУБД, базирующуюся на shared-nothing архитектуре и разработанную для систем сбора, хранения и обработки данных в условиях реального времени и требующих экстремальной транзакционной нагрузки с полной ACID поддержкой. VoltDB находится в разработке с 2009 года и является продуктом, который в настоящее время (по состоянию на начало 2014 года) используется более чем в 200-х производственных системах, разработанных и внедренных различными пользователями в Соединенных Штатах, Великобритании, Японии, Австралии, Польше и других странах. Начиная с 2010 года, на sql.ru было создано несколько групп, затрагивающими тему VoltDB - все разными людьми, в разное время и на разные темы. Настоящая группа создана с целью объединения и систематизации наиболее интересных из предыдущих дискуссий, вопросов и комментариев, а также создания форума для обсуждений новых тем, связанных с архитектурой, функциональностью, разработкой и эксплуатацией Систем Управления Баз Данных VoltDB и их приложений-клиентов. VoltDB Community Edition доступна в открытом доступе в соответствии с условиями лицензии AGPL: http://voltdb.com/download Документация: http://voltdb.com/download/documentation/ Исходный код: https://github.com/VoltDB/voltdb AGPL лицензия: https://github.com/VoltDB/voltdb/blob/master/LICENSE ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 00:54 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Просто ссылка на предыдущие дискуссии: http://www.sql.ru/forum/762473-2/voltdb-neskolko-millionov-tranzakciy-v-sekundu http://www.sql.ru/forum/762124/predstavlena-novaya-otkrytaya-subd-voltdb ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 01:20 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Вопрос который был недавно был получен в одной из предыдущих групп ( http://www.sql.ru/forum/762473-8/voltdb-neskolko-millionov-tranzakciy-v-sekundu) ]VoltDB, 1. Можно ли узнать технические детали о протоколах обеспечения транзакционности? В работе 2007 года пишется: H-Store Transaction and Schema CharacteristicsWe use single-sited, sterile, two-phase, and strong two-phase properties in the H-Store algorithms, which follow. В частности, интересует, как определяется тип транзакции и как это влияет на допустимые операции в рамках этой транзакции. Было бы здорово увидеть схему процесса обмена сообщениями для каждого типа транзакций. И услышать, каким образом достигается, что все транзакции в системе становятся очень короткими. 2. Как в VoltDB решаются проблемы изоляции транзакций? 3. Каким образом гарантируется, что на всех узлах HA-системы лежат одни и те же данные? В случае систем долговременного хранения это реазличного рода checksum, но этого также бывает недостаточно и о том, что данные в mirror-блоке битые мы можем узнать только когда вылетел primary блок. Традиционно с этим борются резервным копированием и созданием standby. Как с этим у VoltDB? 4. Какие ограничения целостности поддерживает система и какими механизмами гарантируется их соблюдение? 5. Какие механизмы секционирования возможны и насколько они совместимы друг с другом? 6. Как происходит увеличение размера кластера в 2 раза? Если это возможно вообще. 7. Возможна ли репликация средствами БД в пределах нескольких ДЦ по WAN? 8. В k-safety какое максимально возможное k и какова политика размещения копий? P.S. Я заранее извиняюсь, вопросов множество, понимаю, что на всё ответить нельзя, но если получится - будет очень здорово. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 01:37 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDBВопрос который был недавно был получен в одной из предыдущих групп ( http://www.sql.ru/forum/762473-8/voltdb-neskolko-millionov-tranzakciy-v-sekundu) ]VoltDB, 1. Можно ли узнать технические детали о протоколах обеспечения транзакционности? В работе 2007 года пишется: H-Store Transaction and Schema CharacteristicsWe use single-sited, sterile, two-phase, and strong two-phase properties in the H-Store algorithms, which follow. В частности, интересует, как определяется тип транзакции и как это влияет на допустимые операции в рамках этой транзакции. Было бы здорово увидеть схему процесса обмена сообщениями для каждого типа транзакций. И услышать, каким образом достигается, что все транзакции в системе становятся очень короткими. 2. Как в VoltDB решаются проблемы изоляции транзакций? 3. Каким образом гарантируется, что на всех узлах HA-системы лежат одни и те же данные? В случае систем долговременного хранения это реазличного рода checksum, но этого также бывает недостаточно и о том, что данные в mirror-блоке битые мы можем узнать только когда вылетел primary блок. Традиционно с этим борются резервным копированием и созданием standby. Как с этим у VoltDB? 4. Какие ограничения целостности поддерживает система и какими механизмами гарантируется их соблюдение? 5. Какие механизмы секционирования возможны и насколько они совместимы друг с другом? 6. Как происходит увеличение размера кластера в 2 раза? Если это возможно вообще. 7. Возможна ли репликация средствами БД в пределах нескольких ДЦ по WAN? 8. В k-safety какое максимально возможное k и какова политика размещения копий? P.S. Я заранее извиняюсь, вопросов множество, понимаю, что на всё ответить нельзя, но если получится - будет очень здорово. Да, вопросов не мало; да такие, что в двух словах и не ответить... :) Кстати, многие из них уже обсуждались в предыдущих группах и комментариях. Думаю, неплохо было бы наиболее часто встречающиеся, близкие по сути, вопросы сгруппировать и опубликовать (или перенести из предыдущих групп) детальный ответ. Давайте я сразу и начну... (См. следующий комментарий) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 03:10 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
К тезису о том, что существующая архитектура традиционных реляционных СУБД устарела. Наиболее рапрстраненная на сегодняшний день архитектура реляционных СУБД корнями уходит в разработанную в 70-е и начале 80-х годах архитектуру System R. Как и любая другая архитектура, System R пыталась найти компромис между техническими требованиями к системе и ее стоимостью. Основными проблемами которые System R должна была решить на то время являлись дорогая, но маленькая оперативная память, малопроизводительные процессоры и ненадежные медленные хранилища с низкой пропускной способностью. Для того чтобы решить задачи присущие типичной СУБД на системе, лимитированными такими технологическими факторами, да еще и при условии необходимости минимизиции стоимости такой системы, System R архитектура предложила такие решения, как: буфер памяти (с соотватствующим менеджером) для оптимизации storage IO, одновременное использование ресурсов для более эффективного использования процессора (и, соответственно, менеджемент конкурентного доступа к ресурсу путем блокировок и защелок), усложненный механизи обеспечения надежности (undo/redo и транзакционный лог). Предложенная архитектура на тот момент времени и с учетом технологических и бизнесс реалий, являлясь оптимальной и была адаптирована в той или иной форме многими разработчиками широко адаптированых СУБД т.к Oracle, SQL Server и DB2. Дальнейшая разработка и усовершенствование базовой современной СУБД архитектуры заняла много лет и огромное количество человеческих и финансовых ресурсов. Этот поистине титанический труд, занявший у СУБД производителей три последующих десятилетия и потребовавший миллиардных инвестиций. Результат - современая кодовая база крупнейших производителей СУБД составляет миллионы линий компьютерного кода. Многие пользователи традиционных СУБД отмечают отсутствие фундаментальных инноваций в архитектуре со стороны производителей. Причина очень проста. Крупные корпорации-лидеры в разработке СУБД слишком велики и нединамичны. К них слишком много багажа для того чтобы иметь возможность позволить себе коренные изменения в кодовую базу. Многие согласятся, что писать код системы с чистой страницы (то что , кстати, делают многие молодые компании, не обремененные багажем) гораздо более эффективнее чем адаптировать миллионы линий существующего кода к новой архитектуре, отвечающей современным требованиям. Кроме того, ведь такая адаптация, по сути еще означала бы необходимость обновлять существающие системы у заказчиков или поддерживать две линии систем, новую архитектуру и старую. А это ведь все недешево... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 03:52 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
В чем заключаются “узкие места” существующей архитектуры? В 2008 году группа исследователей из MIT, Yale и HP Labs (кстати, под руководством академиков, которые активно участвовали в разработке System R архитектуры в 70-80-ые годы) разобрали типичную CУБД на части и померяли, а откуда, собственно, происходят издержки в продуктивности. Результат получился достаточно интересным: - около 35% времени исполняется код связанный с менеджированием buffer pool - около 30% это код связанный с локировками и задвижками для менеджирования конкурентного доступа к ресурсам - около 30% это код связанный с undo/redo и транзакционным логом ... И только около 5% времени исполняется код, связанный непосредственно с "полезной" работой. Мне кажется, коэффициент полезного действия - так себе, не очень... Можно бы и получше, если с учетом современных реалий в технологиях... Более детальную информацию о проведенных исследования можно найти здесь: Stonebraker et al "OLTP Through the Looking Glass, and What We Found There" http://nms.csail.mit.edu/~stavros/pubs/OLTP_sigmod08.pdf Так же, производная предыдущей работы: "The End of an Architectural Era (It’s Time for a Complete Rewrite)": http://nms.csail.mit.edu/~stavros/pubs/hstore.pdf , а также, множество последующих работ непосредственно на тему дальнейших разработок проекта H-Store: http://hstore.cs.brown.edu ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 03:55 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
О тенденции разделения универсальных СУБД на специализированные Как результат такой тенденции, и существует специализированная OLAP Vertica, разработанная для эффективных аналитических нагрузок и бэтч-загрузок, а также, специализированная OLTP VoltDB, разработанная для эффективной поддержки транзакционной нагрузки в режиме реального времени. Дело в том, что идеальные архитектуры OLTP и OLAP имеют очень разные задачи. Классическая OLAP нагрузка подразумевает большое количество аггрегатных запросов (SUM, AVG, COUNT итд) и, как результат, требует сканнированния большой части таблицы, что, в свою очередь, подразумевает большое количество чтений с диска. Причем, большинству аналитических запросов полная строка данных и не нужна. Колоночное хранилище, позволяет запросу читать отдельные колонки данных. Кроме того, данные, читаемые по-колоночно, отлично компрессируются. По этим причинам, колоночное хранилище прекрасно подходит для оптимизации решения OLAP задач. OLTP, в свою очередь, отличается большим количеством точечных запросов, находящих в таблице запись (строку) данных, обязательно включающую каждую колонку. Соответственно, колоночное хранилище уступает построчному для оптимизации OLTP нагрузки. Таким образом, возникает противоречие: если система должна быть гибридной OLTP/OLAP, оптимизировать ее нужно было бы методами хранения данных, противоречащими друг другу. Но если разделить OLTP и OLAP, тогда каждая из-задач может быть оптимизирована отдельно и без последствий для другой задачи: OLTP с построчным хранилищем и OLAP с колоночным. Своего рода, случай когда 1+1>2 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 04:12 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Ответ на группу вопросов, касающихся защиты данных во время плановых или аварийных остановок кластера: В зависимости от требований к надежности системы, существует несколько видов и, соответственно, уровней защиты от потери данных в аварийных ситуациях. Более сложные DR схемы, обычно применяемые в критических и особо важных системах обычно реплицируют данные во вторичный дата центр - это покрывает риск, связанный с "отрубили электричество" в дата центре (как и от любых других катастроф, приводящих к полной неработоспособности или потере инфраструктуры, т.к. природные бедствия итд). Конфигурация такой репликации может быть или синхронной, или асинхронной - в зависимости от требований к надежности приложения и допустимого общего замедления системы, вызванного достижением такой надежности. Этот уровень предохраняет данные при авариях на уровне дата центра. Следующий, более низкий уровень защиты - это "reverse caching", те периодические снэпшоты (своего рода incremental backup) базы на локальные диски каждого нода в кластере. Обычно, с периодичностью до часа, во многих системах - каждые 10 -15 минут. Идея в том, что если "отрубили электричество", то обычно у системы есть хоть какое-то гарантированной время для продолжения работы на резервном питании с UPS-батарей и, соответственно, перейти в аварийный режим и сохранить данные из памяти на диск. Этот уровень защиты предохраняет от аварии на уровне кластера. Для защиты от аварий на уровне одного или нескольких нодов, обычно применяется K-safety кластера: транзакция не коммитнется до тех пор, пока копия изменения не гарантирована на другом ноде в кластере, то если любой нод падает, данные могут быть восстановлены из других нодов (концептуально и функционально напаминает Redundant. Array of Inexpensive Drives, но имплементация другая, те сравнение с RAID 5 в было бы не совсем корректно). Такая защита, конечно, предполагает дополнительную задержку, но при скоростях передачи данных на современных сетях и с учетом, что копия создается только в памяти другого нода (а не на диске), такой подход выглядит как вполне разумный компромисс между высокой надежностью и высокой производительностью системы. K-safety может быть сконфигурирована с К>1, те можно создавать дополнительные копии, и таким образов выживать потерю более чем одного нода. Чем больше К, тем надежнее (но медленнее) система. Фейловер полностью автоматический, равно как и восстановление и обновление данных в случае возврата остановленного нода, и никоем образом не отражается на работоспособность подключенных клиентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 04:19 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDB, Интерсно узнать архитектуру исполнения кода пользовательских процедур (хранимок ) В частности 1) Код выполнятся на случайной ноде или на всех 2) Можно ли || код. 3) Есть ди интерфейсы обмена данными между хранимками ? 4) Как насчет Джобов ? Тригеров ? 5) Как решатеся проблема замирания кода из-за работы Java GC ? 6) Есть ли огрничения по внешнему взаимодествию в коде хранимок -- у Вас свой движок JVM или испльзуется что-то "стандартное" -- можно ли дергать Web Сервисы из кода ? 7) Есть ли понятие "табличные" функции ? Общие вопросы по администрированию 1) Какие концепции на примере Oracle вы реализовали - Таблицы в табличных пространствах и в файлах данных ? 2) Что такое База данных ? это схема пользователя ? 3) Группы - Роли - Пользователи ? 4) Аудит измениний данных и метаданных ? 5) Как насчет полнной поддержки SOX ? 6) Есть ли workflow по разработке и накатыванию изменений ? (концепция LCM ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 11:51 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDB Ответ на группу вопросов, касающихся защиты данных во время плановых или аварийных остановок кластера: В зависимости от требований к надежности системы, существует несколько видов и, соответственно, уровней защиты от потери данных в аварийных ситуациях. Более сложные DR схемы, обычно применяемые в критических и особо важных системах обычно реплицируют данные во вторичный дата центр - это покрывает риск, связанный с "отрубили электричество" в дата центре (как и от любых других катастроф, приводящих к полной неработоспособности или потере инфраструктуры, т.к. природные бедствия итд). Конфигурация такой репликации может быть или синхронной, или асинхронной - в зависимости от требований к надежности приложения и допустимого общего замедления системы, вызванного достижением такой надежности. Этот уровень предохраняет данные при авариях на уровне дата центра. Следующий, более низкий уровень защиты - это "reverse caching", те периодические снэпшоты (своего рода incremental backup) базы на локальные диски каждого нода в кластере. Обычно, с периодичностью до часа, во многих системах - каждые 10 -15 минут. Идея в том, что если "отрубили электричество", то обычно у системы есть хоть какое-то гарантированной время для продолжения работы на резервном питании с UPS-батарей и, соответственно, перейти в аварийный режим и сохранить данные из памяти на диск. Этот уровень защиты предохраняет от аварии на уровне кластера. Для защиты от аварий на уровне одного или нескольких нодов, обычно применяется K-safety кластера: транзакция не коммитнется до тех пор, пока копия изменения не гарантирована на другом ноде в кластере, то если любой нод падает, данные могут быть восстановлены из других нодов (концептуально и функционально напаминает Redundant. Array of Inexpensive Drives, но имплементация другая, те сравнение с RAID 5 в было бы не совсем корректно). Такая защита, конечно, предполагает дополнительную задержку, но при скоростях передачи данных на современных сетях и с учетом, что копия создается только в памяти другого нода (а не на диске), такой подход выглядит как вполне разумный компромисс между высокой надежностью и высокой производительностью системы. K-safety может быть сконфигурирована с К>1, те можно создавать дополнительные копии, и таким образов выживать потерю более чем одного нода. Чем больше К, тем надежнее (но медленнее) система. Фейловер полностью автоматический, равно как и восстановление и обновление данных в случае возврата остановленного нода, и никоем образом не отражается на работоспособность подключенных клиентов. Это общие подходы, а технические детали как узнать? Отказались от механизма redo/undo, а что взамен? Как сделать бекап 100 машин кластера? Ведь нам нужна согласованная копия. Да, можно остановить весь кластер, но не забываем, у нас OLTP, а значит длительный простой невозможен. Как реплицировать данные в другой ДЦ? В Vertica это решается дублированием поставки даных, а что здесь? K>1 - хорошо, а как узнать, что все mirror-копии валидны? Данные в памяти тоже могут портиться, значит, неплохо было бы периодически проверять, все ли копии у нас согласуются с оригиналом. Ну или проверять checksum или что там у вас вместо него. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 13:51 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
xifos Отказались от механизма redo/undo, а что взамен? Как сделать бекап 100 машин кластера? Ведь нам нужна согласованная копия. Да, можно остановить весь кластер, но не забываем, у нас OLTP, а значит длительный простой невозможен. От механизма redo не отказались. Они между снапшотами пишут логи, при этом могут писать в синхронном и асинхронном режиме. При этом, как я понял, политика записи логов и снятия снапшотов на разных нодах кластера может быть разной, что достаточно интересно, т.к. чаще всего разные данные имеют разные требования к durability. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 14:56 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Раз обсуждение переползло сюда, сдублирую вопрос недельной давности. iv_an_ruSleep(1)VoltDB, Быстрее в 45 раз + Асид обьясняется архитектурой где нужно МИНИМУМ два независимых сервера зеркалирующих друг друга + независимое бесперебойное питание для каждого из них. Если один вырубается - второй успевает сохранится. По своей сути это ИнМемори хранилище. Если у вас один сервер, то никаких в 45 раз конечно нет.Интересно было бы сравнить и "в другую сторону": не односерверный VoltDB с другой односерверной СУБД, а VoltDB "стоящий на трёх китах" с традиционной кластерной СУБД, в которой разрешили отложенную запись (и сделали классический скриптик для NUT: нода при пропадании сетевого питания или связи с любой нодой немедленно начинает чекпойнт, на время проблемы делает чекпойнты частыми, в результате при battery low система укладывается весьма быстро.) Кстати, что за транзакции были такие толстые, что "СУБД VoltDB обработала 53 тыс. транзакций в секунду на одном сервере" пишется с гордостью? Сама-то голая цифра "не о чём", году в 2000-м Orri Erling на одном комодном ящике показывал 4 процесса, каждый из которых проводил ~10000 TPC-C-подобных транзакций и реплицировал их на 3 других процесса, итого ящик успевал окучить примерно 4 * (10000 + 30000) = 160000 транзакций и между прочим честно слить их на диски безо всяких батареек. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 18:19 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
[quot iv_an_ru]Раз обсуждение переползло сюда, сдублирую вопрос недельной давности. iv_an_ruпропущено... Интересно было бы сравнить и "в другую сторону": не односерверный VoltDB с другой односерверной СУБД, а VoltDB "стоящий на трёх китах" с традиционной кластерной СУБД... Основные тесты VoltDB базировались именно на мульт-узловых системах, включая вариации ТСР. iv_an_ru... в которой разрешили отложенную запись (и сделали классический скриптик для NUT: нода при пропадании сетевого питания или связи с любой нодой немедленно начинает чекпойнт, на время проблемы делает чекпойнты частыми, в результате при battery low система укладывается весьма быстро.) Да, интересно было-бы попробовать. Мы такой эксперимент не делали iv_an_ruКстати, что за транзакции были такие толстые, что "СУБД VoltDB обработала 53 тыс. транзакций в секунду на одном сервере" пишется с гордостью? Сама-то голая цифра "не о чём", году в 2000-м Orri Erling на одном комодном ящике показывал 4 процесса, каждый из которых проводил ~10000 TPC-C-подобных транзакций и реплицировал их на 3 других процесса, итого ящик успевал окучить примерно 4 * (10000 + 30000) = 160000 транзакций и между прочим честно слить их на диски безо всяких батареек. Мне кажется, цифра в 53 тыс. транзакций быля взята из результатов тестов, проведенных на одной из самых первых версий (наверное, где-то в 2009-2010 годах). С тех пор, как говорится, много воды утекло :) У нас есть документация по тому эксперименту. Если не ошибаюсь, это была вариация ТРС-С, и также сравнение с MySQL и другой широко распрастраненной СУБД. Если кого-нибудь интересует, пожалуйста, сообщите - с удовольствием поделюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 19:57 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
xifos...Это общие подходы, а технические детали как узнать?... Очень многие вопросы покрыты в документации здесь: http://voltdb.com/dev-center/documentation/ Если что-то не покрыто или нужно копнуть глубже, мы постараемся ответить на зтом форуме (пожалуйста заметьте, что ответы могут занять какое-то время т.к вопросов много). Ну а самый лучший вариант, конечно, это загрузить open source версию и попробовать... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 20:07 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
Об издержках менеджера локировок в традиционной СУБД архитектуре Традиционная client-server модель не запрещает нескольким клиентам одновременно посылать запросы, которые могут конкурировать за доступ к данным. Это диктует необходимость сложного и дорогого (в смысле использования CPU циклов) механизма для управления доступом к данным между конкурирующими клиентами (inter-process overhead). Например. в МССКЛ, лок-менеджер должен уметь управлять одновременно громадным количеством Shared, Intended, Exclusive локами на уровне экстента, страницы, таблицы и строки для того, что бы гарантировать ACID - ведь это сложно-то как! [1] И цена у такого менеджера, выраженная в CPU циклах и занятых байтах памяти, соответственно, очень высокая. Да и разработка такого мэнеджера дело долгое и сложное. Например, у МС разработка уже 15 лет продолжается [2]. А вот если всю логику убрать на сервер в сохраненную процедуру, да еще и наложить ограничения на client-server модель и сериализировать для клиентов доступ к такой процедуре, тогда управление доступом становится достаточно тривиальным. Кроме того, такой подход, как показывает широкая практика использования хранимок в существующих СУБД, имеет и дополнительные преимущества уменьшения раунд-трипов в сети, возможности компиляции хранимки, удобства обслуживания кода и.т.д [1] Кстати, разработан такой менеджер без учета специфики приложения, т.е пытается покрыть одновременно и OLTP и OLAP нагрузку, т.о еще более усложняя механизм. Действительно, как часто OLTP система делает, к примеру, сканирование большого участка или всей таблицы? Или, другой пример, нужна ли поддержка эксклюзивного по-строчного лока в полностью аналитической системе, в которой большинство времени данные вообще никак не модифицируются, а когда модифицируются, то без особого ущерба можно было бы и всю таблицу локировать? Я, ни в коем случае, не предлагаю начать разрабатывать свой лок-менеджер для каждого приложения. Просто, еще один довод в пользу идеи разделения гибридов на специализированные OLTP и OLAP системы - многие вещи, связанные с управлением конкурентным доступом, станут гораздо проще и эффективнее. А если бы иметь какой-нибудь domain specific language высокого уровня, который бы позволял легко и удобно программировать конкретную локировку оптимальную для конкретного приложения... :) [2] Я, для примера, внедрение по-строчной локировки в версии 7.0 за точку отсчета взял ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 20:14 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDBОсновные тесты VoltDB базировались именно на мульт-узловых системах, включая вариации ТСР.Бывает TCP и TCP. Например, некоторые мамки идут с 4 10GbE на борту, и в кластере очень удобно поставить 4 свича с полной пропускной способностью в матрице у каждого свича, прицепить каждый ящик ко всем свичам и при наличии поддержки в ядре СУБД получить "инфинибанд для бедных" --- 40 гигабит с любого на любой ящик. Латентность, конечно, никуда не девается, но на OLAP задачах удавалось получать порядка 70% от производительности того же кластера с недорогими мелланоксовскими картами. VoltDB сможет заюзать все 4 карты, распараллеливая потоки? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 20:19 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
iv_an_ruVoltDBОсновные тесты VoltDB базировались именно на мульт-узловых системах, включая вариации ТСР.Бывает TCP и TCP. Например, некоторые мамки идут с 4 10GbE на борту, и в кластере очень удобно поставить 4 свича с полной пропускной способностью в матрице у каждого свича, прицепить каждый ящик ко всем свичам и при наличии поддержки в ядре СУБД получить "инфинибанд для бедных" --- 40 гигабит с любого на любой ящик. Латентность, конечно, никуда не девается, но на OLAP задачах удавалось получать порядка 70% от производительности того же кластера с недорогими мелланоксовскими картами. VoltDB сможет заюзать все 4 карты, распараллеливая потоки? Извините, это была опечатка :) Имелось ввиду, не ТСР, а ТРС (Transaction Processing Council) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 20:27 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDBА если бы иметь какой-нибудь domain specific language высокого уровня, который бы позволял легко и удобно программировать конкретную локировку оптимальную для конкретного приложения... :)Virtuoso/PL ? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 20:42 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
[quot iv_an_ru]VoltDB...VoltDB сможет заюзать все 4 карты, распараллеливая потоки? Я легко могу себе представить, как большой аналитической системе может понадобиться 40Гбт пропускная способность (например, параллельное сканирование супер-большой таблицы, неколлоцированный JOIN или распределенный пересегментация данных в Вертик-кластере[1]), но, мне кажется, в OLTP системах (запросы-то, в основном, точечные и транзакции - сравнительно короткие) такая необходимость может возникнуть гораздо реже, я бы даже рискнул сказать, что почти никогда. Но даже, давайте представим себе, что такая необходимость существует и нам нужно агрегировать 4 интерфейса. Я не сетевой инженер, и могу ошибаться в этом вопросе, но мне кажется, мы бы попытались применить какую нибудь из известных моделей агрегирования, в простейшем случае NIC bonding. Мне кажется, в общем случае, это не VoltDB должен агрегацией заниматься, а или операционная система (в простом варианте) или агрегатор в сетевом интерфейсе (в более сложных случаях). Опять-таки, я себя в этом вопросе не считаю специалистом. [1] - Я сталкивался с мулти-петабайтной Вертикой, в которой 2х10Гбт интерфейс на каждом ноде был просто необходимостью именно по этим причинам ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:04 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
iv_an_ruVoltDBА если бы иметь какой-нибудь domain specific language высокого уровня, который бы позволял легко и удобно программировать конкретную локировку оптимальную для конкретного приложения... :)Virtuoso/PL ? ;) Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знаком ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:09 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDBiv_an_ruпропущено... Virtuoso/PL ? ;) Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знакомТам есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п. В сочетании с возможностью запустить из транзакции пул асинхронных задач, возможностью включать-выключать лог и автокоммит, и --- главное --- возможностью комбинировать упомянутые возможности как попало, получаем разнообразные возможности выстрелить себе не только в ногу, но и в голову. ...зато OLAP на таблицах по 0.5 триллиона записей не вызывает паники :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:24 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
redoxifos Отказались от механизма redo/undo, а что взамен? Как сделать бекап 100 машин кластера? Ведь нам нужна согласованная копия. Да, можно остановить весь кластер, но не забываем, у нас OLTP, а значит длительный простой невозможен. От механизма redo не отказались. Они между снапшотами пишут логи, при этом могут писать в синхронном и асинхронном режиме. При этом, как я понял, политика записи логов и снятия снапшотов на разных нодах кластера может быть разной, что достаточно интересно, т.к. чаще всего разные данные имеют разные требования к durability. Спасибо за комментарий! Это Вы даже так глубоко в недра кода заглянули? :) Очень были бы признательны за мнение - что, в общем, о системе думаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:26 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
iv_an_ruVoltDBпропущено... Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знакомТам есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п. В сочетании с возможностью запустить из транзакции пул асинхронных задач, возможностью включать-выключать лог и автокоммит, и --- главное --- возможностью комбинировать упомянутые возможности как попало, получаем разнообразные возможности выстрелить себе не только в ногу, но и в голову. LOL :) Нужно запомнить... iv_an_ru...зато OLAP на таблицах по 0.5 триллиона записей не вызывает паники :) Ну это конечно, немало... Но, я Вам скажу, я в этом плане Вертику сильно уважаю - несколько триллионов в достаточно широкой таблице с средним ответом на аналитический запрос средней сложности (типа, с правильным суб-запрсом) до одной секунды. Естественно, правильно выложенные и оптимизированные прожекции... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:36 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
VoltDBЯ легко могу себе представить, как большой аналитической системе может понадобиться 40Гбт пропускная способность... в OLTP системах такая необходимость может возникнуть гораздо реже, я бы даже рискнул сказать, что почти никогда.В OLTP большой трафик любит вылезать при восстановлениях после аварий, особенно если кроме накатки местных логов выполняется чтение больших подписок publisher/subscriber replication. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:39 |
|
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
|
|||
---|---|---|---|
#18+
iv_an_ru...Там есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п. Серьезная щтука... Это-ж сколько всяких разностей клиентскому приложению про базу и кластер знать нужно! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2014, 21:42 |
|
|
start [/forum/topic.php?fid=56&msg=38521069&tid=2015180]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 235ms |
total: | 522ms |
0 / 0 |