powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
25 сообщений из 118, страница 1 из 5
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520024
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта группа создана для обсуждения различных аспектов 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
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520036
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520043
Фотография 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. Я заранее извиняюсь, вопросов множество, понимаю, что на всё ответить нельзя, но если получится - будет очень здорово.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520085
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Я заранее извиняюсь, вопросов множество, понимаю, что на всё ответить нельзя, но если получится - будет очень здорово.

Да, вопросов не мало; да такие, что в двух словах и не ответить... :) Кстати, многие из них уже обсуждались в предыдущих группах и комментариях. Думаю, неплохо было бы наиболее часто встречающиеся, близкие по сути, вопросы сгруппировать и опубликовать (или перенести из предыдущих групп) детальный ответ. Давайте я сразу и начну... (См. следующий комментарий)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520105
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тезису о том, что существующая архитектура традиционных реляционных СУБД устарела.

Наиболее рапрстраненная на сегодняшний день архитектура реляционных СУБД корнями уходит в разработанную в 70-е и начале 80-х годах архитектуру System R. Как и любая другая архитектура, System R пыталась найти компромис между техническими требованиями к системе и ее стоимостью. Основными проблемами которые System R должна была решить на то время являлись дорогая, но маленькая оперативная память, малопроизводительные процессоры и ненадежные медленные хранилища с низкой пропускной способностью. Для того чтобы решить задачи присущие типичной СУБД на системе, лимитированными такими технологическими факторами, да еще и при условии необходимости минимизиции стоимости такой системы, System R архитектура предложила такие решения, как:

буфер памяти (с соотватствующим менеджером) для оптимизации storage IO,

одновременное использование ресурсов для более эффективного использования процессора (и, соответственно, менеджемент конкурентного доступа к ресурсу путем блокировок и защелок),

усложненный механизи обеспечения надежности (undo/redo и транзакционный лог).

Предложенная архитектура на тот момент времени и с учетом технологических и бизнесс реалий, являлясь оптимальной и была адаптирована в той или иной форме многими разработчиками широко адаптированых СУБД т.к Oracle, SQL Server и DB2. Дальнейшая разработка и усовершенствование базовой современной СУБД архитектуры заняла много лет и огромное количество человеческих и финансовых ресурсов. Этот поистине титанический труд, занявший у СУБД производителей три последующих десятилетия и потребовавший миллиардных инвестиций. Результат - современая кодовая база крупнейших производителей СУБД составляет миллионы линий компьютерного кода.

Многие пользователи традиционных СУБД отмечают отсутствие фундаментальных инноваций в архитектуре со стороны производителей. Причина очень проста. Крупные корпорации-лидеры в разработке СУБД слишком велики и нединамичны. К них слишком много багажа для того чтобы иметь возможность позволить себе коренные изменения в кодовую базу. Многие согласятся, что писать код системы с чистой страницы (то что , кстати, делают многие молодые компании, не обремененные багажем) гораздо более эффективнее чем адаптировать миллионы линий существующего кода к новой архитектуре, отвечающей современным требованиям. Кроме того, ведь такая адаптация, по сути еще означала бы необходимость обновлять существающие системы у заказчиков или поддерживать две линии систем, новую архитектуру и старую. А это ведь все недешево...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520107
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем заключаются “узкие места” существующей архитектуры?

В 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
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520116
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О тенденции разделения универсальных СУБД на специализированные


Как результат такой тенденции, и существует специализированная OLAP Vertica, разработанная для эффективных аналитических нагрузок и бэтч-загрузок, а также, специализированная OLTP VoltDB, разработанная для эффективной поддержки транзакционной нагрузки в режиме реального времени. Дело в том, что идеальные архитектуры OLTP и OLAP имеют очень разные задачи.

Классическая OLAP нагрузка подразумевает большое количество аггрегатных запросов (SUM, AVG, COUNT итд) и, как результат, требует сканнированния большой части таблицы, что, в свою очередь, подразумевает большое количество чтений с диска. Причем, большинству аналитических запросов полная строка данных и не нужна. Колоночное хранилище, позволяет запросу читать отдельные колонки данных. Кроме того, данные, читаемые по-колоночно, отлично компрессируются. По этим причинам, колоночное хранилище прекрасно подходит для оптимизации решения OLAP задач.

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

Таким образом, возникает противоречие: если система должна быть гибридной OLTP/OLAP, оптимизировать ее нужно было бы методами хранения данных, противоречащими друг другу. Но если разделить OLTP и OLAP, тогда каждая из-задач может быть оптимизирована отдельно и без последствий для другой задачи: OLTP с построчным хранилищем и OLAP с колоночным. Своего рода, случай когда 1+1>2
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520117
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на группу вопросов, касающихся защиты данных во время плановых или аварийных остановок кластера:

