Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Распределенная 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]

Ссылки [ править ]

  1. ^ а б в https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
  2. ^ https://gigaom.com/2010/05/03/clustrix-builds-the-webscale-holy-grail-a-database-that-scales/
  3. ^ https://techcrunch.com/2018/09/20/mariadb-acquires-clusterix/
  4. ^ https://www.zdnet.com/article/for-mariadb-its-time-to-put-the-pieces-topting/
  5. ^ Google Spanner вдохновляет CockroachDB опередить его
  6. ^ Архитектура распределенной базы данных SQL - YouTube
  7. ^ https://dzone.com/storage/assets/13931533-dzone-refcard-335-distributed-sql-2020.pdf
  8. ^ Жизнь без атомных часов
  9. ^ О чем мы говорим, когда говорим о NewSQL - слишком много информации
  10. ^ SQL и базы данных NoSQL: в чем разница? | IBM
  11. ^ https://medium.com/capital-one-tech/newsql-the-next-evolution-in-databases-19109973ee53