powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
118 сообщений из 118, показаны все 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
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521086
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBЯ легко могу себе представить, как большой аналитической системе может понадобиться 40Гбт пропускная способность... в OLTP системах такая необходимость может возникнуть гораздо реже, я бы даже рискнул сказать, что почти никогда.В OLTP большой трафик любит вылезать при восстановлениях после аварий, особенно если кроме накатки местных логов выполняется чтение больших подписок publisher/subscriber replication.

Может быть... Hаверное все зависит от требований системы. Лично я бы при высоких требованиях к надежности, второй кластер в запасном дата центре поставил, и в него бы или реплицировал с основного, или сразу писал-бы с приложения в два места, если топология позволяет. А вместо супер-широкого сетевого интерфейса, на ноду локальные диски побыстрее поставил - снэпшоты ведь на них читать-писать нужно. Опять таки, это лично мое мнение - Ваша система может иметь очень другие требования. Как говориться, "There is more than one way to skin a cat" :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521088
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ru...Там есть милые фенечки вроде вставки только в один из индексов или вставки только на одной из нод кластера, или insert select, у которого select ограничен одной нодой, и т.п.

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


Серьезная щтука... Это-ж сколько всяких разностей клиентскому приложению про базу и кластер знать нужно!А нисколько. Обычно немногочисленные грамотные люди пишут серверную часть и RDF Views, а остальные потом пишут SPARQL-запросы, не особо задумываясь о последствиях о планах выполнения, индексах и т.п. Для защиты от дурака пользователя с гуманитарным складом ума обычно используется механизм anytime query , когда по истечении лимита на время исполнения клиент получает частичный ответ на запрос.

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

Удивила цитата из доки, https://voltdb.com/docs/tutorial/Part3.php#PartitionTables :
PARTITION TABLE Customer ON COLUMN CustomerID;

Это, конечно, не смертельная проблема для чистого OLTP в памяти, но даже немудрячая смешанная нагрузка BSBM explore and update показывает, насколько производительность приложения может зависеть от того, какие именно биты используются для партиционирования и насколько длинные последовательности значений размещаются на каждом из узлов. Стоунбрейкер, разумеется, про это знает. Можно прояснить, там запрятано некое хитрое автоконфигурирование и/или функция посложнее обычного round robin-а "по модулю"? Или никакой хитрой магии, просто производительность OLAP умышленно принесена в жертву ради удобства администрирования? Или я не дочитал до того места, где описывается точная настройка партиционирования?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521174
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разница между партиционированием и шардированием

Хотя партиционирование данных в VoltDB функционально сходно с техникой шардинга, применяемой другими СУБД, существуют несколько критических архитектурных отличий. Фундаментально, и шардинг, и партиционирование подразумевают разбивку таблицы на горизонтальные “срезы”, т.е строки данных в таблице группируются в соответствии со значением в определенной колонке текущей строки. Например, таблица заказчиков может быть шардирована (или партиционирована) по названию заказчика таким образом, что все заказчики, чье имя начинается на букву “А” находятся в одной группе, начинающиеся на букву “Б” - в другой и.т.д.

Первое различие между шардингом и партиционированем данных в VoltDB заключается в том, в каком компоненте системной архитектуры принимается решение о принадлежности текущей строки к тому или иному шарду (или, соответственно, партиции). В шардинге, как правило, такое решение принимается не СУБД, а каким-нибудь другим компонентом, например специальным сервером-раутером или приложением-клиентом. То есть, для принятия такого решения, соответствующий компонент архитектуры должен проанализировать данные текущей строки и затем, зная детали конфигурации СУБД и кластера, определить к какому шарду такая строка принадлежит. В случае с VoltDB, непосредственно такое решение принимается непосредственно СУБД. С точки зрения любого клиента сервиса СУБД (будь-то раутер или любой другой компонент, отличный от СУБД) данные партиционируются автоматически. Таким образом, приложение-клиент не знает никаких специальных деталей о СУБД и конфигурации подлежащего кластера и, соответственно, любые изменения в СУБД или кластере (например, добавление дополнительных нод) остаются изолированными и не требуют никаких изменений за пределами СУБД. [1]

Второе важное отличие заключается в том, что обычно шардинг подразумевает размещение одного шарда таблицы на каждом ноде в кластере (таким образом, сколько нодов - столько шардов таблицы). В нашем предыдущем примере с таблицей заказчиков, все заказчики, чье имя начинается на букву “А” находились бы в на одном ноде кластера, начинающиеся на букву “Б” - на другом и.т.д. В VoltDB каждый нод в кластере может иметь больше одной партиции (в этом случае партиция называться “site”). Например, каждый нод в кластере может иметь столько партиций (сайтов), сколько ядер процессора(ов) такой нод имеет в своем распоряжении. Таким образом, в отличии от традиционного шардинга, такая архитектура партиционирования VoltDB позволяет не только параллелизм доступа к данным, расположеным на всех нодах в кластере, но и более гранулярный параллелизм доступа к данным каждым ядром, имеющимя в распоряжении нода. Как результат такого увеличения паралелизма обработки данных, общая пропускная способность системы увеличивается.


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

Да, речь именно про партиционирование. В одной базе про гидрологические буйки две таблицы (event_id integer not null primary key, event_start datetime, tag1 double precision, tag2 double precision,... tag15 double precision) должны быть партиционированы по полю event_start двумя разными способами. В подсистеме моделирования цунами они могут быть партиционированы по нескольким битам после 9-го бита секунд, так что на каждую машину будут падать данные за последовательные 512 секунд, так что короткий срочный запрос по последнему десятку минут будет выполнен без существенных задержек на IPC по кластеру, силами одной машины, максимум двумя зеркальными группами машин, а большие выборки ретроспективных данных равномерно загрузят весь кластер. В подсистеме анализа течений похожие таблицы должны быть партиционированы по первым битам дней, потому что там "свежие данные" --- это последняя пара приливов и отливов.

Ещё есть проблемка с пакетной загрузкой начального состояния. Буквально на прошлой неделе получил наглядный урок: два прогона на одном и том же кластере и одних и тех же данных, показали скорости загрузки в полтора и три с мелочью миллиона строк в секунду, а разница была в декларации

alter index RDF_QUAD on RDF_QUAD partition cluster ELASTIC_1 (S int (0hexffff00))
create distinct no primary key ref column index RDF_QUAD_SP on RDF_QUAD (S, P) partition cluster ELASTIC_1 (S int (0hexffff00))
create distinct no primary key ref column index RDF_QUAD_GS on RDF_QUAD (G, S) partition cluster ELASTIC_1 (S int (0hexffff00))

в одном случае и

alter index RDF_QUAD on RDF_QUAD partition cluster ELASTIC_1 (S int (0hexffff0000))
create distinct no primary key ref column index RDF_QUAD_SP on RDF_QUAD (S, P) partition cluster ELASTIC_1 (S int (0hexffff0000))
create distinct no primary key ref column index RDF_QUAD_GS on RDF_QUAD (G, S) partition cluster ELASTIC_1 (S int (0hexffff0000))

в другом. Загрузчики работали на всех узлах в параллель, Узлы в кластере неплохие --- 16 ядер 256 гигов ОЗУ на каждом, а вот соединение так себе, эзернетом.

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

Да, речь именно про партиционирование. В одной базе про гидрологические буйки две таблицы (event_id integer not null primary key, event_start datetime, tag1 double precision, tag2 double precision,... tag15 double precision) должны быть партиционированы по полю event_start двумя разными способами. В подсистеме моделирования цунами они могут быть партиционированы по нескольким битам после 9-го бита секунд, так что на каждую машину будут падать данные за последовательные 512 секунд, так что короткий срочный запрос по последнему десятку минут будет выполнен без существенных задержек на IPC по кластеру, силами одной машины, максимум двумя зеркальными группами машин, а большие выборки ретроспективных данных равномерно загрузят весь кластер. В подсистеме анализа течений похожие таблицы должны быть партиционированы по первым битам дней, потому что там "свежие данные" --- это последняя пара приливов и отливов.

Ещё есть проблемка с пакетной загрузкой начального состояния. Буквально на прошлой неделе получил наглядный урок: два прогона на одном и том же кластере и одних и тех же данных, показали скорости загрузки в полтора и три с мелочью миллиона строк в секунду, а разница была в декларации

alter index RDF_QUAD on RDF_QUAD partition cluster ELASTIC_1 (S int (0hexffff00))
create distinct no primary key ref column index RDF_QUAD_SP on RDF_QUAD (S, P) partition cluster ELASTIC_1 (S int (0hexffff00))
create distinct no primary key ref column index RDF_QUAD_GS on RDF_QUAD (G, S) partition cluster ELASTIC_1 (S int (0hexffff00))

в одном случае и

alter index RDF_QUAD on RDF_QUAD partition cluster ELASTIC_1 (S int (0hexffff0000))
create distinct no primary key ref column index RDF_QUAD_SP on RDF_QUAD (S, P) partition cluster ELASTIC_1 (S int (0hexffff0000))
create distinct no primary key ref column index RDF_QUAD_GS on RDF_QUAD (G, S) partition cluster ELASTIC_1 (S int (0hexffff0000))

в другом. Загрузчики работали на всех узлах в параллель, Узлы в кластере неплохие --- 16 ядер 256 гигов ОЗУ на каждом, а вот соединение так себе, эзернетом.

Разумеется, можно завести специальную целочисленную колонку и партиционировать по ней. Но тогда во-первых оптимизатор не поймёт, какие данные колоцируются друг с другом, а какие надо собирать через IPC. Во-вторых, для EAV это уполторазит объём некоторых индексов. В третьих, тупая пакетная загрузка без трансформаций и пакетная загрузка с шахматами и куртизанками --- две разные по производительности вещи.

Да-да - я знаю, что еще не до конца ответил на Ваш предыдущий вопрос. Вы понимаете, многие ответы требуют, так сказать, "введения в VoltDB", т.е иначе мне пришлось бы каждый ответ начинать с базовых концепций о партиционировании, single-site vs multi-site запросов итд.Кроме того, каждый ответ был-бы очень длинным

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

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

По поводу Virtuoso? Разумеется. Но если у вас линукс, то Virtuoso Open Source с довольно большой вероятностью у вас уже крутится как часть KDE, разве что удобнее скачать версию поновее и поднять отдельно от "внутрисистемного" экземпляра.

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

