Представлена новая открытая СУБД VoltDB
26 мая 2010 года
Анонсирована новая открытая СУБД нового поколения - 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 удалось добиться благодаря использованию совершенно непохожей на традиционные схемы внутренней архитектуры (Архивная копия от 24 октября 2012 на Wayback Machine). Типичные современные OLTP СУБД используют те же приемы, что и 30 лет назад и очень трудно масштабируются при увеличении числа CPU или узлов в кластере. Исследование показало, что в таких СУБД более 90% времени тратится на такие операции, как ведение журнала, обеспечение блокировок, фиксацию изменений и управление буферизацией.
Суть архитектуры VoltDB в комбинации хранения всех данных в памяти с концепцией распределенной организации и разбиения БД по разделам (партицирование). СУБД VoltDB оптимизирована для работы на современных серверах, снабженных большим количеством ОЗУ и многоядерными CPU. Для сохранения данных на диск используется (Архивная копия от 18 октября 2011 на Wayback Machine) концепция снапшотов, отражающих срез данных, актуальных на момент создания снапшота. Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC/JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается). При выполнении запроса, затрагивающего несколько разделов, в каждом из нужных разделов вызывается хранимая процедура, а затем результаты агрегируются.
Основные элементы архитектуры VoltDB:
- Все данные постоянно держатся в ОЗУ, что обеспечивает максимальную пропускную способность и исключает необходимость буферизации;
- VoltDB распределяет данные и их SQL-обработчики по узлам, каждый из который привязан к своему процессорному ядру (на одном сервере запускается столько узлов VoltDB сколько ядер CPU);
- Каждый однопоточный раздел работает в автономном режиме, что исключает необходимость в блокировках и фиксации операций;
- Данные автоматически реплицируются внутри кластера, что позволяет добиться высокой доступности и исключает необходимость ведения журнала;
- Производительность VoltDB увеличивается почти линейно при добавлении дополнительных серверов в кластер.
Результаты измерения производительности:
- СУБД VoltDB обработала 53 тыс. транзакций в секунду на одном сервере, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций. При увеличении числа серверов до 12, кластер позволил выполнить 560 тыс транзакций в сек.
- Тестирование работы online-игры на 12-узловом кластере продемонстрировало производительность в 1.3 млн. транзакций в сек.
- При сравнении VoltDB с NoSQL-базами, оперирующими данными в виде ключ/значение, производительность VoltDB была на уровне или выше рассматриваемых систем.
Планы (Архивная копия от 18 мая 2012 на Wayback Machine) на будущее:
- Возможность изменения схемы БД на лету (сейчас для изменения структуры требуется остановка СУБД);
- Набор инструментов для мониторинга кластера;
- Интерфейс для доступа клиентов с использованием формата JSON;
- Увеличение производительности транзакции для выполнения которых необходимо привлечение данных из нескольких разделов;
- Расширение поддерживаемого синтаксиса SQL (сейчас поддерживаются только простейшие операции);
- Возможность автоматической замены сбойного узла на лету;
- Расширение возможностей по экспорту данных из БД;
- Поддержка WAN-репликации между территориально разделенными узлами;
- Возможность подключения новых узлов к кластеру на лету и вывод узлов без остановки кластера.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.