В зависимости от требований к надежности системы, существует несколько видов и, соответственно, уровней защиты от потери данных в аварийных ситуациях. Более сложные DR схемы, обычно применяемые в критических и особо важных системах обычно реплицируют данные во вторичный дата центр - это покрывает риск, связанный с "отрубили электричество" в дата центре (как и от любых других катастроф, приводящих к полной неработоспособности или потере инфраструктуры, т.к. природные бедствия итд). Конфигурация такой репликации может быть или синхронной, или асинхронной - в зависимости от требований к надежности приложения и допустимого общего замедления системы, вызванного достижением такой надежности. Этот уровень предохраняет данные при авариях на уровне дата центра.

Следующий, более низкий уровень защиты - это "reverse caching", те периодические снэпшоты (своего рода incremental backup) базы на локальные диски каждого нода в кластере. Обычно, с периодичностью до часа, во многих системах - каждые 10 -15 минут. Идея в том, что если "отрубили электричество", то обычно у системы есть хоть какое-то гарантированной время для продолжения работы на резервном питании с UPS-батарей и, соответственно, перейти в аварийный режим и сохранить данные из памяти на диск. Этот уровень защиты предохраняет от аварии на уровне кластера.

Для защиты от аварий на уровне одного или нескольких нодов, обычно применяется K-safety кластера: транзакция не коммитнется до тех пор, пока копия изменения не гарантирована на другом ноде в кластере, то если любой нод падает, данные могут быть восстановлены из других нодов (концептуально и функционально напаминает Redundant. Array of Inexpensive Drives, но имплементация другая, те сравнение с RAID 5 в было бы не совсем корректно). Такая защита, конечно, предполагает дополнительную задержку, но при скоростях передачи данных на современных сетях и с учетом, что копия создается только в памяти другого нода (а не на диске), такой подход выглядит как вполне разумный компромисс между высокой надежностью и высокой производительностью системы. K-safety может быть сконфигурирована с К>1, те можно создавать дополнительные копии, и таким образов выживать потерю более чем одного нода. Чем больше К, тем надежнее (но медленнее) система. Фейловер полностью автоматический, равно как и восстановление и обновление данных в случае возврата остановленного нода, и никоем образом не отражается на работоспособность подключенных клиентов.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520314
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB,

Интерсно узнать архитектуру исполнения кода пользовательских процедур (хранимок )
В частности
1) Код выполнятся на случайной ноде или на всех
2) Можно ли || код.
3) Есть ди интерфейсы обмена данными между хранимками ?
4) Как насчет Джобов ? Тригеров ?
5) Как решатеся проблема замирания кода из-за работы Java GC ?
6) Есть ли огрничения по внешнему взаимодествию в коде хранимок
-- у Вас свой движок JVM или испльзуется что-то "стандартное"
-- можно ли дергать Web Сервисы из кода ?
7) Есть ли понятие "табличные" функции ?

Общие вопросы по администрированию
1) Какие концепции на примере Oracle вы реализовали
- Таблицы в табличных пространствах и в файлах данных ?
2) Что такое База данных ?
это схема пользователя ?
3) Группы - Роли - Пользователи ?
4) Аудит измениний данных и метаданных ?
5) Как насчет полнной поддержки SOX ?
6) Есть ли workflow по разработке и накатыванию изменений ? (концепция LCM )
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520427
xifos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 или что там у вас вместо него.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520538
redo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xifos Отказались от механизма redo/undo, а что взамен? Как сделать бекап 100 машин кластера? Ведь нам нужна согласованная копия. Да, можно остановить весь кластер, но не забываем, у нас OLTP, а значит длительный простой невозможен.


От механизма redo не отказались. Они между снапшотами пишут логи, при этом могут писать в синхронном и асинхронном режиме. При этом, как я понял, политика записи логов и снятия снапшотов на разных нодах кластера может быть разной, что достаточно интересно, т.к. чаще всего разные данные имеют разные требования к durability.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520881
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз обсуждение переползло сюда, сдублирую вопрос недельной давности.

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 транзакций и между прочим честно слить их на диски безо всяких батареек.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520990
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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 и другой широко распрастраненной СУБД. Если кого-нибудь интересует, пожалуйста, сообщите - с удовольствием поделюсь.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38520998
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifos...Это общие подходы, а технические детали как узнать?...

Очень многие вопросы покрыты в документации здесь: http://voltdb.com/dev-center/documentation/

Если что-то не покрыто или нужно копнуть глубже, мы постараемся ответить на зтом форуме (пожалуйста заметьте, что ответы могут занять какое-то время т.к вопросов много). Ну а самый лучший вариант, конечно, это загрузить open source версию и попробовать...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521004
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Об издержках менеджера локировок в традиционной СУБД архитектуре