По поводу Virtuoso? Разумеется. Но если у вас линукс, то Virtuoso Open Source с довольно большой вероятностью у вас уже крутится как часть KDE, разве что удобнее скачать версию поновее и поднять отдельно от "внутрисистемного" экземпляра.

по поводу базы с гидрологическими буйками.Это не наше приложение, это пользователи, и мы никогда не раскрываем имён пользователей (хотя иногда аж зудит похвастаться :) Некоторых, правда, можно нагуглить по фразе "Virtuoso SPARQL Query Editor" --- если кто-то выставляет СУБД голым интерфейсом в Сеть, то тут тайны уже точно нет.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521198
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBпропущено...


по поводу базы с гидрологическими буйками.Это не наше приложение, это пользователи, и мы никогда не раскрываем имён пользователей (хотя иногда аж зудит похвастаться :) Некоторых, правда, можно нагуглить по фразе "Virtuoso SPARQL Query Editor" --- если кто-то выставляет СУБД голым интерфейсом в Сеть, то тут тайны уже точно нет.

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

Удивила цитата из доки, https://voltdb.com/docs/tutorial/Part3.php#PartitionTables :
PARTITION TABLE Customer ON COLUMN CustomerID;

Это, конечно, не смертельная проблема для чистого OLTP в памяти, но даже немудрячая смешанная нагрузка BSBM explore and update показывает, насколько производительность приложения может зависеть от того, какие именно биты используются для партиционирования и насколько длинные последовательности значений размещаются на каждом из узлов. Стоунбрейкер, разумеется, про это знает. Можно прояснить, там запрятано некое хитрое автоконфигурирование и/или функция посложнее обычного round robin-а "по модулю"? Или никакой хитрой магии, просто производительность OLAP умышленно принесена в жертву ради удобства администрирования? Или я не дочитал до того места, где описывается точная настройка партиционирования?

Я по указанной ссылке PARTITION TABLE Customer ON COLUMN CustomerID; не нашел...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521215
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новая версия VoltDB 4.0

Интерактивный вэбкаст с демонстрацией новой функциональности и Q&A сессией состоится в среду 29-го января, 2014 в 23:00 МСК.

Зарегистрироваться можно здесь: https://voltdb.webex.com/mw0401l/mywebex/default.do?nomenu=true&siteurl=voltdb&service=6&rnd=0.699249563374278&main_url=https://voltdb.webex.com/ec0701l/eventcenter/event/eventAction.do?theAction=detail&confViewID=1004752450&&&&siteurl=voltdb&utm_source=hs_email&utm_medium=email&utm_content=11602540&_hsenc=p2ANqtz-_BBBU6bkwv5zrx3pyQac0xUVHSsDS57ypeaNTqOPKj2jTt3wq-i905po16L1UN3p9arR-3akTqffRoQtJtsWH60BWSXw&_hsmi=11602540
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38521286
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruпропущено...
Это не наше приложение, это пользователи, и мы никогда не раскрываем имён пользователей (хотя иногда аж зудит похвастаться :) Некоторых, правда, можно нагуглить по фразе "Virtuoso SPARQL Query Editor" --- если кто-то выставляет СУБД голым интерфейсом в Сеть, то тут тайны уже точно нет.

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

Упс, PARTITION TABLE towns ON COLUMN state_num . Первая, стало быть, была из другого тьюториала.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38526362
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDB,

Упс, PARTITION TABLE towns ON COLUMN state_num . Первая, стало быть, была из другого тьюториала.

Пожалуйста заметьте, что разница между PARTITION TABLE Customer ON COLUMN CustomerID и PARTITION TABLE towns ON COLUMN state_num критична. Ведь, судя по всему, значения в колонке CustomerID были бы уникальны. Такого рода партицирование привело бы к созданию отдельной партиции для каждой строчке в таблице т.е группировка записей по какому-либо общему атрибуту не была бы достигнута. А в примере с партицированием по state_num, все города, находящиеся в определенном штате будут сгруппированы вместе в единой партиции и "приписаны" к определенному ядру. Сколько уникальных штатов - столько и партиций. Причем каждая партиция имела бы записи для многих городов, но все города в одной партиции находились бы я в одном штате. Таким образом, все запросы, содержащие WHERE state_num = ? будут локализированы.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38526767
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB,

ok, http://voltdb.com/docs/UsingVoltDB/ChapAppDesign.php содержит как раз PARTITION TABLE Customer ON COLUMN CustomerID, но ON COLUMN CustomerID и ON COLUMN state_num к вопросу о локальности последовательностей относится только косвенно. Партиционирование по штату вопросов не вызывает, если выборка или группировка по штату действительно часто встречаются. В остальном она может быть любой, поскольку вряд ли кто-то фильтрует наподобие ...WHERE state_num BETWEEN 10 and 20. Партиционирование по CustomerID уже чуточку интереснее, если покупатели "одноразовые" и нумеруются в порядке создания --- тогда разное партиционирование начинает влиять на запросы с диапазонами дат. Ну а если для значений колонки диапазоны "от...до" имеют явный смысл, тогда и влияние такое же явное.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38527510
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDB,

ok, http://voltdb.com/docs/UsingVoltDB/ChapAppDesign.php содержит как раз PARTITION TABLE Customer ON COLUMN CustomerID, но ON COLUMN CustomerID и ON COLUMN state_num к вопросу о локальности последовательностей относится только косвенно. Партиционирование по штату вопросов не вызывает, если выборка или группировка по штату действительно часто встречаются. В остальном она может быть любой, поскольку вряд ли кто-то фильтрует наподобие ...WHERE state_num BETWEEN 10 and 20. Партиционирование по CustomerID уже чуточку интереснее, если покупатели "одноразовые" и нумеруются в порядке создания --- тогда разное партиционирование начинает влиять на запросы с диапазонами дат. Ну а если для значений колонки диапазоны "от...до" имеют явный смысл, тогда и влияние такое же явное.

Безусловно, запросы с BETWEEN могут встречаться, но я думаю, важно отметить что, в общем случае основную нагрузку OLTP системы все-таки составляют точечные запросы. Пример в документации на который Вы указываете, иллюстрирует процесс принятия решения о партиционировании системы продажи авиационных билетов, которая бы разрабатывалась, в первую очередь, для поиска авиарейса(ов) по пункту отлета и прибытия и проверке наличия свободных мест на авиарейсе. Это не означает, что такая система поддерживала бы только такие запросы - другие запросы тоже вполне функциональны, но, как Вы можете видеть из описания самого примера, в соответствии с тех-заданием в Таблице 3.1 на http://voltdb.com/docs/UsingVoltDB/ChapAppDesign.php, частота таких запросов относительно невелика (до 1000 запроов/сек, в то время как первоочередные запросы требуют от 1 до 10 тысяч запросов/сек). Соответственно, система оптимизируется с учетом запросов, которые будут исполняются более часто.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38527594
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB,

С этими примерами всё понятно, тем не менее исходный-то вопрос остаётся неотвеченым. Можно прояснить, там (1) запрятано некое хитрое автоконфигурирование и/или функция посложнее обычного round robin-а "по модулю"? Или (2) никакой хитрой магии, просто производительность OLAP умышленно принесена в жертву ради удобства администрирования? Или (3) я не дочитал до того места, где описывается точная настройка партиционирования?
Нет ничего "неприличного" в варианте (2), с таким решением вы тоже попадаете в хорошую компанию (к примеру, двухшаговый алгоритм выбора нод в Терадате тоже не настраивается никак). Так что не стесняйтесь, ежели что :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38528869
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDB,

С этими примерами всё понятно, тем не менее исходный-то вопрос остаётся неотвеченым. Можно прояснить, там (1) запрятано некое хитрое автоконфигурирование и/или функция посложнее обычного round robin-а "по модулю"? Или (2) никакой хитрой магии, просто производительность OLAP умышленно принесена в жертву ради удобства администрирования? Или (3) я не дочитал до того места, где описывается точная настройка партиционирования?
Нет ничего "неприличного" в варианте (2), с таким решением вы тоже попадаете в хорошую компанию (к примеру, двухшаговый алгоритм выбора нод в Терадате тоже не настраивается никак). Так что не стесняйтесь, ежели что :)


Да, действительно - давайте вернемся к исходному вопросу о возможности локализации последовательностей, или, в общем случае, возможности партиционирования данных, базирующегося на различного рода неочевидных (по-крайней мере, для оптимизатора) взаимозвязях. Таких, как в Вашем примере о подсистеме моделирования цунами, где партиционирование могло бы быть произведено по нескольким битам после 9-го бита секунд таким образом, что данные за каждые последовательные 512 секунд могли бы храниться в отдельной партиции с целью оптимизации призводительности OLAP. Нет, автоматическая поддержка такого специального партицирования в VoltDB не реализована. Хотя мы не думаем об отсутствии такой поддержки как об “умышленно принесенной жертве” :). Как Вы правильно заметили, такая функциональность может быть эмулирована путем добавления в таблицу дополнительной колонки, содержащей модифицированные значения для такого партиционирования. В отношении “обычного round robin-а "по модулю", хотя наш алгоритм и немного сложнее (т.к необходимо учитывать К-factor кластера), но никакой хитрой магии нет.

Кстати, разрешите воспользоваться случаем и показать как работает К-safety.

На рисунке ниже показаны 3 нода, каждый с 4 сайтами (каждое ядро имеет свой сайт), то-есть, всего 12 сайтов. Так как кластер сконфигурирован с К-factor=1, в кластере только 6 партиций. Каждая из шести партиций имеет копию на другом ноде; таким образом, если по какой-либо причине один из нодов в кластере потерян, база остается функциональной.


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

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

Можно пж посмотреть на мои вопросы ?

erИнтерсно узнать архитектуру исполнения кода пользовательских процедур (хранимок )
В частности
1) Код выполнятся на случайной ноде или на всех
2) Можно ли || код.
3) Есть ди интерфейсы обмена данными между хранимками ?
4) Как насчет Джобов ? Тригеров ?
5) Как решатеся проблема замирания кода из-за работы Java GC ?
6) Есть ли огрничения по внешнему взаимодествию в коде хранимок
-- у Вас свой движок JVM или испльзуется что-то "стандартное"
-- можно ли дергать Web Сервисы из кода ?
7) Есть ли понятие "табличные" функции ?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38530289
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruМожно пж посмотреть на мои вопросы ?

Интерсно узнать архитектуру исполнения кода пользовательских процедур (хранимок )
В частности
1) Код выполнятся на случайной ноде или на всех

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

