NewSQL — новый виток в эволюции BigData, забираем лучшее из SQL и NoSQL

в 13:13, , рубрики: acid, big data, Facebook, mysql, NewSQL, nosql, sql, Веб-разработка, метки: , , , ,

NewSQL

Начало

Сегодня очень легко наблюдать стремительный рост данных в интернете. Согласно одной оценке, данные, созданные в 2010, составляют приблизительно 1,200 ЭБ (1018 байт) и вырастут почти к 8,000 ЭБ к 2015 в Интернете, являющимся основным поставщиком данных к потребителю.

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

Пока программисты всего мира устраивают глобальные Holywars на тему: «SQL vs NoSQL», крупные компании, такие как Google и Facebook со своей миллиардной аудиторией всеми силами борются с нехваткой мощностей и предельными работами СУБД. Несмотря на появление новой технологии NoSQL, которая позволяла легко масштабировать данные, она так и не решила вопросы связанные с соответствием операций требованиям ACID (atomicity, consistency, isolation, durability — «атомарность, непротиворечивость, изолированность, долговечность») — стандарта, который гарантирует точность выполнения оперативных транзакций средствами СУБД, даже если работа системы прерывалась. На фоне всего этого компания VoltDB при поддержке нескольких других компаний, начали разрабатывать с чистого листа новый opensource проект под название NewSQL, сочетающий в себе лучшие стороны SQL и NoSQL.

SQL

image

В настоящее время, чтобы справиться с нагрузкой, которую создают 1000 миллионов пользователей, Facebook оперирует четырьмя тысячами экземпляров MySQL (используется шардинг, т.е. разнесение данных по серверам, отталкиваясь от определенного признака, например, первой буквы логина) и девятью тысячами установок memcached. Facebook даже ведёт специальную страницу MySQL@Facebook, где отслеживаются работы по поддержанию работы баз данных компании.

Широко известная проблема MySQL состоит в том, что эта СУБД никогда не предназначалась для обработки огромных объёмов данных и большого количества транзакций. Стоунбрейкер добавляет, что MySQL, как и другие основанные на языке SQL БД, потребляет слишком много ресурсов на накладные дополнительные операции БД (например, для поддержки многопоточности и поддержания корректного выполнения запросов в рамках ACID). Данные требования и расходы не мешают работе при небольших объёмах данных, но быстро начинают препятствовать нормальному функционированию при их увеличении.

NoSQL

image

Становящиеся популярными NoSQL-системы, такие как MongoDB и Cassandra, многие рассматривают как альтернативу, лишенную ограничений, которые присущи обычным реляционным СУБД.

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

Приветствуйте NewSQL

image

Технические характеристики решений NewSQL
  1. SQL как основной механизм для взаимодействия.
  2. ACID поддержка транзакций.
  3. Механизм управления без применения блокировок, таким образом считывающие данные в реальном времени не будут находится в противоречии с записывающими и таким образом не произойдет конфликт.
  4. Архитектура, обеспечивающая намного выше производительность узла, чем доступный из традиционных решений RDBMS.
  5. Удобное масштабирование, способное управлять большим количеством узлов, не перенося узкие места.

Разработчики проекта утверждают, что системы NewSQL приблизительно в 50 раз быстрее, чем традиционный OLTP RDBMS.

Архитектурный пример одного из решений NewSQL (dbShards).
image

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

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

  • Новые базы данных:NewSQL система разрабатывается полностью с нуля с целью достижения масштабируемости и производительности. Одним из ключевых факторов в повышении производительности делает не-диск (память) или новые виды дисков (флэш / SSD) первичные хранилища данных. Решения могут быть только программного обеспечения (VoltDB, NuoDB) или поддержка устройств (Clustrix, Translattice). Примеры разработок являются Clustrix, NuoDB и Translattice (коммерческие) и VoltDB, (Open Source).
  • Новый движок базы данных MySQL: MySQL — часть стека LAMP и используется в OLTP. Чтобы преодолеть проблемы масштабируемости MySQL, было создано ряд движков основанных на MySQL. Положительная сторона — использование интерфейса MySQL, но есть плохая сторона — не поддерживается миграция данных из других баз данных (включая старый MySQL). Примеры реализации — Xeround, GenieDB (коммерческие) TokuTek; и Akiban, MySQL Группа NDB и др. (opensource).
  • Прозрачное объединение в кластеры: Эти решения сохраняют базы данных OLTP в своем оригинальном виде, но обеспечивают особенность расширения, с прозрачной группировкой и гарантироующую масштабируемость. Другой подход должен обеспечить прозрачный sharding, чтобы также улучшить масштабируемость.БД Schooner MySQL, Continuent Tungsten и ScalArc следуют первому подходу, тогда как ScaleBase и dbShards следуют второму подходу. Оба подхода позволяют повторное использование существующих наборов и экосистемы, и избегают потребности переписать код или выполнить любые миграции данных. Примеры реализаций — ScalArc, Schooner MySQL, dbShards (коммерческий) ScaleBase; и Continuent Tungsten (opensource).

Вывод

Новое поколение систем управления информацией, которые носит название NewSQL, соответствует этой тенденции и ограничениям. NewSQL склонен для фирм, которые планируют:

  1. миграцию существующих приложений для адаптации к новым тенденциям роста объема данных
  2. разработку новых приложений на хорошо масштабируемых системах OLTP
  3. пологаясь на имеющиеся знания использования OLTP

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

Источники:
Проект NewSQL призван решить проблемы, с которыми столкнулся Facebook, используя MySQL
NewSQL берет все лучшее от мира SQL и NoSQL
http://www.linuxforu.com/2012/01/newsql-handle-big-data/
NoSQL is Out and NewSQL is In — Says Google (Google Spanner)

Перевод в некоторых местах может быть не корректен.
Мы с нетерпением ждем Ваших комментариев к этой вводной статье,

Автор: alexozon

Поделиться

* - обязательные к заполнению поля