Теорема PACELC - Википедия - PACELC theorem

В теоретическая информатика, то Теорема PACELC является расширением CAP теорема. В нем говорится, что в случае разделения сети (P) в распределенная компьютерная система, нужно выбирать между доступностью (A) и согласованностью (C) (согласно теореме CAP), но в противном случае (E), даже когда система работает нормально при отсутствии разделов, нужно выбирать между задержкой (L ) и последовательность (C).

Обзор

PACELC опирается на CAP теорема. Обе теоремы описывают, как распределенные базы данных имеют ограничения и компромиссы в отношении согласованности, доступности и устойчивости к разделам. PACELC, однако, идет дальше и заявляет, что существует еще один компромисс: на этот раз между задержкой и согласованностью, даже при отсутствии разделов, обеспечивая более полное изображение возможных компромиссов согласованности для распределенных систем.[1]

Требование высокой доступности подразумевает, что система должна реплицировать данные. Как только распределенная система реплицирует данные, возникает компромисс между согласованностью и задержкой.

Теорема PACELC была впервые описана Дэниелом Дж. Абади из Йельский университет в 2010 году в блоге,[2] который он позже формализовал в документе в 2012 году.[1] Цель PACELC - ответить на его тезис о том, что «Игнорирование компромисса согласованности / задержки реплицированных систем является серьезным упущением [в CAP], поскольку он присутствует всегда во время работы системы, тогда как CAP имеет значение только в возможно редком случае. сетевого раздела ".

База данных PACELC рейтинги

База данных Рейтинги PACELC взяты из [3]

  • Версии по умолчанию DynamoDB, Кассандра, Риак и Cosmos DB являются системами PA / EL: если возникает раздел, они отказываются от согласованности в пользу доступности, а при нормальной работе они отказываются от согласованности в пользу меньшей задержки.
  • Полностью КИСЛОТНЫЕ системы, такие как VoltDB / H-Store, Megastore и Кластер MySQL являются PC / EC: они отказываются отказываться от согласованности и платят за ее доступность и задержку. Большой стол и связанные системы, такие как HBase также являются PC / EC.
  • Диван предоставляет ряд вариантов согласованности и доступности во время раздела, а также диапазон параметров задержки и согласованности без раздела. В отличие от большинства других баз данных, Couchbase не имеет единого набора API и не масштабирует / реплицирует все службы данных однородно. Для записи Couchbase отдает предпочтение согласованности перед доступностью, что делает ее формально CP, но при чтении появляется больше управляемой пользователем изменчивости в зависимости от репликации индекса, желаемого уровня согласованности и типа доступа (поиск по одному документу, сканирование диапазона или полнотекстовый поиск и т. Д.) . Вдобавок ко всему, существует дополнительная изменчивость в зависимости от репликации между центрами обработки данных (XDCR), которая берет несколько кластеров CP и связывает их с асинхронной репликацией, и Couchbase Lite, которая является встроенной базой данных и создает полностью мульти-мастер (с отслеживанием версий ) распределенная топология.
  • Cosmos DB поддерживает пять настраиваемых уровней согласованности, которые позволяют выбирать между C / A во время P и L / C во время E. Cosmos DB никогда не нарушает указанный уровень согласованности, поэтому формально это CP.
  • MongoDB можно классифицировать как систему PA / EC. В базовом случае система гарантирует согласованность операций чтения и записи.
  • PNUTS - это система ПК / EL.
  • Hazelcast IMDG и большинство сеток данных в памяти - это реализация системы PA / EC; Hazelcast можно настроить на EL, а не на EC.[4] Примитивы параллелизма (Lock, AtomicReference, CountDownLatch и т. Д.) Могут быть PC / EC или PA / EC.[5]
  • FaunaDB орудия Кальвин, протокол транзакции, созданный доктором Даниэлем Абади и автором[1] теоремы PACELC и предлагает пользователям настраиваемые элементы управления для компромисса LC. Это PC / EC для строго сериализуемых транзакций и EL для сериализуемых чтений.
DDBSP + AP + CE + LE + C
DynamoDBдада[а]
Кассандрадада[а]
Cosmos DBдада
Дивандадада
Риакдада[а]
VoltDB / H-Storeдада
Megastoreдада
BigTable / HBaseдада
Кластер MySQLдада
MongoDBдада
PNUTSдада
Hazelcast IMDG[6][5]дададада
FaunaDB[7]дадада

Смотрите также

Примечания

  1. ^ а б c Dynamo, Cassandra и Riak имеют настраиваемые пользователем настройки для управления компромиссом LC.[3]

Рекомендации

  1. ^ а б c Абади, Дэниел Дж. «Компромиссы согласованности при проектировании современных систем распределенных баз данных» (PDF). Йельский университет.
  2. ^ Абади, Дэниел Дж. (2010-04-23). "DBMS Musings: проблемы с CAP и малоизвестной системой NoSQL Yahoo". Получено 2016-09-11. Cite имеет пустой неизвестный параметр: |1= (помощь)
  3. ^ а б Краткое изложение слайда «Компромиссы согласованности при проектировании современной распределенной системы баз данных», подготовленный Аринто Мердопо, инженер-исследователь
  4. ^ Абади, Даниэль (2017-10-08). «DBMS Musings: Hazelcast и мифическая система PA / EC». СУБД Musings. Получено 2017-10-20.
  5. ^ а б «Справочное руководство Hazelcast IMDG». docs.hazelcast.org. Получено 2020-09-17.
  6. ^ Абади, Даниэль (2017-10-08). "DBMS Musings: Hazelcast и мифическая система PA / EC". СУБД Musings. Получено 2017-10-20.
  7. ^ Абади, Даниэль (21.09.2018). «DBMS Musings: системы баз данных NewSQL не могут гарантировать согласованность, и я виню Шпаннера». СУБД Musings. Получено 2019-02-23.

внешняя ссылка