essbase.ru2) Можно ли || код.

Если Вы имеете ввиду sqlcmd, то да

essbase.ru 3) Есть ди интерфейсы обмена данными между хранимками ?

Хранимые процедуры пишутся в JAVA, соответственно, все JAVA IPC методы доступны

essbase.ru 4) Как насчет Джобов ? Тригеров ?

Нет, не поддержаны

essbase.ru 5) Как решатеся проблема замирания кода из-за работы Java GC ?

Я думаю, производительность Java приложений в большей степени зависит от индивидульного стиля разработки такого приложения, чем от GC.

essbase.ru 6) Есть ли огрничения по внешнему взаимодествию в коде хранимок

Теоритически - нет. На практики, так как в VoltDB процедура является “контейнером” для транзакции, и соответственно, время, в течении которого такая транзакция остается открытой должно сводиться к минимуму, мы не рекомендуем включать в процедуры код, который может существенно увеличить время исполнения.

essbase.ru-- у Вас свой движок JVM или испльзуется что-то "стандартное"

Стандартный

essbase.ru-- можно ли дергать Web Сервисы из кода ?

Можно. Но если скорость возврата вызова Web Сервиса не контролируется, то, соответственно, и прозводительность хранимой процедуры не может быть гарантирована.

essbase.ru 7) Есть ли понятие "табличные" функции ?

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

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

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

Программный код и данные которыми он оперирует не совсем одно и тоже . Я знаю только одну концепцию, которая работает в описанном Вами режиме - это программирования для BigData - Map:Reduce.

Означает ли что для VoltDB нужно писать хранимки в таком же стиле ?

з.ы. IMHO хранимка это не только "догонка" транзакций "связанными" данными (ключами или справочниками) . Обычно это еще и пакетная обработка всех данных (за год, или день).
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38531433
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBessbase.ru2) Можно ли || код.

Если Вы имеете ввиду sqlcmd, то да

Я имею ввиду , что бы в коде сделать опреацию "выполнить процедуру в три четыре потока , дождаться завершения всех потоков , получить консолидированный результат.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38531436
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBХранимые процедуры пишутся в JAVA, соответственно, все JAVA IPC методы доступны

жесть.
по идее я не должен знать на какой ноде выполняется конкретный вызов процедуры.

При предложенном подходе , мне придется придумывать собственную шину данных для всего кластера. Чем мне может помочь в этом VoltDB ?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38531439
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBЯ думаю, производительность Java приложений в большей степени зависит от индивидульного стиля разработки такого приложения, чем от GC.


Получается что весь код хранимок выполняется в других процессах и службах ? Т.е. по сути нет совмещения данных и программного кода как это есть в других RDB ? (где можно написать бизнес слой на PL-SQL(TSQL) и получить дополнительный выйгрыш за счет того, что данные "далеко" не пробрасываются ? )
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38531445
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBНет. Но у разработчика есть доступ к таблице из Java, так что...

Концепция табличный функций - это не только доступ к таблицам. Если программист знает вкус стиля программирования с ТФ, перейти к временным таблицам - это все равно что с Java перейти на ASM.

ER
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38531527
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruVoltDBХранимые процедуры пишутся в JAVA, соответственно, все JAVA IPC методы доступны

жесть.
по идее я не должен знать на какой ноде выполняется конкретный вызов процедуры.

При предложенном подходе , мне придется придумывать собственную шину данных для всего кластера. Чем мне может помочь в этом VoltDB ?Дока говорит, что любая хранимка обязана гарантировать, что результат её работы не зависит от ноды. На этом фоне IPC выглядит "полулегальным", потому что вы не можете защититься от сбоев транпорта. Если ноды A и B выполняют одну и ту же хранимку, которая обращается к X вне кластера, но X почему-то отвечает только ноде B, то формально гарантия нарушена (а точного описания "кары" за нарушение я быстро не нашёл).

(У нас проще. Хранимка может звать любой код на любом hosted language, но этот код будет исполняться на той машине кластера, к которой прицепился клиент, даже если разные части самой хранимки выполняются на разных машинах кластера. Технически никто не запрещает на разных машинах кластера держать вообще разные версии рантаймов perl/php/java и т.п., чтобы дать возможность каждому клиенту юзать его любимую версию и не греть голову совместимостью тех версий.)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532399
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruVoltDBПартиционирование происходит не только для данных, но и для хранимых процедур. Таким образом, процедура выполняется на том же ноде, где размещена соответствующая партиция данных,

Программный код и данные которыми он оперирует не совсем одно и тоже . Я знаю только одну концепцию, которая работает в описанном Вами режиме - это программирования для BigData - Map:Reduce.

Означает ли что для VoltDB нужно писать хранимки в таком же стиле ?

з.ы. IMHO хранимка это не только "догонка" транзакций "связанными" данными (ключами или справочниками) . Обычно это еще и пакетная обработка всех данных (за год, или день).

Извините, но я не уловил связи... MapReduce - механизм генерализации параллельной обработки больших объемов данных на распределенном НРС кластере. VoltDB - OLTP СУБД. MapReduce разработан под аналитический бэтч-процесс, VoltDB - под большое количество коротких SQL запросов (транзакций) в реальном времени. MapReduce не предполагает логического партицирования данных (файловай система просто разбивает файл на чанки, при этом никакой логической связи между данными в индивидуальном чанке нет), а VoltDB группирует строки таблицы по значению в определенной колонке (т.о все данные в партиции имеют общий аттрибут). В MapReduce код исполняется параллельно на каждом ноде, в VoltDB - на ноде, на котором размещена соответствующая партиция данных (например, запрос SELECT Col1, Col2, Col3 FROM Invoices WHERE CustomerID = XYZ будет исполнен ядром которое обслуживает партицию содержащую инвойсы заказчика XYZ).
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532426
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruVoltDBпропущено...


Если Вы имеете ввиду sqlcmd, то да

Я имею ввиду , что бы в коде сделать опреацию "выполнить процедуру в три четыре потока , дождаться завершения всех потоков , получить консолидированный результат.

Опять-таки, мне кажется это пример аналитического запроса. В контексте OLTP задача звучала бы так:

Клиент: "СУБД, выполни сохраненную процедуру, которая называется МойКод, при этом передай в процедуру аргумент CustomerID=XYZ."

СУБД: "Ага, процедура МойКод ищет иновойсы заказчика XYZ... Я знаю, что все инвойсы этого заказчика сгруппированы вместе и находятся в оперативной памяти, локально приписанной к ядру номер 2 на ноде номер 3. Поручаю дальнейшую работу именно этому ядру. Готова к следующему заданию..."
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532436
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ruVoltDBЯ думаю, производительность Java приложений в большей степени зависит от индивидульного стиля разработки такого приложения, чем от GC.


Получается что весь код хранимок выполняется в других процессах и службах ? Т.е. по сути нет совмещения данных и программного кода как это есть в других RDB ? (где можно написать бизнес слой на PL-SQL(TSQL) и получить дополнительный выйгрыш за счет того, что данные "далеко" не пробрасываются ? )

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

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


Я имею ввиду , что бы в коде сделать опреацию "выполнить процедуру в три четыре потока , дождаться завершения всех потоков , получить консолидированный результат.

Опять-таки, мне кажется это пример аналитического запроса. В контексте OLTP задача звучала бы так:

Клиент: "СУБД, выполни сохраненную процедуру, которая называется МойКод, при этом передай в процедуру аргумент CustomerID=XYZ."

СУБД: "Ага, процедура МойКод ищет иновойсы заказчика XYZ... Я знаю, что все инвойсы этого заказчика сгруппированы вместе и находятся в оперативной памяти, локально приписанной к ядру номер 2 на ноде номер 3. Поручаю дальнейшую работу именно этому ядру. Готова к следующему заданию..."Щасс... готова она. Вы же строго последовательно прогоняете транзакции, так что к времени работы транзакции запросто прибавляются два времени IPC и связанные с ними противные мьютексы на читателях и писателях.

Чем дольше я думаю над вашей моделью обработки данных, тем более узкоспециальной она мне кажется. чуть шаг в сторону от простейшего OLTP с "точечными" выборками и изменениями, тем менее корректна исходная "рекламная" картинка.
Вспомним кадры с первых презентаций идеи: локи стоят X% времени, буферизация Y% времени, ... собственно транзакция 1%, а теперь мы жестом фокусника выкидываем лишние X,Y,Z... Слайд красивый, конечно. Но некорректность, IMHO, в мало обоснованном предположении, что выкидывание всех X,Y,Z со всеми их мьютексами не изменит статистики ожиданий на мьютексах в оставшемся коде.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532477
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBпропущено...


Опять-таки, мне кажется это пример аналитического запроса. В контексте OLTP задача звучала бы так:

Клиент: "СУБД, выполни сохраненную процедуру, которая называется МойКод, при этом передай в процедуру аргумент CustomerID=XYZ."

СУБД: "Ага, процедура МойКод ищет иновойсы заказчика XYZ... Я знаю, что все инвойсы этого заказчика сгруппированы вместе и находятся в оперативной памяти, локально приписанной к ядру номер 2 на ноде номер 3. Поручаю дальнейшую работу именно этому ядру. Готова к следующему заданию..."

Щасс... готова она. Вы же строго последовательно прогоняете транзакции,

Ну да - именно готова к следующему заданию... Выполнение процедур сериализуется на уровне ядра, а не всей системы. То есть, если в кластере, например, 24 ядра, то это значит, что 24 процедуры могут выполняться одновременно, остальные ждут своей очереди. Система асинхронно "разбрасывает" запросы по очередям ядер - после того как запрос направлен определенному ядру для выполнения, система готова принимать следующее задание от клиента



iv_an_ruтак что к времени работы транзакции запросто прибавляются два времени IPC и связанные с ними противные мьютексы на читателях и писателях.

Я, честно говоря, не понимаю зачем коммуникация между процедурами вообще нужна. В общем случае, приходят одновременно два независимых запроса с двух независимых клиентов и конкурируют за доступ к данным - лок-менеджер умеет таким доступом управлять... Вы можете привести пример двух SQL запросов, потребовавшего от разработчика этих запросов кодирования мютекса?

iv_an_ruЧем дольше я думаю над вашей моделью обработки данных, тем более узкоспециальной она мне кажется.

