Базы данных NewSQL

Введение

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

Еще одним преимуществом этого подхода является то, что методы доступа к данным не меняются, то есть к базе данных можно делать запросы на языке SQL. Как ответ на рост спроса на такие СУБД, на рынке появилась достаточное их количество. Среди них стоит отметить H-Store, VoltDB, NuoDB, а также MariaDB. Поэтому стоит рассмотреть эти СУБД, проверить действительно ли они могут решить проблемы.

Архитектура NewSQL

NewSQL — класс современных реляционных СУБД, которые стремятся совместить в себе преимущества NoSQL и транзакционные требования классических баз данных. Впервые термин был предложен в 2011 году Мэтью Аслетом, аналитиком 451 Group.

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

Основными из которых являются:

  •  Наиболее популярным подходом является создание принципиально новых платформ для хранения данных. Подобные решения проектируются с учетом распределенной архитектуры и многопоточность. Примерами данных систем являются: Spanner, Clustrix, OrientDB, VoltDB, MemSQL, SAP HANA, NUO DB
  •  Новые механизмы сохранения SQL. Этот тип решений предоставляет новые принципы хранения данных, которые масштабируются лучше чем, например, InnoDB. Примеры подобных решений: Infobright, TokuDB
  • Прозрачное масштабирования. Такие системы добавляют новый средний слой (middleware), призванный скрыть распределенную суть хранимых данных.

Первая в мире NewSQL СУБД H-Store

H-Store — экспериментальная система управления базами данных (СУБД), предназначенная для обработки онлайн транзакций, разработанная группой в Университете Брауна, Университет Карнеги-Меллона, Массачусетского технологического института и Йельского университета. Системы была разработана в 2007 году. Важности H-Store является то, что это первая реализация нового класса систем управления базами данных, так называемого NewSQL, которые обеспечивают высокую пропускную способность и высокую производительность систем NoSQL, но не отказываются от поддержки транзакций традиционных СУБД.

Такие системы способны масштабироваться горизонтально на нескольких машинах для повышения пропускной способности, в отличие от перехода к более мощным и дорогих машин для системы с одним узлом при вертикальном масштабировании. H-Store способна выполнить обработку транзакций с высокой пропускной способностью по сравнению с устаревшей архитектурой System-R подобных систем. Например, H-Store, была разработана в качестве параллельной, строчной основанной реляционных СУБД, которая работает на кластере без совместного использования ресурсов, главным узлом.

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

VoltDB

VoltDB — инновационная открытая СУБД, которая развивается под руководством Майкла Стоунбрейкера, одного из основателей проектов Ingres и PostgreSQL.

СУБД VoltDB поддерживает горизонтальное масштабирование и ориентирована на обработку транзакций в реальном времени (OLTP). На недорогом кластере, собранном своими силами из обычных серверов, СУБД способна обрабатывать миллионы транзакций в секунду. СУБД распространяется в двух вариантах: коммерческом, с обеспечением полноценной поддержки, и свободном «Community Edition».

VoltDB позволяет достичь уровня производительности NoSQL-систем, сохранив при этом поддержку выполнения запросов на языке SQL и гарантированную транзакционную целостность данных (ACID, атомарность и изолированность транзакций). Высокую производительность VoltDB обеспечивает непохожа на традиционные схема внутренней архитектуры, комбинирующий хранения данных в памяти концепции распределенной организации и разбивкой содержания БД по разделам (партициювання).

Производительность VoltDB увеличивается почти линейно при привлечении дополнительных серверов кластер. Каждый однонитевий раздел работает в автономном режиме, что исключает необходимость в блокировках и фиксации операций. Данные автоматически реплицируются внутри кластера, позволяет добиться высокой доступности и исключает необходимость ведения журнала. Все данные каждого узла полностью закешированы в оперативной памяти, обеспечивает максимальную пропускную способность и исключает необходимость буферизации. На одном сервере запускается несколько узлов VoltDB, каждый из которых привязывается к отдельному ядра CPU.

Для сохранения данных на диск используется концепция снапшот, отражающие срез данных, актуальных на момент создания снапшот. Работа с данными осуществляется через хранимые процедуры на языке Java, копии которых прикрепляются к каждому из разделов (ODBC / JDBC и прямое выполнение SQL-операторов для всей базы не поддерживается).

При выполнении запроса, затрагивает несколько разделов, в каждом из нужных разделов вызывается хранимая процедура, а затем результаты агрегируются. При оценке производительности в односерверных конфигурации СУБД VoltDB опередила традиционные OLTP СУБД в 45 раз, обработав 53 тысяч транзакций в секунду, в то время как другие СУБД на том же оборудовании могли выполнить только 1155 транзакций. На 12-узловом кластере СУБД VoltDB обеспечила выполнение 560 000 транзакций в секунду. При этом, VoltDB уже достаточно давно используется в промышленной эксплуатации и позиционируется как полностью стабильный продукт.

NuoDB

NuoDB это компания, которая разрабатывает распределенную база данных и продает «решение на основе облачных технологии реляционных баз данных». База данных NuoDB является SQL-совместимый и был назван «NoSQL». Он имеет архитектуру распределенного объекта, который работает в облаке, что означает, что, когда новый сервер добавляется для того, чтобы расширить масштабы базы данных, база данных работает быстрее.

База данных масштабируется без sharding. База данных распределяет задачи между несколькими процессорами, чтобы избежать узких мест. Используется peer-to-peer сообщение для распределения задач по узлам, и поддерживает ACID. База данных использует «многоуровневый подход — включает множества избыточных уровней трансакционных двигателей (Transaction Engine) и менеджеров хранения (SM)». Такой подход позволяет предсказуемо масштабировать данные в облаке. Добавление емкости базы данных может быть сделано путем добавления дополнительных ТО или SM. NuoDB может поддерживать Windows 7 +, Mac OS X 10.7+, Linux, Solaris x86, Amazon EC2 и Joyent.

MariaDB

MariaDB — реляционная система управления базами данных, созданная в начале 2009 как ответвление MySQL. MariaDB распространяется под свободной и открытой лицензией GNU GPL. Толчком для создания MariaDB стала неуверенность сообщества разработчиков и пользователей неопределенной судьбой и лицензией MySQL после ее приобретения Oracle. Проект MariaDB начала развивать компания Monty Program Ab, созданная Майклом Віденіусом, после его ухода из Sun Microsystems. В разработке MariaDB также принимали участие компании SkySQL и Percona, которые развивают собственные продукты и предоставляют сервис сопровождения и поддержки решений на базе MySQL. Проект поддерживает высокую степень совместимости с MySQL , включая «вставку» заменяемых возможностей бинарным эквивалентом библиотек и соответствием с существующим API и командами MySQL. Даже первая стабильная версия СУБД получила номер 5.2, будто продолжая линейку MySQL.

Заключение

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