Теорема PACELC — расширение теоремы CAP, которое гласит, что в случае разделения сети (P) в распределённой компьютерной системе необходимо выбирать между доступностью (A) и согласованностью (C) (согласно теореме CAP), но в любом случае, даже если система работает нормально в отсутствии разделения (E), нужно выбирать между задержками (L) и согласованностью (C).
Описание Теорема PACELC основывается на теореме CAP. Обе теоремы описывают, какие ограничения и компромиссные решения имеют распределённые базы данных в отношении согласованности, доступности и допустимости разделения. Однако, теорема PACELC заявляет, что необходимо идти на компромисс между задержками и консистентностью даже при отсутствии разделения, что обеспечивает более полное представление о возможных компромиссах для распределённых систем.
Требование высокой доступности подразумевает, что система должна реплицировать данные. Пока распределённая система реплицирует данные, возникает необходимость выбирать между согласованностью и задержками.
Теорема PACELC впервые была описана Даниэлем Дж. Абади из Йельского университета в 2010 году в блоге , а также в виде статьи в 2012 году. Основная цель теоремы PACELC — обратиться к его тезису «Игнорирование необходимости выбора между согласованностью и задержкой в реплицируемых системах является основным упущением [в рамках CAP], поскольку необходимость этого выбора присутствует при работе системы всегда, в то время как CAP имеет отношение только к дискутируемо редкому случаю разделения сети».
Оценка основных СУБД согласно теореме PACELC Оценки СУБД для
По умолчанию Dynamo, Cassandra, Riak и Cosmos DB относятся к системам PA/EL: при разделении сети они отказываются от согласованности для большей доступности, а при нормальной работе отказываются от согласованности для более низкой задержки. Полностью ACID-системы, такие как VoltDB/H-Store и Megastore, — это PC/EC: они не отказываются от согласованности и будут согласны платить доступностью и задержками, чтобы добиться этого. BigTable и связанные с ним системы, такие как HBase, также являются PC/EC. Couchbase предоставляет ряд вариантов согласованности и доступности во время разделения, а также диапазон параметров задержки и согласованности без разделения. В отличие от большинства других баз данных, Couchbase не имеет единого набора API и не реплицирует все службы данных однородно. Для записи Couchbase предпочитает согласованность, а не доступность, что делает ее формально CP, но при чтении появляется больше управляемой пользователем изменчивости в зависимости от репликации индекса, желаемого уровня согласованности и типа доступа (поиск одного документа против сканирования диапазона против полнотекстового поиска и т. Д.) . Вдобавок ко всему, существует дополнительная изменчивость в зависимости от репликации между центрами обработки данных (XDCR), которая берет несколько кластеров CP и связывает их с асинхронной репликацией, и Couchbase Lite, которая является встроенной базой данных и создает полностью мульти-мастер (с отслеживанием версий ) распределенная топология. Cosmos DB поддерживает пять настраиваемых уровней согласованности, которые позволяют выбирать между C/A во время разделения сети и L/C в случае нормальной работы. Cosmos DB никогда не нарушает указанный уровень согласованности, поэтому это формально CP. MongoDB можно классифицировать как систему PA/EC. В базовом случае система гарантирует, что чтение и запись будут согласованными. PNUTS — это система PC/EL.
DDBS P+A P+C E+L E+C Dynamo Да Да Cassandra Да ДаCosmos DBДаДаCouchbaseДаДаДа Riak Да Да VoltDB/H-Store Да Да Megastore Да Да MongoDB Да Да PNUTS Да Да
См. также Теорема CAP Модель консистентности
Алгоритм Паксос Тройственная ограниченность Алгоритм Raft
Примечания
Источники
Ссылки «Consistency Tradeoffs in Modern Distributed Database System Design», by Daniel J. Abadi, Yale University Original paper that formalized PACELC «Problems with CAP, and Yahoo’s little known NoSQL system», by Daniel J. Abadi, Yale University. Original blog post that first described PACELC
Категория:Базы данных Категория:Архитектура распределённых вычислений