У Вас есть конкретный пример OLTP задачи, с которой Вы считаете VoltDB не может справиться по причине своей "узкоспециализированности"?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532500
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBУ Вас есть конкретный пример OLTP задачи, с которой Вы считаете VoltDB не может справиться по причине своей "узкоспециализированности"?Я подозреваю, хотя ещё не было времени проверить, что если сделать шаг в сторону от "самой удобной" OLTP, то производительность окажется хорошей, но не выдающейся. Интересно было бы посмотреть, скажем, на SQL-версию BSBM Explore and Update ( http://wifo5-03.informatik.uni-mannheim.de/bizer/berlinsparqlbenchmark/spec/index.html#usecase_explore_and_update ) . Там запросы и довольно правдоподобные, и простые, и составляющие на удивление пакостную смесь --- кто слишком хорошо выигрывает на update части, тот норовит завалиться на explore, и наоборот. Хотя на первый взгляд проблемам взяться неоткуда. "Ничто не предвещало беды в то теплое летнее утро: ни огромная кружка парного молока, только что из под коровы, ни свежесобранные пупырчатые огурцы с грядки..."
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532543
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru Но некорректность, IMHO, в мало обоснованном предположении, что выкидывание всех X,Y,Z со всеми их мьютексами не изменит статистики ожиданий на мьютексах в оставшемся коде.

Давайте попробуем сначала... Представьте что у Вас есть ящик с 2 процами, каждый по 4 ядра. На этом ящике всего 128ГБ памяти. Давайте представим, что мы поделили всю эту память между всеми ядрами - каждое ядро имеет свой собственный регион в 16ГБ. Теперь давайте возьмем таблицу инвойсов и разделим ее на несколько частей по имени заказчиков. Предположим, у нас всего 85 заказчиков, т.е, соответственно, таблица инвойсов разделена на 85 частей и каждая часть приписана к какому нибудь ядру; 5 ядер имеют по 11 "кусков" данных, 3 ядра - по 10. На наш ящик начинают приходить запросы - каждый требует доступа к инвойсу определенного заказчика, т.е доступ к только к определенной части данных, которая, соответственно, приписана к определенному ядру. Так как у нас всего 8 ядер, только 8 запросов исполняются одновременно, причем каждое из них работает только со своими собственными данными. Остальные запросы сидят в очередях - каждый в очереди на том ядре, которое имеет часть данных, необходимую запросу. В этом случае, никакого конкурентного доступа просто не существует.

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

Вероятно, нет необходимости начинать сначала, потому что чайников тут нет. Чего не хватает для предметного разговора, так это результатов общеупотребительных пузомерок индустриального качества. Когда в блоге voltdb-benchmarks обнаруживается пример "счётчик голосов зрителей на телеконкурсе каких-то там талантов", но не гуглится ни TPC-чего-нибудь, ни BSBM, ни ещё каких-то бенчмарок, по которым наработаны массивы данных для сравнения, восьмидесятое место voltDB в http://db-engines.com/en/ranking становится вполне объяснимым.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532569
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBУ Вас есть конкретный пример OLTP задачи, с которой Вы считаете VoltDB не может справиться по причине своей "узкоспециализированности"?Я подозреваю, хотя ещё не было времени проверить, что если сделать шаг в сторону от "самой удобной" OLTP, то производительность окажется хорошей, но не выдающейся. Интересно было бы посмотреть, скажем, на SQL-версию BSBM Explore and Update ( http://wifo5-03.informatik.uni-mannheim.de/bizer/berlinsparqlbenchmark/spec/index.html#usecase_explore_and_update ) . Там запросы и довольно правдоподобные, и простые, и составляющие на удивление пакостную смесь --- кто слишком хорошо выигрывает на update части, тот норовит завалиться на explore, и наоборот. Хотя на первый взгляд проблемам взяться неоткуда. "Ничто не предвещало беды в то теплое летнее утро: ни огромная кружка парного молока, только что из под коровы, ни свежесобранные пупырчатые огурцы с грядки..."


VoltDB - СУБД реляционная, не граф-СУБД. Соответственно, наш интерес - не SPARQL, а SQL. Более традиционные тесты для SQL нагрузки основаны на спецификациях TPC (Transaction Processing Counsel), в частности, TPC-C. Вкратце, суть теста сводится к эмулированию широко-используемых бизнес-транзакций (введение заказа, проверки статуса заказа и доставки, проверка наличия в складе и.т.д) и замерению пропускгой способности СУБД для соответствующих запросов. Детальную ТРС-С спецификацию Вы можете найти здесь: http://www.tpc.org/tpcc/spec/tpcc_current.pdf Исходный код для одного из наших тестовых стендов можно найти здесь: https://github.com/apavlo/h-store/tree/master/src/benchmarks/org/voltdb/benchmark/tpcc/
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532573
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBИсходный код для одного из наших тестовых стендов можно найти здесь: https://github.com/apavlo/h-store/tree/master/src/benchmarks/org/voltdb/benchmark/tpcc/
The TPC-C example runs a modified TPC-C benchmark.Я даже не буду разбираться после этого, что именно там "modified", потому что для сравнения с другими СУБД я должен сделать... что? Для каждой СУБД подкрутить бенчмарку в удобную для неё сторону? Или сделать что-то менее разрушительное? Я в растерянности.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532574
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBVoltDB - СУБД реляционная, не граф-СУБД. Соответственно, наш интерес - не SPARQL, а SQL.Кстати говоря, ни одна граф-СУБД ни одну серьёзную SPARQL-овую бенчмарку не выигрывала и в обозримом будущем не выиграет. Это просто потому, что создание движка соотвествующего качества требует таких инвестиций, которых не может обеспечить весь мировой рынок для всех граф-СУБД вместе взятых.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532585
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDB,

...восьмидесятое место voltDB в http://db-engines.com/en/ranking становится вполне объяснимым.

Это ж надо - рейтингов стало больше чем продуктов:) Даже не слышал о такой организации... Кстати, а какой рейтинг у их рейтинга? :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532590
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBИсходный код для одного из наших тестовых стендов можно найти здесь: https://github.com/apavlo/h-store/tree/master/src/benchmarks/org/voltdb/benchmark/tpcc/
The TPC-C example runs a modified TPC-C benchmark.Я даже не буду разбираться после этого, что именно там "modified", потому что для сравнения с другими СУБД я должен сделать... что? Для каждой СУБД подкрутить бенчмарку в удобную для неё сторону? Или сделать что-то менее разрушительное? Я в растерянности.

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

пропущено...
Я даже не буду разбираться после этого, что именно там "modified", потому что для сравнения с другими СУБД я должен сделать... что? Для каждой СУБД подкрутить бенчмарку в удобную для неё сторону? Или сделать что-то менее разрушительное? Я в растерянности.

Там дальше в тексте есть детали... В официальном тесте есть бизнес-транзакции, которые представляют заказ посланный на один склад, а выполненный на другом. Мы посчитали, что в век интернета (оригинальная ТРС-С спецификация вышла в 1988 году), сразу посылать заказ на "правильный" склад особого труда не составит (например, в вэб-сервере) и модифицировали эту часть теста таким образом, что заказ выполняется на том складе, на который он поступил. Кстати, в соответствии со ТРС-С спецификацией, это 10% всех транзакций. Но так как тест модифицирован, официальным он быть не может (с чем мы полностью согласны)Правильно ли я понимаю, что такая тривиальная вещь, как выполнение заказа, полученного на другом складе, продемонстрировала достаточно большую проблему, чтобы было решено пустить под нож репрезентативность результатов? Это не первый подобный случай, в той же BSBM полно отчётов, в которых даны отдельно цифры полного прогона и отдельно прогонов за вычетом такого-то запроса (и отчётов, в которых написано, что такие-то BI-запросы вообще отправили сервер в нирвану). Тем не менее, по каждому запросу каждого query mix-а доступны цифры, которые можно сравнивать для разных вендоров, для разных объёмов данных и т.п., и эти цифры были сняты либо с систем, доступных для аудита, либо вообще независимыми тестерами. Имееон эта верифицируемость воспроизводимых экспериментов и отличает индустриальные бенчмарки от поделок для внутреннего употребления.

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


Там дальше в тексте есть детали... В официальном тесте есть бизнес-транзакции, которые представляют заказ посланный на один склад, а выполненный на другом. Мы посчитали, что в век интернета (оригинальная ТРС-С спецификация вышла в 1988 году), сразу посылать заказ на "правильный" склад особого труда не составит (например, в вэб-сервере) и модифицировали эту часть теста таким образом, что заказ выполняется на том складе, на который он поступил. Кстати, в соответствии со ТРС-С спецификацией, это 10% всех транзакций. Но так как тест модифицирован, официальным он быть не может (с чем мы полностью согласны)

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

Я точных деталей уж и не упомню - все-таки 5 лет прошло с того теста... Но могу сказать, что даже на тот момент мы чувствовали, что некоторые бизнес-транзакции, как их описывала спецификация 20-летней давности, устарели. Некоторые вещи из того, что включено в ТРС-С спецификацию, сегодня лучше делаются за пределами СУБД. В том, что внесение изменение в некоторые транзакции в тест сработало в пользу H-Store архитектуры - так это, по моему мнению, только подтверждает что такая архитектура лучше приспособлена к современным реалиям в бизнес-транзакциям. Да и, по-большому счету, какая разница кто быстрее на определенном "синтетическом" бэнчмарке? Ведь более важный вопрос - может ли система обеспечить требуемую пропускную способность и надежность нагрузки, вызванной конкретными запросами продиктованными конкретным бизнес-процесом и сколько такое решение стоит . Для каких-то задач VoltDB - решение, а для каких-то - нет. Как говорится, на вкус и цвет - карандаши разные... :)

iv_an_ruКстати, у меня по этому продукту вопрос за вопросом так или иначе одним ребром упирается в IPC. Сходу вспоминаются распределённые транзакции, точная настройка партиционирования, тормоза на восстановлении после сбоя, поддержка нескольких маршрутов между двумя машинами кластера, латентности на IPC перед и после "неудобных" транзакций. И тут из стандартной бенчмарки вырезается как раз IPC-шный кусочек. Обидно, понимаешь.

