В теоретической информатике , то теорема 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 , Cassandra , Riak и Cosmos DB по умолчанию - это системы PA / EL: если возникает раздел, они отказываются от согласованности в пользу доступности, а при нормальной работе они отказываются от согласованности для уменьшения задержки.
- Системы с полностью ACID, такие как VoltDB / H-Store, Megastore и MySQL Cluster, относятся к PC / EC: они отказываются отказываться от согласованности и для ее достижения будут платить за доступность и задержку. BigTable и связанные с ним системы, такие как HBase , также являются PC / EC.
- Couchbase предоставляет ряд вариантов согласованности и доступности во время раздела, а также диапазон параметров задержки и согласованности без раздела. В отличие от большинства других баз данных, 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 реализует Calvin , протокол транзакций, созданный доктором Даниэлем Абади и автором [1] теоремы PACELC, и предлагает пользователям настраиваемые элементы управления для компромисса LC. Это PC / EC для строго сериализуемых транзакций и EL для сериализуемых чтений.
DDBS | P + A | P + C | E + L | E + C |
---|---|---|---|---|
DynamoDB | [а] | |||
Кассандра | [а] | |||
Cosmos DB | ||||
Диван | ||||
Риак | [а] | |||
VoltDB / H-Store | ||||
Мегамагазин | ||||
BigTable / HBase | ||||
Кластер MySQL | ||||
MongoDB | ||||
PNUTS | ||||
Hazelcast IMDG [6] [5] | ||||
FaunaDB [7] |
Смотрите также
Заметки
Рекомендации
- ^ a b c Абади, Дэниел Дж. «Компромиссы согласованности при проектировании современных распределенных систем баз данных» (PDF) . Йельский университет.
- ^ Абади, Дэниел Дж. (23 апреля 2010 г.). "DBMS Musings: Проблемы с CAP и малоизвестной системой NoSQL Yahoo" . Проверено 11 сентября 2016 .
- ^ a b Резюме слайда «Компромиссы согласованности при проектировании современных распределенных систем баз данных» Аринто Мердопо, инженер-исследователь.
- ^ Абади, Даниэль (2017-10-08). "DBMS Musings: Hazelcast и мифическая система PA / EC" . СУБД Musings . Проверено 20 октября 2017 .
- ^ а б «Справочное руководство Hazelcast IMDG» . docs.hazelcast.org . Проверено 17 сентября 2020 .
- ^ Абади, Даниэль (2017-10-08). "DBMS Musings: Hazelcast и мифическая система PA / EC" . СУБД Musings . Проверено 20 октября 2017 .
- ^ Абади, Даниэль (21.09.2018). «DBMS Musings: системы баз данных NewSQL не могут гарантировать согласованность, и я виню Шпаннера» . СУБД Musings . Проверено 23 февраля 2019 .
Внешние ссылки
- «Компромиссы согласованности при проектировании современных распределенных систем баз данных», Дэниел Дж. Абади, Йельский университет. Оригинальный документ, формализовавший PACELC.
- «Проблемы с CAP и малоизвестной системой NoSQL Yahoo», Дэниел Дж. Абади, Йельский университет . Оригинальное сообщение в блоге, впервые описывающее PACELC