Представлена новая открытая СУБД VoltDB
- 04.06.10, 00:20
Анонсирована новая открытая СУБД нового поколения - VoltDB, ориентированная на обработку транзакций в реальном времени (OLTP) и продемонстрировавшая способность обрабатывать миллионы транзакций в секунду на недорогом кластере, собранном своими силами из обычных серверов. Проектирование и разработка VoltDB велась под руководством Майкла Стоунбрейкера (Mike Stonebraker), одного из основателей проектов Ingres и PostgreSQL. СУБД распространяется в двух вариантах: коммерческом, с обеспечением полноценной поддержки, и свободном "Community Edition". Исходные тексты доступны в рамках лицензии GPL.
Отмечено, что VoltDB опережает по производительности традиционные OLTP СУБД в односерверной конфигурации в 45 раз, но в отличие от высокопроизводительных БД проповедующих подход NoSQL, VoltDB поддерживает выполнение запросов на языке SQL и гарантирует транзакционную целостность данных (ACID, атомарность и изолированность транзакций). По заявлению разработчиков, пре-релиз VoltDB можно рассматривать как стабильный, он уже несколько месяцев используется в компании Getco, бизнес которой связан с электронными финансовыми торгами, и продемонстрировал непревзойденные показатели производительности и масштабируемости. Другим примером внедрения VoltDB являются online-игры студии Eonblast, по данным которой производительности при использовании VoltDB опережает классические решения на базе MySQL с кешированием в Memcached.
Невероятного на первый взгляд роста производительности в VoltDB удалось добиться благодаря использованию совершенно непохожей на традиционные схемы внутренней архитектуры. Типичные современные OLTP СУБД используют те же приемы, что и 30 лет назад и очень трудно масштабируются при увеличении числа CPU или узлов в кластере. Исследование показало, что в таких СУБД более 90% времени тратится на такие операции, как ведение журнала, обеспечение блокировок, фиксацию изменений и управление буферизацией.
Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределенной организации и разбиения БД по разделам (партицирование). СУБД VoltDB оптимизирована для работы на современных серверах, снабженных большим количеством ОЗУ и многоядерными CPU. Для сохранения данных на диск используется концепция снапшотов, отражающих срез данных, актуальных на момент создания снапшота. Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается). При выполнении запроса, затрагивающего несколько разделов, в каждом из нужных разделов вызывается хранимая процедура, а затем результаты агрегируются.
Основные элементы архитектуры VoltDB:
* Все данные постоянно держатся в ОЗУ, что обеспечивает максимальную пропускную способность и исключает необходимость буферизации;
* VoltDB распределяет данные и их SQL-обработчики по узлам, каждый из который привязан к своему процессорному ядру (на одном сервере запускается столько узлов VoltDB сколько ядер CPU);
* Каждый однопоточный раздел работает в автономном режиме, что исключает необходимость в блокировках и фиксации операций;
* Данные автоматически реплицируются внутри кластера, что позволяет добиться высокой доступности и исключает необходимость ведения журнала;
* Производительность VoltDB увеличивается почти линейно при добавлении дополнительных серверов в кластер.
Результаты измерения производительности:
* СУБД VoltDB обработала 53 тыс. транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций. При увеличении числа серверов до 12, кластер позволил выполнить 560 тыс транзакций в сек.
* Тестирование работы online-игры на 12-узловом кластере продемонстрировало производительность в 1.3 млн. транзакций в сек.
* При сравнении VoltDB с NoSQL-базами, оперирующими данными в виде ключ/значение, производительность VoltDB была на уровне или выше рассматриваемых систем.
Планы на будущее:
* Возможность изменения схемы БД на лету (сейчас для изменения структуры требуется остановка СУБД);
* Набор инструментов для мониторинга кластера;
* Интерфейс для доступа клиентов с использованием формата JSON;
* Увеличение производительности транзакции для выполнения которых необходимо привлечение данных из нескольких разделов;
* Расширение поддерживаемого синтаксиса SQL (сейчас поддерживаются только простейшие операции);
* Возможность автоматической замены сбойного узла на лету;
* Расширение возможностей по экспорту данных из БД;
* Поддержка WAN-репликации между территориально разделенными узлами;
* Возможность подключения новых узлов к кластеру на лету и вывод узлов без остановки кластера.
http://www.opennet.ru/opennews/art.shtml?num=26732
Отмечено, что VoltDB опережает по производительности традиционные OLTP СУБД в односерверной конфигурации в 45 раз, но в отличие от высокопроизводительных БД проповедующих подход NoSQL, VoltDB поддерживает выполнение запросов на языке SQL и гарантирует транзакционную целостность данных (ACID, атомарность и изолированность транзакций). По заявлению разработчиков, пре-релиз VoltDB можно рассматривать как стабильный, он уже несколько месяцев используется в компании Getco, бизнес которой связан с электронными финансовыми торгами, и продемонстрировал непревзойденные показатели производительности и масштабируемости. Другим примером внедрения VoltDB являются online-игры студии Eonblast, по данным которой производительности при использовании VoltDB опережает классические решения на базе MySQL с кешированием в Memcached.
Невероятного на первый взгляд роста производительности в VoltDB удалось добиться благодаря использованию совершенно непохожей на традиционные схемы внутренней архитектуры. Типичные современные OLTP СУБД используют те же приемы, что и 30 лет назад и очень трудно масштабируются при увеличении числа CPU или узлов в кластере. Исследование показало, что в таких СУБД более 90% времени тратится на такие операции, как ведение журнала, обеспечение блокировок, фиксацию изменений и управление буферизацией.
Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределенной организации и разбиения БД по разделам (партицирование). СУБД VoltDB оптимизирована для работы на современных серверах, снабженных большим количеством ОЗУ и многоядерными CPU. Для сохранения данных на диск используется концепция снапшотов, отражающих срез данных, актуальных на момент создания снапшота. Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается). При выполнении запроса, затрагивающего несколько разделов, в каждом из нужных разделов вызывается хранимая процедура, а затем результаты агрегируются.
Основные элементы архитектуры VoltDB:
* Все данные постоянно держатся в ОЗУ, что обеспечивает максимальную пропускную способность и исключает необходимость буферизации;
* VoltDB распределяет данные и их SQL-обработчики по узлам, каждый из который привязан к своему процессорному ядру (на одном сервере запускается столько узлов VoltDB сколько ядер CPU);
* Каждый однопоточный раздел работает в автономном режиме, что исключает необходимость в блокировках и фиксации операций;
* Данные автоматически реплицируются внутри кластера, что позволяет добиться высокой доступности и исключает необходимость ведения журнала;
* Производительность VoltDB увеличивается почти линейно при добавлении дополнительных серверов в кластер.
Результаты измерения производительности:
* СУБД VoltDB обработала 53 тыс. транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций. При увеличении числа серверов до 12, кластер позволил выполнить 560 тыс транзакций в сек.
* Тестирование работы online-игры на 12-узловом кластере продемонстрировало производительность в 1.3 млн. транзакций в сек.
* При сравнении VoltDB с NoSQL-базами, оперирующими данными в виде ключ/значение, производительность VoltDB была на уровне или выше рассматриваемых систем.
Планы на будущее:
* Возможность изменения схемы БД на лету (сейчас для изменения структуры требуется остановка СУБД);
* Набор инструментов для мониторинга кластера;
* Интерфейс для доступа клиентов с использованием формата JSON;
* Увеличение производительности транзакции для выполнения которых необходимо привлечение данных из нескольких разделов;
* Расширение поддерживаемого синтаксиса SQL (сейчас поддерживаются только простейшие операции);
* Возможность автоматической замены сбойного узла на лету;
* Расширение возможностей по экспорту данных из БД;
* Поддержка WAN-репликации между территориально разделенными узлами;
* Возможность подключения новых узлов к кластеру на лету и вывод узлов без остановки кластера.
http://www.opennet.ru/opennews/art.shtml?num=26732
1
Коментарі
Азмус
14.06.10, 00:52
вот когда ее поддержка в php появиться, и хотя бы полноценная поддержка SQL95 вот тогда о ней можно будет говорить...
а пока она такая быстрая потому что ничего не умеет... не обманывайте людей жеж.
Гість: Malef(banned)
24.06.10, 00:55
@Все данные постоянно держатся в ОЗУ, что обеспечивает максимальную пропускную способность и исключает необходимость буферизации;@
нн-н-н-н-дааа)))