NewSQL — класс реляционных СУБД, который совмещает привычный SQL и строгие ACID -транзакции классических баз (с горизонтальной масштабируемостью и производительностью, характерными для NoSQL)
Попытка убрать главный компромисс хранения данных:
Зачем нужен
Как работает
Под капотом транзакция проходит несколько этапов:
* Шард — диапазон строк таблицы, вынесенный на отдельную группу узлов; сами таблицы заранее разбиты на такие диапазоны по ключу шардирования
MVCC — каждая работает со своим снимком данных на момент старта, читающие не блокируют пишущих. Например, чтобы упорядочить транзакции по всему миру, Google Spanner использует
TrueTime — атомные часы и GPS-приёмники в каждом ЦОД с известной погрешностью.Перед коммитом транзакция ждёт, пока эта неопределённость не станет нулевой
Классификация NewSQL-систем
Выделяют два подхода к появлению NewSQL-систем:
Опираются на оперативную память (
in-memory) и быстрые накопители (SSD) для предельной скорости доступаНапример,
VoltDB (in-memory NewSQL-СУБД для OLTP-нагрузок реального времени), Расширяют зрелые СУБД (например, MySQL/MariaDB) новыми движками хранения и оптимизациями
Например,
Percona Server (оптимизированный форк MySQL), Apache ShardingSphere, MaxScale.Это не полноценный NewSQL: такие слои маршрутизируют запросы, но не дают распределённого ACID
Примеры СУБД
Горизонтальная масштабируемость, строгая согласованность и ACID-транзакции, совмещение OLTP- и OLAP-нагрузок; язык запросов —
YQL (диалект SQL)Когда применять
Когда НЕ стоит использовать
Плюсы и минусы
1. Кратко про NewSQL
2. Как выбрать NewSQL-СУБД для вашей компании
3. NewSQL: SQL никуда не уходит
4. NewSQL — новый виток в эволюции BigData
5. Сравнение производительности YDB, CockroachDB и YugabyteDB на бенчмарке YCSB
6. Разбираемся в типах баз данных
📚 Книги
1. Высоконагруженные приложения. Программирование, масштабирование, поддержка — Мартин Клеппман
#бд #sql