Традиционная 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 за точку отсчета взял
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521005
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBОсновные тесты VoltDB базировались именно на мульт-узловых системах, включая вариации ТСР.Бывает TCP и TCP. Например, некоторые мамки идут с 4 10GbE на борту, и в кластере очень удобно поставить 4 свича с полной пропускной способностью в матрице у каждого свича, прицепить каждый ящик ко всем свичам и при наличии поддержки в ядре СУБД получить "инфинибанд для бедных" --- 40 гигабит с любого на любой ящик. Латентность, конечно, никуда не девается, но на OLAP задачах удавалось получать порядка 70% от производительности того же кластера с недорогими мелланоксовскими картами. VoltDB сможет заюзать все 4 карты, распараллеливая потоки?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521009
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBОсновные тесты VoltDB базировались именно на мульт-узловых системах, включая вариации ТСР.Бывает TCP и TCP. Например, некоторые мамки идут с 4 10GbE на борту, и в кластере очень удобно поставить 4 свича с полной пропускной способностью в матрице у каждого свича, прицепить каждый ящик ко всем свичам и при наличии поддержки в ядре СУБД получить "инфинибанд для бедных" --- 40 гигабит с любого на любой ящик. Латентность, конечно, никуда не девается, но на OLAP задачах удавалось получать порядка 70% от производительности того же кластера с недорогими мелланоксовскими картами. VoltDB сможет заюзать все 4 карты, распараллеливая потоки?

Извините, это была опечатка :) Имелось ввиду, не ТСР, а ТРС (Transaction Processing Council)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521024
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBА если бы иметь какой-нибудь domain specific language высокого уровня, который бы позволял легко и удобно программировать конкретную локировку оптимальную для конкретного приложения... :)Virtuoso/PL ? ;)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521049
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot iv_an_ru]VoltDB...VoltDB сможет заюзать все 4 карты, распараллеливая потоки?

Я легко могу себе представить, как большой аналитической системе может понадобиться 40Гбт пропускная способность (например, параллельное сканирование супер-большой таблицы, неколлоцированный JOIN или распределенный пересегментация данных в Вертик-кластере[1]), но, мне кажется, в OLTP системах (запросы-то, в основном, точечные и транзакции - сравнительно короткие) такая необходимость может возникнуть гораздо реже, я бы даже рискнул сказать, что почти никогда. Но даже, давайте представим себе, что такая необходимость существует и нам нужно агрегировать 4 интерфейса. Я не сетевой инженер, и могу ошибаться в этом вопросе, но мне кажется, мы бы попытались применить какую нибудь из известных моделей агрегирования, в простейшем случае NIC bonding. Мне кажется, в общем случае, это не VoltDB должен агрегацией заниматься, а или операционная система (в простом варианте) или агрегатор в сетевом интерфейсе (в более сложных случаях). Опять-таки, я себя в этом вопросе не считаю специалистом.

[1] - Я сталкивался с мулти-петабайтной Вертикой, в которой 2х10Гбт интерфейс на каждом ноде был просто необходимостью именно по этим причинам
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521053
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBА если бы иметь какой-нибудь domain specific language высокого уровня, который бы позволял легко и удобно программировать конкретную локировку оптимальную для конкретного приложения... :)Virtuoso/PL ? ;)

Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знаком
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521068
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruпропущено...
Virtuoso/PL ? ;)

Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знакомТам есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п. В сочетании с возможностью запустить из транзакции пул асинхронных задач, возможностью включать-выключать лог и автокоммит, и --- главное --- возможностью комбинировать упомянутые возможности как попало, получаем разнообразные возможности выстрелить себе не только в ногу, но и в голову.

...зато OLAP на таблицах по 0.5 триллиона записей не вызывает паники :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521069
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redoxifos Отказались от механизма redo/undo, а что взамен? Как сделать бекап 100 машин кластера? Ведь нам нужна согласованная копия. Да, можно остановить весь кластер, но не забываем, у нас OLTP, а значит длительный простой невозможен.


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

Спасибо за комментарий! Это Вы даже так глубоко в недра кода заглянули? :) Очень были бы признательны за мнение - что, в общем, о системе думаете?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521077
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBпропущено...


Да это я так, задумался... На самом деле, пользователей, наверное не так много, т.е такая игра вряд-ли стоила бы свеч. С Virtuoso/PL, к сожалению, не знакомТам есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п. В сочетании с возможностью запустить из транзакции пул асинхронных задач, возможностью включать-выключать лог и автокоммит, и --- главное --- возможностью комбинировать упомянутые возможности как попало, получаем разнообразные возможности выстрелить себе не только в ногу, но и в голову.

LOL :) Нужно запомнить...

iv_an_ru...зато OLAP на таблицах по 0.5 триллиона записей не вызывает паники :)

Ну это конечно, немало... Но, я Вам скажу, я в этом плане Вертику сильно уважаю - несколько триллионов в достаточно широкой таблице с средним ответом на аналитический запрос средней сложности (типа, с правильным суб-запрсом) до одной секунды. Естественно, правильно выложенные и оптимизированные прожекции...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521080
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBЯ легко могу себе представить, как большой аналитической системе может понадобиться 40Гбт пропускная способность... в OLTP системах такая необходимость может возникнуть гораздо реже, я бы даже рискнул сказать, что почти никогда.В OLTP большой трафик любит вылезать при восстановлениях после аварий, особенно если кроме накатки местных логов выполняется чтение больших подписок publisher/subscriber replication.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521083
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru...Там есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п.

Серьезная щтука... Это-ж сколько всяких разностей клиентскому приложению про базу и кластер знать нужно!
...
Рейтинг: 0 / 0
25 сообщений из 118, страница 1 из 5
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]