NewSQL

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 11:41, 25 декабря 2018.

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

Причины появления NewSQL

Так как NewSQL появился для того, чтобы объединить в себе преимущества классических реляционных СУБД и возможности NoSQL-СУБД, то статью следует начать с рассмотрения особенностей этих типов СУБД.

Краткая характеристика классических реляционных СУБД

Реляционная система управления базами данных (RDBMS) — это программная система, обеспечивающая доступ к реляционной базе данных, изобретенной британским ученым из IBM Эдгаром Коддом. [Источник 2]

Программная система представляет собой набор программных приложений, которые могут использоваться для создания, обслуживания, управления и использования базы данных. «Реляционная база данных» - это база данных, структурированная по «реляционной» модели. Данные хранятся и представлены в табличном формате, организованном в строках и столбцах с одной записью в строке.[Источник 2]

Основные преимущества:

  • хорошая структуризация данных;
  • существование развитого математического аппарата для реляционной модели;
  • удовлетворение ACID;
  • невысокая производительность относительно NoSQL.

Основные недостатки:

  • относительная сложность разработки;
  • проблемы с горизонтальным масштабированием.

Краткая характеристика NoSQL-баз данных

NoSQL — термин, обозначающий ряд подходов, направленных на реализацию хранилищ баз данных, имеющих существенные отличия от моделей, используемых в традиционных реляционных СУБД с доступом к данным средствами языка SQL. Применяется к базам данных, в которых делается попытка решить проблемы масштабируемости и доступности за счёт атомарности и согласованности данных. Под термином NoSQL скрывается большое количество продуктов с абсолютно разными дизайнами и, иногда, при обсуждении разговор может идти о разных системах.[Источник 3]

Основные преимущества:

  • возможность горизонтального масштабирования;
  • высокая доступность;
  • высокая производительность;
  • репликация.

Основные недостатки:

  • небольшой функционал;[Источник 4]
  • недостаточная гибкость;[Источник 4]
  • немалое потребление ресурсов;[Источник 4]
  • необходимость специализированных знаний для работы с базой данных;[Источник 4]
  • удовлетворение ACID не гарантировано.

Обоснование необходимости появления NewSQL

Как показано выше, и у классических реляционных СУБД, и у NoSQL СУБД есть свои недостатки. Некоторые из них при учёте нынешних тенденций в развитии ИТ очень существенны (например, невозможность горизонтального масштабирования или неудовлетворение ACID). Поэтому предпочтительнее использовать СУБД нового типа, в котором эти недостатки будут устранены.

Почему именно NewSQL?

Относительно новая концепция NewSQL призвана объединить следующие преимущества вышеописанных типов СУБД:

  • SQL как основной механизм для взаимодействия;
  • удовлетворение ACID;
  • при управлении не применяется механизм блокировок – таким образом, исключается вероятность конфликта между записываемыми и считываемыми в реальном времени данными;
  • производительность узла СУБД на NewSQL намного выше, чем у традиционных РСУБД;
  • отсутствие проблем с масштабируемостью.

Такое решение может понравится всем: специалистам – потому что новая архитектура надежна и вместе с тем работает гораздо быстрее и производительнее, чем традиционные РСУБД, администраторам – потому что поддерживать работу такой распределенной системы гораздо проще; наконец, предпринимателям – потому что обеспечение работы распределенной системы в ее классическом понимании требует больших вложений – решив же отдать предпочтение CУБД на NewSQL, можно уберечь себя от лишних временных, денежных и даже кадровых затрат. А поскольку «общаться» c системой можно будет все на том же SQL, перейти на нее, по крайней мере, специалистам по работе с данными, будет не слишком трудно.

Классификация NewSQL

Классификация основана на различных подходах, принятых сохранить SQL интерфейс, а также решить масштабируемость и производительность, являющиеся проблемами традиционных решений OLTP.[Источник 5]

Новые базы данных

Основная масса БД NewSQL является in-memory БД. Главной особенностью таких БД является то, что они хранят основную массу данных не на жестких дисках, а в оперативной памяти. Разработчики уверены, что хранение данных на HDD, является одним их основных недостатков существующих БД, поскольку, самую высокую скорость обработки и получение данных обеспечит помещение их в ОЗУ. Недостаток ОЗУ на одном сервере, компенсируется кластером таких серверов из большого количества узлов. Так же в таких БД предусмотрено периодическое резервное копирование данных на жесткий диск, чтобы предотвратить их потерю в случае отказе сервера.[Источник 6]