Мне кажется, мы с Вами продолжаем теоретизировать и обсуждать какие-то абсолютно гипотетические проблемы... Разрешите мне повториться и задать Вам тот же самый практический вопрос, который я уже задавал: у Вас есть пример какой-нибудь конкретной OLTP задачи, которая, по Вашему мнению, не вписывается в архитектуру VoltDB?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532762
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBМне кажется, мы с Вами продолжаем теоретизировать и обсуждать какие-то абсолютно гипотетические проблемы... Разрешите мне повториться и задать Вам тот же самый практический вопрос, который я уже задавал: у Вас есть пример какой-нибудь конкретной OLTP задачи, которая, по Вашему мнению, не вписывается в архитектуру VoltDB?Так вот в том и проблема. Любая конкрентая задача, которая есть у меня под рукой, содержит хоть небольшую, но не нулевую долю аналитики. И хуже того, пролистав ТЗ вы скажете "это невозможно повторить со сравнимым качеством за разумное для экспериментальных целей время" --- и будете 100% правы. Поэтому остаются бенчмарки, которые лично я тихо ненавижу, но лучше которых для исследовательских целей ещё никто ничего не придумал. И тут облом. Новомодная BSBM вам не нравится, старомодная TPC-C тоже. Ну извините, больше популярных "более-менее OLTP" бенчмарок у меня под рукой нет. И пока сравнимых цифр нет, остальное остаётся милыми малополезными разговорами.

-----8<-----

В лохматом 1995 году OpenLink Virtuoso выпускалась как OLTP. Она и сейчас совсем не дурна в этой роли: если не убиваться ради круглой цифры в TPC-C, а просто "обеспечить требуемую пропускную способность и надежность нагрузки, вызванной конкретными запросами продиктованными конкретным бизнес-процесом", то цена лицензии приятно удивит.
Особенно если цена будет root@master:/etc/bind# apt-get install virtuoso-opensource
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
virtuoso-opensource-6.1 virtuoso-server virtuoso-vad-conductor virtuoso-vsp-startpage
Suggested packages:
virtuoso-vad-doc virtuoso-vad-demo virtuoso-vad-tutorial virtuoso-vad-rdfmappers virtuoso-vad-sparqldemo virtuoso-vad-syncml virtuoso-vad-bpel virtuoso-vad-isparql virtuoso-vad-ods
The following NEW packages will be installed:
virtuoso-opensource virtuoso-opensource-6.1 virtuoso-server virtuoso-vad-conductor virtuoso-vsp-startpage
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,084 kB of archives.
After this operation, 9,302 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Вот только "за время пути собака могла подрасти", и каждый юзер, довольный OLTP производительностью, просил не "ещё больше OLTP", а фенечки для OLAP, виртуальной схемы, 2pc, hosting languages и т.п. И мы соглашались на каждую следующую фенечку. Потому что писать узкоспециальную СУБД легко и просто, а вот найти потом узкоспециального покупателя --- тяжело. Как результат эволюции, последние лет пять Virtuoso стала "OLAP". Несколько внезапно для нас самих. Писали миддлварную СУБД, а юзеры решили, что мы написали OLAP :) Но простите, она же не потеряла ни одной единички в TPC-C? То есть, сидеть на трёхногой табуретке OLTP + миддлварь с виртуальной схемой + OLAP оказывается по всем параметрам лучше, чем на одном пике производительности в TPC-C?
Как-то сумбурно получилось, но тут уж извиняйте. Это жизнь такая сумбурная, а я как акын, что вижу --- то пою.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38532792
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruа вот найти потом узкоспециального покупателя --- тяжело.

VoltDB - возможно есть стнадартное решение , которое позволяет вытаскивать оперативно из VoltDB данные для real-Time DWH

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

VoltDB - возможно есть стнадартное решение , которое позволяет вытаскивать оперативно из VoltDB данные для real-Time DWH

(как компенсирующее решение ? )

Есть готовые переходники для экспортирования в Вертику и Нетиззу.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533645
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBessbase.ruпропущено...


VoltDB - возможно есть стнадартное решение , которое позволяет вытаскивать оперативно из VoltDB данные для real-Time DWH

(как компенсирующее решение ? )

Есть готовые переходники для экспортирования в Вертику и Нетиззу.Real-Time DWH это не "экспортирование"
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533654
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBМне кажется, мы с Вами продолжаем теоретизировать и обсуждать какие-то абсолютно гипотетические проблемы... Разрешите мне повториться и задать Вам тот же самый практический вопрос, который я уже задавал: у Вас есть пример какой-нибудь конкретной OLTP задачи, которая, по Вашему мнению, не вписывается в архитектуру VoltDB?Так вот в том и проблема. Любая конкрентая задача, которая есть у меня под рукой, содержит хоть небольшую, но не нулевую долю аналитики. И хуже того, пролистав ТЗ вы скажете "это невозможно повторить со сравнимым качеством за разумное для экспериментальных целей время" --- и будете 100% правы. Поэтому остаются бенчмарки, которые лично я тихо ненавижу, но лучше которых для исследовательских целей ещё никто ничего не придумал. И тут облом. Новомодная BSBM вам не нравится, старомодная TPC-C тоже. Ну извините, больше популярных "более-менее OLTP" бенчмарок у меня под рукой нет. И пока сравнимых цифр нет, остальное остаётся милыми малополезными разговорами.

-----8<-----

В лохматом 1995 году OpenLink Virtuoso выпускалась как OLTP. Она и сейчас совсем не дурна в этой роли: если не убиваться ради круглой цифры в TPC-C, а просто "обеспечить требуемую пропускную способность и надежность нагрузки, вызванной конкретными запросами продиктованными конкретным бизнес-процесом", то цена лицензии приятно удивит.
Особенно если цена будет root@master:/etc/bind# apt-get install virtuoso-opensource
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
virtuoso-opensource-6.1 virtuoso-server virtuoso-vad-conductor virtuoso-vsp-startpage
Suggested packages:
virtuoso-vad-doc virtuoso-vad-demo virtuoso-vad-tutorial virtuoso-vad-rdfmappers virtuoso-vad-sparqldemo virtuoso-vad-syncml virtuoso-vad-bpel virtuoso-vad-isparql virtuoso-vad-ods
The following NEW packages will be installed:
virtuoso-opensource virtuoso-opensource-6.1 virtuoso-server virtuoso-vad-conductor virtuoso-vsp-startpage
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,084 kB of archives.
After this operation, 9,302 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Вот только "за время пути собака могла подрасти", и каждый юзер, довольный OLTP производительностью, просил не "ещё больше OLTP", а фенечки для OLAP, виртуальной схемы, 2pc, hosting languages и т.п. И мы соглашались на каждую следующую фенечку. Потому что писать узкоспециальную СУБД легко и просто, а вот найти потом узкоспециального покупателя --- тяжело. Как результат эволюции, последние лет пять Virtuoso стала "OLAP". Несколько внезапно для нас самих. Писали миддлварную СУБД, а юзеры решили, что мы написали OLAP :) Но простите, она же не потеряла ни одной единички в TPC-C? То есть, сидеть на трёхногой табуретке OLTP + миддлварь с виртуальной схемой + OLAP оказывается по всем параметрам лучше, чем на одном пике производительности в TPC-C?
Как-то сумбурно получилось, но тут уж извиняйте. Это жизнь такая сумбурная, а я как акын, что вижу --- то пою.

Как это - "как результат эволюции, последние лет пять Virtuoso стала "OLAP"? То есть, подлежащая архитектура системы затачивалась под OLTP, а используется она как OLAP? Или система с самого начала как гибрид задумывалась?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533674
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinVoltDBпропущено...


Есть готовые переходники для экспортирования в Вертику и Нетиззу.Real-Time DWH это не "экспортирование"

Справедливо... Переходники обеспечивают периодическую загрузку в Вертику и Нетиззу короткими бэтчами через короткие интервалы времени, то есть назвать это сплошным потоком данных, конечно, нельзя. В качестве примера, некоторые из наших юзеров ставят VoltDB как OLTP front-end систему перед аналитической Вертикой - инжестают рил-тайм данные в VoltDB (запись-за-записью, а не в бэтче), модифицируют, если нужно (всякий там data enrichment), потом сливают мелкими бэтчами (но часто) в Вертику. При этом аналитический клиент может слать читательское запросы через JDBC одновременно в Волт, и Вертику, то есть результат может включать данные из обоих баз
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533680
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у меня есть интересная статистическая задачка, которую мы гоняем на MySQL в MyISAM'е на одной ноде с "индексы на SSD, данные на SATA"... Смысл вот в чем:
На вход идут специальные логи раз в 15 минут средний лог:
Код: sql
1.
2.
$ zcat event.log-1390320001.gz | wc
2475700 2769512 899138316

То есть 2,5КК строчек и 900Мб распакованного размера.

Одна запись имеет где-то 7 уникальных измерений и порядка 5 линейных параметров. Что мы делаем - Мы берем все попавшиеся варианты измерений и складываем. В среднем получается где-то 300-400К записей за 15 минут. Потом они агрегируются в часы, дни и т.д. Дальше мы строим графики по мере необходимости. В среднем нам надо где-то 1 процент от всех данных (99% не будут выбраны никогда). Сейчас база весит 1,5 Тб.

Насколько я понимаю - это как-раз ваш юз кейс.

В связи с этим вопросы:
1) Как у вас там с ACID'ом? (Я знаю что у MyISAM с ACID'ом проблемы)
2) Как у вас со скоростью работы на одной ноде? (Реплика есть, но она принципиально не пользуется, так как на селектах и так довольно быстро работает).
...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533683
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruпропущено...
Так вот в том и проблема. Любая конкрентая задача, которая есть у меня под рукой, содержит хоть небольшую, но не нулевую долю аналитики. И хуже того, пролистав ТЗ вы скажете "это невозможно повторить со сравнимым качеством за разумное для экспериментальных целей время" --- и будете 100% правы. Поэтому остаются бенчмарки, которые лично я тихо ненавижу, но лучше которых для исследовательских целей ещё никто ничего не придумал. И тут облом. Новомодная BSBM вам не нравится, старомодная TPC-C тоже. Ну извините, больше популярных "более-менее OLTP" бенчмарок у меня под рукой нет. И пока сравнимых цифр нет, остальное остаётся милыми малополезными разговорами.

-----8<-----

В лохматом 1995 году OpenLink Virtuoso выпускалась как OLTP. Она и сейчас совсем не дурна в этой роли: если не убиваться ради круглой цифры в TPC-C, а просто "обеспечить требуемую пропускную способность и надежность нагрузки, вызванной конкретными запросами продиктованными конкретным бизнес-процесом", то цена лицензии приятно удивит.
Особенно если цена будет пропущено...

