Распределенная SQL базы данных является одной реляционной базой данных , которая копирует данные на нескольких серверах. Распределенные базы данных SQL строго согласованы и большинство из них поддерживают согласованность между стойками, центрами обработки данных и глобальными сетями, включая облачные зоны доступности и облачные географические зоны . Распределенные базы данных SQL обычно используют алгоритмы Paxos или Raft для достижения консенсуса между несколькими узлами. Иногда распределенные базы данных SQL называют NewSQL, но NewSQL - это более широкий термин, который включает базы данных, которые не являются распределенными базами данных .
История [ править ]
Google «s Гаечный популяризировал современную распределенную концепцию базы данных SQL. Google описал базу данных и ее архитектуру в техническом документе 2012 года под названием «Spanner: глобально распределенная база данных Google». В документе описывается, как Спаннер превратился из хранилища значений ключей, подобных Большой таблице, во временную многоверсионную базу данных, где данные хранятся в «схематизированных полуреляционных таблицах». [1]
Spanner использует атомные часы с алгоритмом Paxos для достижения консенсуса в отношении состояния, распределенного между серверами. В 2010 году и в более ранней реализации ClustrixDB перешла с аппаратного устройства на базу данных программного обеспечения на основе Paxos [2], а затем была приобретена MariaDB [3] как Xpand и добавлена к облачному предложению SaaS под названием SkySQL . [4] В 2017 году два инженера Google покинули компанию, чтобы создать базу данных Cockroach DB, которая дает аналогичные результаты с использованием алгоритма Raft без атомных часов или специального оборудования. [5] После этого на рынок вышли и другие поставщики, такие как SkySQL от MariaDB и YugabyteDB.. Помимо заявлений о реализации и производительности, эти предложения могут работать в нескольких общедоступных, а в некоторых случаях и в частных облаках или инфраструктуре.
Spanner в основном используется для транзакций и временных рядов. Тем не менее, Google продолжил это исследование, выпустив следующий документ о Google F1, который он описывает как гибридную базу данных транзакционной / аналитической обработки, построенную на Spanner. [1]
Архитектура [ править ]
Распределенные базы данных SQL имеют следующие общие характеристики
- Синхронная репликация
- Сильная согласованность транзакций, по крайней мере, в зонах доступности (т.е. соответствие ACID ).
- Внешняя структура реляционной базы данных - это означает, что данные представлены в виде таблиц со строками и столбцами, аналогичными любой другой СУБД.
- Автоматически сегментированное хранилище данных
- Базовое хранилище "ключ-значение" [6] [1]
- Собственная реализация SQL
Согласно теореме CAP , распределенные базы данных SQL являются "CP" или согласованными и устойчивыми к разделам. Алгоритмически они приносят в жертву доступность, поскольку отказ основного узла может сделать базу данных недоступной для записи. Однако доступность достигается за счет большей надежности программного и аппаратного обеспечения, выбора новых основных параметров и эвристических методов восстановления. [7]
Все реализации распределенного SQL требуют некоторой временной синхронизации, чтобы гарантировать согласованность. За исключением Spanner, большинство из них не используют специальное оборудование для обеспечения атомных часов. Spanner может синхронизировать записи с временными гарантиями. Реализации без специального оборудования требуют, чтобы серверы сравнивали смещения часов и, возможно, повторяли чтение. [8]
По сравнению с NewSQL [ править ]
CockroachDB и другие иногда называют себя базами данных NewSQL . Некоторые из баз данных NewSQL, такие как Citus и Vitess, имеют принципиально разные архитектуры, но Мэтью Аслетт, который ввел этот термин, привел их в качестве примеров NewSQL [9] . По сути, распределенные базы данных SQL создаются с нуля, а базы данных NewSQL включают технологии репликации и сегментирования, добавленные к существующим реляционным базам данных клиент-сервер, таким как PostgreSQL . [10] Некоторые эксперты определяют базы данных DistributedSQL как более конкретное подмножество баз данных NewSQL. [11]
Ссылки [ править ]
- ^ а б в https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
- ^ https://gigaom.com/2010/05/03/clustrix-builds-the-webscale-holy-grail-a-database-that-scales/
- ^ https://techcrunch.com/2018/09/20/mariadb-acquires-clusterix/
- ^ https://www.zdnet.com/article/for-mariadb-its-time-to-put-the-pieces-topting/
- ^ Google Spanner вдохновляет CockroachDB опередить его
- ^ Архитектура распределенной базы данных SQL - YouTube
- ^ https://dzone.com/storage/assets/13931533-dzone-refcard-335-distributed-sql-2020.pdf
- ^ Жизнь без атомных часов
- ^ О чем мы говорим, когда говорим о NewSQL - слишком много информации
- ^ SQL и базы данных NoSQL: в чем разница? | IBM
- ^ https://medium.com/capital-one-tech/newsql-the-next-evolution-in-databases-19109973ee53