Распределенный SQL
Распределенная база данных SQL — это единая реляционная база данных , которая реплицирует данные на несколько серверов. Распределенные базы данных SQL строго согласованы, и большинство из них поддерживают согласованность между стойками, центрами обработки данных и глобальными сетями, включая зоны доступности облака облака и географические зоны . Распределенные базы данных SQL обычно используют алгоритмы Paxos или Raft для достижения консенсуса на нескольких узлах.
Иногда распределенные базы данных SQL называют NewSQL , но NewSQL — это более широкий термин, включающий базы данных, которые не являются распределенными базами данных .
История
[ редактировать ]Google Компания Spanner популяризировала современную концепцию распределенной базы данных SQL. Google описал базу данных и ее архитектуру в техническом документе 2012 года под названием «Spanner: глобально-распределенная база данных Google». В документе описывается, что Spanner превратился из большой таблице , подобного хранилища значений ключей , во временную многоверсионную базу данных, где данные хранятся в «схематизированных полуреляционных таблицах». [1]
Spanner использует атомные часы с алгоритмом Paxos для достижения консенсуса в отношении состояния, распределяемого между серверами. В 2010 году и в более ранних версиях ClustrixDB (теперь MariaDB Xpand) перешла с аппаратного устройства на программную базу данных на базе Paxos. [2] и позже был приобретен MariaDB [3] и добавлен в SaaS облачное предложение под названием SkySQL . [4] В 2015 году два инженера Google покинули компанию, чтобы создать базу данных Cockroach DB , которая достигает аналогичных результатов с использованием алгоритма Raft без атомных часов или специального оборудования. [5]
Spanner в основном используется для транзакций и временных рядов. Тем не менее, Google продолжил это исследование, опубликовав статью о Google F1, которую он описывает как базу данных гибридной транзакционно-аналитической обработки, построенную на Spanner. [1]
Архитектура
[ редактировать ]Распределенные базы данных SQL имеют следующие общие характеристики:
- синхронная репликация
- строгая согласованность транзакций, по крайней мере, в зонах доступности (т. е. соответствие ACID ) [6]
- Структура внешнего интерфейса реляционной базы данных – это означает, что данные представлены в виде таблиц со строками и столбцами, аналогичных любой другой СУБД.
- автоматически сегментированное хранилище данных
- базовое хранилище ключей-значений [7] [1]
- собственная реализация SQL
Согласно теореме CAP , распределенные базы данных SQL являются «CP» или согласованными и устойчивыми к разделению. Алгоритмически они жертвуют доступностью, поскольку сбой основного узла может сделать базу данных недоступной для записи.
Все реализации распределенного SQL требуют некоторой временной синхронизации, чтобы гарантировать согласованность. За исключением Spanner, большинство из них не используют специальное оборудование для создания атомных часов. Spanner способен синхронизировать записи с временными гарантиями. Реализации без специального оборудования требуют, чтобы серверы сравнивали смещения часов и, возможно, повторяли попытки чтения. [8]
Распределенные реализации SQL
[ редактировать ]Продавец | API |
---|---|
Амазонка Аврора | PostgreSQL и MySQL |
Другие данные (Microsoft) | PostgreSQL |
ТараканДБ | PostgreSQL -подобный |
Google-гаечный ключ | Собственный SQL-подобный |
Кластер MySQL | MySQL |
НуоБД | Собственный SQL |
ЮгабайтДБ | PostgreSQL и Cassandra, подобные CQL |
ТиБД | MySQL -подобный |
MariaDB XPand | МарияДБ |
Терадата | Собственный SQL-подобный |
ЯДБ [9] | Собственный SQL-подобный |
По сравнению с НьюСБЛ
[ редактировать ]CockroachDB, YugabyteDB и другие иногда называют себя базами данных NewSQL . Некоторые базы данных NewSQL, такие как Citus и Vitess, имеют принципиально разные архитектуры, но Мэтью Аслетт, придумавший этот термин, привел их в качестве примеров NewSQL. [10] По сути, распределенные базы данных SQL создаются с нуля, а базы данных NewSQL включают технологии репликации и сегментирования, добавленные к существующим реляционным базам данных клиент-сервер, таким как PostgreSQL . [11] Некоторые эксперты определяют базы данных DistributedSQL как более специфическое подмножество баз данных NewSQL. [12]
Ссылки
[ редактировать ]- ^ Jump up to: а б с https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf [ пустой URL PDF ]
- ^ Хиггинботэм, Стейси (3 мая 2010 г.). «Clustrix создает Святой Грааль Webscale: масштабируемую базу данных» . gigaom.com .
- ^ «MariaDB приобретает Clustrix» . 20 сентября 2018 г.
- ^ Баер (dbInsight), Тони. «Для MariaDB пришло время собрать все воедино» . ЗДНет .
- ^ Морган, Тимоти Прикетт (22 февраля 2017 г.). «Google Spanner вдохновляет CockroachDB обогнать его» . Следующая платформа .
- ^ Будущее баз данных: распределенный SQL и MariaDB® , получено 21 декабря 2022 г.
- ^ «Архитектура распределенной базы данных SQL» . 23 сентября 2020 г. – через www.youtube.com.
- ^ «Жизнь без атомных часов» . Тараканьи лаборатории . 21 апреля 2020 г.
- ^ «YDB — это распределенная база данных SQL с открытым исходным кодом, которая сочетает в себе высокую доступность и масштабируемость с высокой согласованностью и транзакциями ACID» . ydb.tech .
- ^ «О чем мы говорим, когда говорим о NewSQL — слишком много информации» .
- ^ «Базы данных SQL и NoSQL: в чем разница?» . www.ibm.com . 12 июня 2022 г.
- ^ Прабагарен, Гокул (30 октября 2019 г.). «NewSQL — следующая эволюция баз данных» . Середина .