Вот только "за время пути собака могла подрасти", и каждый юзер, довольный OLTP производительностью, просил не "ещё больше OLTP", а фенечки для OLAP, виртуальной схемы, 2pc, hosting languages и т.п. И мы соглашались на каждую следующую фенечку. Потому что писать узкоспециальную СУБД легко и просто, а вот найти потом узкоспециального покупателя --- тяжело. Как результат эволюции, последние лет пять Virtuoso стала "OLAP". Несколько внезапно для нас самих. Писали миддлварную СУБД, а юзеры решили, что мы написали OLAP :) Но простите, она же не потеряла ни одной единички в TPC-C? То есть, сидеть на трёхногой табуретке OLTP + миддлварь с виртуальной схемой + OLAP оказывается по всем параметрам лучше, чем на одном пике производительности в TPC-C?
Как-то сумбурно получилось, но тут уж извиняйте. Это жизнь такая сумбурная, а я как акын, что вижу --- то пою.

Как это - "как результат эволюции, последние лет пять Virtuoso стала "OLAP"? То есть, подлежащая архитектура системы затачивалась под OLTP, а используется она как OLAP? Или система с самого начала как гибрид задумывалась?А что такого может быть в приличном OLTP-сервере, что помешало бы приличному OLAP-серверу? Хорошая работа с дисками? Хорошая работа с сетью? Хорошие диспетчеры блоков памяти? ...больших объёмов виртпамяти? ...нитей/файберов? Хорошие драйверы ODBC/UDBC/IODBC/чего-ещё там? Возможно, это из OLAP в OLTP эволюционировать было бы менее удобно, не знаю :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533685
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBПереходники обеспечивают периодическую загрузку в Вертику и Нетиззу короткими бэтчами через короткие интервалы времени, то есть назвать это сплошным потоком данных, конечно, нельзя. В качестве примера, некоторые из наших юзеров ставят VoltDB как OLTP front-end систему перед аналитической Вертикой - инжестают рил-тайм данные в VoltDB (запись-за-записью, а не в бэтче), модифицируют, если нужно (всякий там data enrichment), потом сливают мелкими бэтчами (но часто) в Вертику. При этом аналитический клиент может слать читательское запросы через JDBC одновременно в Волт, и Вертику, то есть результат может включать данные из обоих баз

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


Как это - "как результат эволюции, последние лет пять Virtuoso стала "OLAP"? То есть, подлежащая архитектура системы затачивалась под OLTP, а используется она как OLAP? Или система с самого начала как гибрид задумывалась?А что такого может быть в приличном OLTP-сервере, что помешало бы приличному OLAP-серверу? Хорошая работа с дисками? Хорошая работа с сетью? Хорошие диспетчеры блоков памяти? ...больших объёмов виртпамяти? ...нитей/файберов? Хорошие драйверы ODBC/UDBC/IODBC/чего-ещё там? Возможно, это из OLAP в OLTP эволюционировать было бы менее удобно, не знаю :)

Не то что бы "помешало", но OLTP и OLAP оптимизируются по-разному

О тенденции разделения гибридных OLTP/OLAP систем на специализированные


Как результат такой тенденции, существует специализированная 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 - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533700
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneВ среднем получается где-то 300-400К записей за 15 минут. Потом они агрегируются в часы, дни и т.д. Дальше мы строим графики по мере необходимости. В среднем нам надо где-то 1 процент от всех данных (99% не будут выбраны никогда). Сейчас база весит 1,5 Тб.

Насколько я понимаю - это как-раз ваш юз кейс.Это и наш юз кейс. Свежие цифры по загрузке TPC-H, точнее RDF-H, на одной машине с четырьмя дисками: TPC-H 100G dataset (600M order lines и т.д.), sustained rate загрузки --- 270К RDF-ных фактов в секунду. У вас 12 колонок вместо четырёх, зато без словарей --- давайте не будем про словари, щедро поделим скорость на три и пусть будет 90К строк в секунду. Логи делать незачем, проще грузить "внаглую" и на некоторое время оставлять исходные файлы. В результате мы максимум за пять секунд закидываем очередную 15-минутную порцию, и потом без помех делаем с данными всё, что душе угодно.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533704
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruпропущено...
А что такого может быть в приличном OLTP-сервере, что помешало бы приличному OLAP-серверу? Хорошая работа с дисками? Хорошая работа с сетью? Хорошие диспетчеры блоков памяти? ...больших объёмов виртпамяти? ...нитей/файберов? Хорошие драйверы ODBC/UDBC/IODBC/чего-ещё там? Возможно, это из OLAP в OLTP эволюционировать было бы менее удобно, не знаю :)

Не то что бы "помешало", но OLTP и OLAP оптимизируются по-разному

О тенденции разделения гибридных OLTP/OLAP систем на специализированные


Как результат такой тенденции, существует специализированная 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 - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533722
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBAlexander Ryndinпропущено...
Real-Time DWH это не "экспортирование"

Справедливо... Переходники обеспечивают периодическую загрузку в Вертику и Нетиззу короткими бэтчами через короткие интервалы времени, то есть назвать это сплошным потоком данных, конечно, нельзя. В качестве примера, некоторые из наших юзеров ставят VoltDB как OLTP front-end систему перед аналитической Вертикой - инжестают рил-тайм данные в VoltDB (запись-за-записью, а не в бэтче), модифицируют, если нужно (всякий там data enrichment), потом сливают мелкими бэтчами (но часто) в Вертику. При этом аналитический клиент может слать читательское запросы через JDBC одновременно в Волт, и Вертику, то есть результат может включать данные из обоих базМикробатчи - это проблема самой вертики, а не VoltDB. Они нужны, потому что Real-Time репликация это OLTP, а Vertica, не смотря на все хитрости, не предназначена для OLTP. Поэтому OLTP-операции объединяют в пачки (батчи) и грузят их раз 10-100-1000 секунд

Со стороны VoltDB Вы получите другую проблему. Допустим, прошло 10 минут. За это время на так полюбившихся Вам warehouse изменилось количество 100 товаров из 100 млн. Ну или 1 счетчика из миллиарда. Как вы поймете, какие данные изменились для обновления Vertica?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533725
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneВот у меня есть интересная статистическая задачка, которую мы гоняем на MySQL в MyISAM'е на одной ноде с "индексы на SSD, данные на SATA"... Смысл вот в чем:
На вход идут специальные логи раз в 15 минут средний лог:
Код: sql
1.
2.
$ zcat event.log-1390320001.gz | wc
2475700 2769512 899138316

То есть 2,5КК строчек и 900Мб распакованного размера.

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

WarstoneОдна запись имеет где-то 7 уникальных измерений и порядка 5 линейных параметров. Что мы делаем - Мы берем все попавшиеся варианты измерений и складываем. В среднем получается где-то 300-400К записей за 15 минут.

Я не совсем понял... Вы имеете ввиду, что из каждой строчки Вы достаете около 12 атрибутов (7+5) и так как у вас 2.5К строк в бэтче, всего получается около 300-400К элементов данных, каждый из них должен быть записан в таблицу базу как отдельная запись?

WarstoneПотом они агрегируются в часы, дни и т.д. Дальше мы строим графики по мере необходимости. В среднем нам надо где-то 1 процент от всех данных (99% не будут выбраны никогда). Сейчас база весит 1,5 Тб.

Так как записи вставляются через вызов сохраненной процедуры написанной в JAVA, внутри такой процедуры Вы можете делать дополнительные трансформации. Например, Вы передаете в процедуру вашу запись из лог-файла, внутри процедуры в JAVA-коде не только делаете INSERT самой записи в ее таблицу, но и вытаскиваете из этой записи все необходимые атрибуты и разбрасываете их по разным таблицам, и может быть даже UPDATE какую нибудь другую таблицу с бегущими суммами или там счетчиками разными. Вся описанная сохраненная процедура содержащие несколько таких INSERT и UPDATE - это одна ACID транзакция и, соответственно, комитается или откатывается целиком.

WarstoneНасколько я понимаю - это как-раз ваш юз кейс.

Может быть... Я бы хотел по-лучше понять задачу - пока я не совсем понимаю зачем нужна OLTP, если данные приходят в бэтчах и при этом записи в каждом бэтче статические, т.е не изменяются... Не проще ли написать какой-нибудь загрузчик, который читает из свежего куска лог-файла, достает нужные данные, строит другой бэтч и затем вставляет его в аналитическую базу?

WarstoneВ связи с этим вопросы:
1) Как у вас там с ACID'ом? (Я знаю что у MyISAM с ACID'ом проблемы)

Поддерживаем

Warstone2) Как у вас со скоростью работы на одной ноде? (Реплика есть, но она принципиально не пользуется, так как на селектах и так довольно быстро работает) ...

Один нод - в общем, не проблема... Но так как VoltDB полностью в памяти, а у Вас 1.5ТБ данных, нод может понадобиться очень уж большой :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533726
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneОдна запись имеет где-то 7 уникальных измерений и порядка 5 линейных параметров. Что мы делаем - Мы берем все попавшиеся варианты измерений и складываем. В среднем получается где-то 300-400К записей за 15 минут. Потом они агрегируются в часы, дни и т.д. Дальше мы строим графики по мере необходимости. В среднем нам надо где-то 1 процент от всех данных (99% не будут выбраны никогда). Сейчас база весит 1,5 Тб.

Насколько я понимаю - это как-раз ваш юз кейс.Это классический пример задачи для Complex Event Processing. Посмотрите, если интересно :)
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533743
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinVoltDBпропущено...


Справедливо... Переходники обеспечивают периодическую загрузку в Вертику и Нетиззу короткими бэтчами через короткие интервалы времени, то есть назвать это сплошным потоком данных, конечно, нельзя. В качестве примера, некоторые из наших юзеров ставят VoltDB как OLTP front-end систему перед аналитической Вертикой - инжестают рил-тайм данные в VoltDB (запись-за-записью, а не в бэтче), модифицируют, если нужно (всякий там data enrichment), потом сливают мелкими бэтчами (но часто) в Вертику. При этом аналитический клиент может слать читательское запросы через JDBC одновременно в Волт, и Вертику, то есть результат может включать данные из обоих базМикробатчи - это проблема самой вертики, а не VoltDB. Они нужны, потому что Real-Time репликация это OLTP, а Vertica, не смотря на все хитрости, не предназначена для OLTP. Поэтому OLTP-операции объединяют в пачки (батчи) и грузят их раз 10-100-1000 секунд