Следовательно, NewSQL система разрабатывается полностью с нуля с целью достижения масштабируемости и производительности. Одним из ключевых факторов в повышении производительности является использование оперативной памяти или новых видов дисков (флэш-память/SSD), которые являются хранилищем первичных данных. Данное решение может осуществляться программно (VoltDB, NuoDB) либо на уровне железа (Clustrix, Inc., TransLattice).[Источник 6]

Новый движок базы данных MySQL

MySQL — часть стека LAMP и используется в OLTP. Чтобы преодолеть проблемы масштабируемости MySQL, было создано ряд движков основанных на MySQL. Положительная сторона — использование интерфейса MySQL, но есть и отрицательная сторона — не поддерживается миграция данных из других баз данных (включая старый MySQL). Примеры реализации — Xeround, GenieDB (коммерческие), Akiban и др. (opensource).[Источник 6]

Один из самых распространенных — TokuDB. Он использует индексы, расположенные на фрактальных деревьях. Они намного быстрее, чем индексы на В-деревьях, особенно при переполнении оперативной памяти, которое влечет за собой необходимость считывать их с жесткого диска.[Источник 6]

Прозрачное объединение в кластеры

Подразумевается применять кластеры SQL из нескольких физических узлов для хранения и обработки больших объемов данных. Хоть такой подход и оставляет БД OLTP в своем первоначальном виде, но позволят достичь масштабируемости и горизонтальную группировку. Все производственные СУБД объединяют в кластер. Они являются средним слоем (middleware), который перенаправляет запросы к нужным узлам (где хранятся данные), группирует данные и выдают единый результат. При таком подходе, для запросов существуют ограничения по использованию внешних ключей и джоинов.[Источник 6]

То есть, эти решения сохраняют базы данных OLTP в своем оригинальном виде, но обеспечивают особенность расширения, с прозрачной группировкой и гарантирующую масштабируемость. Другой подход должен обеспечить прозрачный sharding, чтобы также улучшить масштабируемость. СУБД SchoonerSQL, Continuent Clustering и ScalArc соответствуют первому подходу, тогда как ScaleBase и dbShards соответствуют второму подходу. Оба подхода позволяют повторное использование существующих наборов и экосистемы, и избегают потребность в переписывании кода или в выполнении любых миграций данных.[Источник 6]

Заключение

Специалисты в области хранения и обработки данных считают, что устоявшийся SQL в изначальном виде устарел, обладает большим количеством проблем и неоправданно усложнён. Тем более объектно-ориентированные СУБД уже давно общеприменимы. Поэтому сегодня, при создании какого-либо проекта, в большинстве случаев нет смысла выбирать СУБД типа, отличного от NewSQL.

Архитектурный пример

Для более полного ознакомления с NewSQL можно прочитать статью, в которой член команды "Одноклассники" рассказывает о том, как они переходили на NewSQL, о том как создавалась NewSQL СУБД C*One, о проблемах, с которыми они сталкивались и о их решениях.

См. также

Источники

  1. Википедия [Электронный ресурс]: NewSQL / Дата обращения: 23.12.2018. Режим доступа: NewSQL
  2. 2,0 2,1 Национальная библиотека им. Н. Э. Баумана [Электронный ресурс]: RDBMS (Relational Database Management System) / Дата обращения: 23.12.2018. Режим доступа: RDBMS
  3. Wikipedia [Электронный ресурс]: NoSQL / Дата обращения: 23.12.2018. Режим доступа: NoSQL
  4. 4,0 4,1 4,2 4,3 Национальная библиотека им. Н. Э. Баумана [Электронный ресурс]: NoSQL / Дата обращения: 23.12.2018. Режим доступа: NoSQL
  5. NewSQL — новый виток в эволюции BigData // Хабрахабр. [2017—2017]. Дата обновления: 12.10.2012. https://habrahabr.ru/post/154589/ (дата обращения: 15.11.2017).
  6. 6,0 6,1 6,2 6,3 6,4 6,5 NewSQL — новый виток в эволюции BigData // Хабрахабр. [2017—2017]. Дата обновления: 12.10.2012. https://habrahabr.ru/post/154589/ (дата обращения: 15.11.2017).