NewSQL — это класс систем управления реляционными базами данных , которые стремятся обеспечить масштабируемость систем NoSQL для рабочих нагрузок онлайн-обработки транзакций (OLTP), сохраняя при этом гарантии ACID традиционной системы баз данных. [1] [2] [3] [4]
Многие корпоративные системы , обрабатывающие важные данные (например, финансовые системы и системы обработки заказов), слишком велики для обычных реляционных баз данных, но предъявляют требования к транзакциям и согласованности, которые непрактичны для систем NoSQL. [5] [6] Единственными вариантами, доступными ранее для этих организаций, были либо покупка более мощных компьютеров, либо разработка специального промежуточного программного обеспечения , которое распределяет запросы по обычным СУБД . Оба подхода связаны с высокими затратами на инфраструктуру и/или разработку. Системы NewSQL пытаются урегулировать конфликты.
Этот термин впервые был использован аналитиком 451 Group Мэтью Аслеттом в исследовательской работе 2011 года, в которой обсуждалось появление нового поколения систем управления базами данных. [5] Одной из первых систем NewSQL была система параллельных баз данных H-Store . [7] [8]
Типичные приложения характеризуются большими объемами транзакций OLTP . OLTP-транзакции;
Однако некоторые поддерживают приложения гибридной транзакционной/аналитической обработки (HTAP). Такие системы улучшают производительность и масштабируемость за счет исключения сложного восстановления или управления параллелизмом . [10]
Две общие отличительные особенности решений баз данных NewSQL заключаются в том, что они поддерживают онлайн-масштабируемость баз данных NoSQL и реляционную модель данных (включая согласованность ACID) с использованием SQL в качестве основного интерфейса. [11]
Системы NewSQL можно условно разделить на три категории: [2] [12]
Системы NewSQL используют различные внутренние архитектуры. В некоторых системах используется кластер узлов без общего доступа , в котором каждый узел управляет подмножеством данных. Они включают в себя такие компоненты, как управление распределенным параллелизмом , управление потоками и распределенную обработку запросов.
Вторая категория — это оптимизированные механизмы хранения для SQL . Эти системы предоставляют тот же программный интерфейс, что и SQL, но масштабируются лучше, чем встроенные механизмы.
Эти системы автоматически разделяют базы данных на несколько узлов, используя алгоритм консенсуса Raft или Paxos .