Со стороны VoltDB Вы получите другую проблему. Допустим, прошло 10 минут. За это время на так полюбившихся Вам warehouse изменилось количество 100 товаров из 100 млн. Ну или 1 счетчика из миллиарда. Как вы поймете, какие данные изменились для обновления Vertica?Кстати, а как поживают частичные индексы в VoltDB? Вот хочу я отметку времени последнего изменения на каждом товаре, для закидывания лопатой в аналитическую базу, но не хочу, чтоб у меня был гигантский индекс, хочу держать в нём только свежачок, и подчищать старьё после каждой лопаты. Я могу так?
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533750
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Alexander Ryndin]VoltDBпропущено...


Справедливо... Переходники обеспечивают периодическую загрузку в Вертику и Нетиззу короткими бэтчами через короткие интервалы времени, то есть назвать это сплошным потоком данных, конечно, нельзя. В качестве примера, некоторые из наших юзеров ставят VoltDB как OLTP front-end систему перед аналитической Вертикой - инжестают рил-тайм данные в VoltDB (запись-за-записью, а не в бэтче), модифицируют, если нужно (всякий там data enrichment), потом сливают мелкими бэтчами (но часто) в Вертику. При этом аналитический клиент может слать читательское запросы через JDBC одновременно в Волт, и Вертику, то есть результат может включать данные из обоих баз

Alexander RyndinМикробатчи - это проблема самой вертики, а не VoltDB. Они нужны, потому что Real-Time репликация это OLTP, а Vertica, не смотря на все хитрости, не предназначена для OLTP. Поэтому OLTP-операции объединяют в пачки (батчи) и грузят их раз 10-100-1000 секунд

Абсолютно правильно - Vertica разработана как аналитическая система, а не OLTP. Она поддерживает trickle-loading. Причем, такой бэтч сидит в WOS в строчном формате до тех пор пока его tuple-mover в колоночный формат не переведет и в ROS не бросит; таким образом если у tuple-mover периодичность небольшая, данные в WOS накапливаются и запросы, у которых уровень изоляции требует доступа к данным и в WOS и в ROS, могут быть сравнительно медленными. Но для бэтчевой загрузки в "почти" настоящем времени - VoltDB оборудована отлично.

Alexander RyndinСо стороны VoltDB Вы получите другую проблему. Допустим, прошло 10 минут. За это время на так полюбившихся Вам warehouse изменилось количество 100 товаров из 100 млн. Ну или 1 счетчика из миллиарда. Как вы поймете, какие данные изменились для обновления Vertica?

У них философия другая - пока запись может быть каким-то образом модифицирована, они эту запись в OLTP держат, как только запись становится статической - они ее в Vertica переводят. Например, ордер посылается на рынок - какое то время он может модифицироваться, но как только он выполнен или отменен, дальнейших модификаций быть не может, т.е он переводится в OLAP субсистему
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533761
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinWarstoneОдна запись имеет где-то 7 уникальных измерений и порядка 5 линейных параметров. Что мы делаем - Мы берем все попавшиеся варианты измерений и складываем. В среднем получается где-то 300-400К записей за 15 минут. Потом они агрегируются в часы, дни и т.д. Дальше мы строим графики по мере необходимости. В среднем нам надо где-то 1 процент от всех данных (99% не будут выбраны никогда). Сейчас база весит 1,5 Тб.

Насколько я понимаю - это как-раз ваш юз кейс.Это классический пример задачи для Complex Event Processing. Посмотрите, если интересно :)

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

Да нет - никто не запрещает хранить одну и ту же запись в двух местах - и в строчном хранилище, и в колоночном. И иметь один "универсальный" оптимизатор тоже возможно. Вертика, кстати, так и делает - у них есть WOS и в ROS. Просто они свой строчный WOS под OLTP не затачивали, а сфокусировались на поддержке аналитических нагрузок в колоночном ROS. Но если копнуть поглубже, C-Store и Н-Store ведь очень друг друга дополняют
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38533794
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB Но для бэтчевой загрузки в "почти" настоящем времени - VoltDB оборудована отлично.

Опечаточка вышла... Но для бэтчевой загрузки в "почти" настоящем времени - Вертика оборудована отлично.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534525
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBОдин нод - в общем, не проблема... Но так как VoltDB полностью в памяти, а у Вас 1.5ТБ данных, нод может понадобиться очень уж большой :)А... То есть для больших задач ее использовать нельзя так как мы ограничены оперативкой. Ясно, спасибо. То есть переход с MyISAM на VoltDB для меня стоит поставить 10-15 серверов... Не, спасибо. Я как-нибудь так.

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

Надо будет мне Юз кейс сделать наш и погонять на Вертике. Кстати... что у вас с лицензированием?..
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534532
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBТак как записи вставляются через вызов сохраненной процедуры написанной в JAVAОй... Вечно тормозящая JAVA... Все, закапывайте. Никогда ее у нас не будет.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534539
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneДля меня VoltDB - мертвая технология, так как она требует ОЧЕНЬ больших затрат на железо.Вы не одиноки в этом мнении. И некоторые примеры на блоговом сайте VoltDB добавляют только удивление, но не восторгов. Скажем, подсчёт голосов за участников телепередачи "алло мы ищем таланты" --- очень тяжёлая, ответственная и критичная к честной ACID-ности задача. Счётчик лейкоцитов с реактивным двигателем.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534557
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warstoneiv_an_ru,

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

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

Ну мне для тестов надо, насколько я понял, очень мало... Хост будет 1 (не готовы несколько нод под это дело отдавать), а что есть виртуальная схема?Это возможность выполнить ATTACH TABLE <table_name> FROM <datasource> AS <local_alias>, после чего использовать таблицу с соседнего оракла/mssql/и т.п. в запросах наравне с таблицами, которые хранятся локально.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534977
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru...подсчёт голосов за участников телепередачи "алло мы ищем таланты" --- очень тяжёлая, ответственная и критичная к честной ACID-ности задача. Счётчик лейкоцитов с реактивным двигателем.

Да нет, ничего тяжелого в такой задаче нет - это ведь приложение-пример для демонстрации базовых концепций... Своего рода "Hello, world!", только для OLTP СУБД. Согласен, это, конечно, не Virtuoso-вские примеры про Принца Гарри из Уэльса, а скучный подсчёт голосования участников телепередачи, но для целей демонстрации OLTP - задачка вполне подходящая...

PS. Я, кстати, против примеров про принца и его семейство - в хорошом смысле... Понимаю, что онтологию юзеру на пальцах объяснить тяжело - тоже своего рода "Hello, world!" пример нужен.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38534997
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstoneVoltDBОдин нод - в общем, не проблема... Но так как VoltDB полностью в памяти, а у Вас 1.5ТБ данных, нод может понадобиться очень уж большой :)А... То есть для больших задач ее использовать нельзя так как мы ограничены оперативкой. Ясно, спасибо. То есть переход с MyISAM на VoltDB для меня стоит поставить 10-15 серверов... Не, спасибо. Я как-нибудь так.

Ну основную мысль я услышал. Все в памяти. Дальше не интересно. Для меня VoltDB - мертвая технология, так как она требует ОЧЕНЬ больших затрат на железо.

В Вашем случае, задача - не высоко-производительная OLTP, а бэтчевая загрузка и аналитика. Бэтчи по 300-400к записей каждые 15-минут - не должно быть проблемой ни в MyISAM, ни в Virtuoso. VoltDB Вашему приложению не нужен.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38536176
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBВопросы который был недавно был получен в одной из предыдущих групп ( http://www.sql.ru/forum/762473-8/voltdb-neskolko-millionov-tranzakciy-v-sekundu)

Как происходит увеличение размера кластера в 2 раза? Если это возможно вообще.

Абсолютно возможно. Так как архитектура кластера shared-nothing, масштабируемость СУБД практически линейна. То есть, при увеличении кластера в 2 раза, общая пропускная способность системы должна увеличиться соответственно.

VoltDBВозможна ли репликация средствами БД в пределах нескольких ДЦ по WAN?

Да, такая функциональность реализована. Хотя из моего личного опыты с большими системами (не VoltDB), в некоторых случаях более эффективно дублировать нагрузку в нескольких ДЦ, чем реплицировать, (т.е приложение пишет в несколько ДЦ в параллели, если позволяет топология). Но это дело вкуса...

VoltDBВ k-safety какое максимально возможное k и какова политика размещения копий?

Максимально теоретически возможное К - это количество нодов в кластере, т.е если все ноды кроме одного одновременно упали, база выживет. Но я про такую конфигурацию в реальных приложениях никогда не слышал :) Обычно, приложения требуют или К+1 (т.е если один нод упал, то база жива и продолжает нормально функционировать на оставшихся нодах), или К+2 (т.е защита на случай, если пока первый упавший нод чинится, второй, не дай бог, падает)

В общем, идея К-защиты в чем-то, в принципе, близка к Reundant Array of Inexpensive Drives (RAID) с той разницей, что вместо дисков в массиве используются ноды в кластере. Как и в RAID, с увеличением уровня защиты, общая производительность системы уменьшается.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38536217
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBМаксимально теоретически возможное К - это количество нодов в кластере, т.е если все ноды кроме одного одновременно упали, база выживет.Тут есть ньюанс. Предположим, что у нас есть 4 машины и k=2. Представим себе аварию сети, при которой одна пара машин (A и B) оказывается оторвана от другой (C и D). При отсутствии независимых дополнительных средств диагностики каждая пара решает, что две другие ноды умерли, и спокойно продолжает работать. Но если внешние подключения продолжаются ко всем четырём машинам, то состояние базы на A и B начинает расходиться с состоянием базы на C и D, и восстановление сети станет удивительным и незабываемым событием для админа --- стандартная процедура "взять бэкап и накатить логи" не поможет ничем, потому что два разных комплетка логов --- это так же плохо, как и ноль. Решений проблемы много, самое дешёвое я назвал "закон о ТСЖ": мастер объявляет кластер недееспособным, если в нём осталась ровно половина или меньше половины от общего числа машин. В этом состоянии кластер остаётся до тех пор, пока "половина плюс один" узел кластера не соединятся и не выберут себе нового мастера.

Если вам кажется, что таких аварий не бывает, то учтите, что большинство свитчей на 16 или 24 портов состоят из 8+1-портовых матриц, соединённых эдаким "внутренним свитчем". И если использование 4xGigE на раздельных свитчах такую угрозу снимает, то инфинибанд представлен как правило только одним портом на ящик.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38536223
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruVoltDBМаксимально теоретически возможное К - это количество нодов в кластере, т.е если все ноды кроме одного одновременно упали, база выживет.Тут есть ньюанс. Предположим, что у нас есть 4 машины и k=2. Представим себе аварию сети, при которой одна пара машин (A и B) оказывается оторвана от другой (C и D). При отсутствии независимых дополнительных средств диагностики каждая пара решает, что две другие ноды умерли, и спокойно продолжает работать. Но если внешние подключения продолжаются ко всем четырём машинам, то состояние базы на A и B начинает расходиться с состоянием базы на C и D, и восстановление сети станет удивительным и незабываемым событием для админа --- стандартная процедура "взять бэкап и накатить логи" не поможет ничем, потому что два разных комплетка логов --- это так же плохо, как и ноль. Решений проблемы много, самое дешёвое я назвал "закон о ТСЖ": мастер объявляет кластер недееспособным, если в нём осталась ровно половина или меньше половины от общего числа машин. В этом состоянии кластер остаётся до тех пор, пока "половина плюс один" узел кластера не соединятся и не выберут себе нового мастера.

Если вам кажется, что таких аварий не бывает, то учтите, что большинство свитчей на 16 или 24 портов состоят из 8+1-портовых матриц, соединённых эдаким "внутренним свитчем". И если использование 4xGigE на раздельных свитчах такую угрозу снимает, то инфинибанд представлен как правило только одним портом на ящик.

К-кластера имеют нечетное количество нодов.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38536226
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruпропущено...
Тут есть ньюанс. Предположим, что у нас есть 4 машины и k=2. Представим себе аварию сети, при которой одна пара машин (A и B) оказывается оторвана от другой (C и D). При отсутствии независимых дополнительных средств диагностики каждая пара решает, что две другие ноды умерли, и спокойно продолжает работать. Но если внешние подключения продолжаются ко всем четырём машинам, то состояние базы на A и B начинает расходиться с состоянием базы на C и D, и восстановление сети станет удивительным и незабываемым событием для админа --- стандартная процедура "взять бэкап и накатить логи" не поможет ничем, потому что два разных комплетка логов --- это так же плохо, как и ноль. Решений проблемы много, самое дешёвое я назвал "закон о ТСЖ": мастер объявляет кластер недееспособным, если в нём осталась ровно половина или меньше половины от общего числа машин. В этом состоянии кластер остаётся до тех пор, пока "половина плюс один" узел кластера не соединятся и не выберут себе нового мастера.

Если вам кажется, что таких аварий не бывает, то учтите, что большинство свитчей на 16 или 24 портов состоят из 8+1-портовых матриц, соединённых эдаким "внутренним свитчем". И если использование 4xGigE на раздельных свитчах такую угрозу снимает, то инфинибанд представлен как правило только одним портом на ящик.

К-кластера имеют нечетное количество нодов.Душевненько. Я вот сейчас пытаюсь вспомнить хоть одного нашего клиента, у которого в кластере было бы нечетное число нод больше единицы --- и не могу. На что только не посмотри --- оптовые скидки на оборудование идут по чётным числам; чётные ёмкости свичей, чётные вместимости корзин под вертикальные и тем более под горизонтальные блейды и т.п. И тут нате вам.

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


К-кластера имеют нечетное количество нодов.Душевненько. Я вот сейчас пытаюсь вспомнить хоть одного нашего клиента, у которого в кластере было бы нечетное число нод больше единицы --- и не могу. На что только не посмотри --- оптовые скидки на оборудование идут по чётным числам; чётные ёмкости свичей, чётные вместимости корзин под вертикальные и тем более под горизонтальные блейды и т.п. И тут нате вам.

Хотя, в чём-то идея здравая: хоть таким издевательским методом, а появляется шанс заначить ящик в холодный резерв. Купили 20 --- подняли 19 :)

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

Хотя, в чём-то идея здравая: хоть таким издевательским методом, а появляется шанс заначить ящик в холодный резерв. Купили 20 --- подняли 19 :)

Я не зная насчет скидок итд но могу Вам точно сказать, что К-кластера не мы придумалиПусть
нода 1 является бадди для 5 и 3
нода 2 является бадди для 6 и 4
нода 3 является бадди для 7 и 1
нода 4 является бадди для 8 и 2
нода 5 является бадди для 1 и 7
нода 6 является бадди для 2 и 8
нода 7 является бадди для 3 и 5
нода 8 является бадди для 4 и 6

Вот вам k=2 на вполне себе чётном N=8. Или k=3 N=8:

нода 1 является бадди для 5 и 3 и 2
нода 2 является бадди для 6 и 4 и 1
нода 3 является бадди для 7 и 1 и 4
нода 4 является бадди для 8 и 2 и 3
нода 5 является бадди для 1 и 7 и 6
нода 6 является бадди для 2 и 8 и 5
нода 7 является бадди для 3 и 5 и 8
нода 8 является бадди для 4 и 6 и 7
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38536238
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruВот вам k=2 на вполне себе чётном N=8. Или k=3 N=8:

Вообще-то, Вы правы - четное количество нодов в К-кластере возможно. Например, Вертика их поддерживает. Но у нас - нечетное количество нодов. Теоретически, любая конфигурация кластера уязвима и всегда можно придумать сценарий аварии, при котором есть вероятность остановки кластера - например, единственный свич на кластере упал, или дата центр потерял электропитание, а тех нескольких минут, которые система работает на аварийном питании не хватило, что бы дизельный генератор запустить, или вообще весь ДЦ затопило вместе с дизелями итд. Причем, это относится к любому кластеру, даже к дуплицированному. Если предохранять систему от таких сценариев важно, то нужен запасной ДЦ, и не только для СУБД, а для всего приложения.
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38537087
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB О тенденции разделения универсальных СУБД на специализированные


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


Таким образом, возникает противоречие: если система должна быть гибридной OLTP/OLAP, оптимизировать ее нужно было бы методами хранения данных, противоречащими друг другу. Но если разделить OLTP и OLAP, тогда каждая из-задач может быть оптимизирована отдельно и без последствий для другой задачи: OLTP с построчным хранилищем и OLAP с колоночным. Своего рода, случай когда 1+1>2
ну да. А в субд Greenplum тупо можно одни таблицы делать с поколоночным хранением, другие с построчным. Мало того, партиции внутри одной таблицы можно делать разными.

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

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

Может быть - я Greenplum сам не гонял, хотя и слышал хорошие отзывы. Если я не ошибаюсь, они все-таки разработаны как аналитическая система, а не гибрид. Если у Вас есть опыт OLTP приложения на Greenplum, поделитесь - было бы очень интересно узнать по-подробнее.


Там все тривиально, классическое POSTGRE строчное хранилище + append only колоночное, из названия понятно все уже...
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38537470
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDBiv_an_ruВот вам k=2 на вполне себе чётном N=8. Или k=3 N=8:

Вообще-то, Вы правы - четное количество нодов в К-кластере возможно. Например, Вертика их поддерживает.

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


Вообще-то, Вы правы - четное количество нодов в К-кластере возможно. Например, Вертика их поддерживает.

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


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


http://www.osp.ru/os/2011/04/13008790/
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38539753
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новая версия VoltDB 4.0

Хотел бы еще раз напомнить, что интерактивный вэбкаст с демонстрацией новой функциональности и Q&A сессией состоится в среду 29-го января, 2014 в 23:00 МСК.

Зарегистрироваться можно здесь: https://voltdb.webex.com/mw0401l/mywebex/default.do?nomenu=true&siteurl=voltdb&service=6&rnd=0.699249563374278&main_url=https://voltdb.webex.com/ec0701l/eventcenter/event/eventAction.do?theAction=detail&confViewID=1004752450&&&&siteurl=voltdb&utm_source=hs_email&utm_medium=email&utm_content=11602540&_hsenc=p2ANqtz-_BBBU6bkwv5zrx3pyQac0xUVHSsDS57ypeaNTqOPKj2jTt3wq-i905po16L1UN3p9arR-3akTqffRoQtJtsWH60BWSXw&_hsmi=11602540
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38539798
Фотография VoltDB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoltDB Новая версия VoltDB 4.0

Хотел бы еще раз напомнить, что интерактивный вэбкаст с демонстрацией новой функциональности и Q&A сессией состоится в среду 29-го января, 2014 в 23:00 МСК.

Зарегистрироваться можно здесь: https://voltdb.webex.com/mw0401l/mywebex/default.do?nomenu=true&siteurl=voltdb&service=6&rnd=0.699249563374278&main_url=https://voltdb.webex.com/ec0701l/eventcenter/event/eventAction.do?theAction=detail&confViewID=1004752450&&&&siteurl=voltdb&utm_source=hs_email&utm_medium=email&utm_content=11602540&_hsenc=p2ANqtz-_BBBU6bkwv5zrx3pyQac0xUVHSsDS57ypeaNTqOPKj2jTt3wq-i905po16L1UN3p9arR-3akTqffRoQtJtsWH60BWSXw&_hsmi=11602540

Если указанный линк не работает, то можно воспользоваться регистрацией здесь: https://voltdb.webex.com/mw0401l/mywebex/default.do?siteurl=voltdb
...
Рейтинг: 0 / 0
Open Source OLTP СУБД VoltDB - Вопросы архитектуры, разработки, внедрения и эксплуатации
    #38719272
fathersson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вопрос касающийся выполнения MP транзакций в кластере. В блоге Run Everywhere есть следующий текст.
авторVoltDB supports single-partition transactions, which as the name implies, run on only
one partition. VoltDB can run as many single partition transactions in parallel as
there are unique partitions. This enables high transaction throughput as well as
high transaction concurrency execution.

VoltDB also supports multi-partition transactions, which are transactions that involve
all unique partitions within the database. When a multi-partition transaction is
executing, it is the only transaction running in the database at that point in time.
Thus, you can run fewer multi-part transactions as compared to single-part transactions

Я знаю, что у каждой партиции есть свой Процессор, который обрабатывает запросы, касающиеся этой партиции. И есть всего один Процессор на весь кластер для MP транзакций (его работа сводиться к тому, чтобы распределить запрос по SP процессорам и затем агрегировать результат). И здесь возникает двоякое толкование.
С одной стороны я читаю текст так, что есть независимая обработка SP и MP транзакций: когда SP транзакций может быть много, MP транзакция может быть всего одна (в конце концов они стоят в очереди и есть всего один MP процессор).
С другой стороны можно понимать эти два абзаца, что когда работает MP процессор все SP транзакции приостанавливаются до тех пор, пока одна MP транзакция не будет выполнена.

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


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