Причинная согласованность () — модель согласованности, которая не требует, чтобы все процессы видели одну и ту же последовательность записей в памяти, проводя различие между потенциально-зависимыми (запись одной может зависеть от результата чтения другой ячейки) и потенциально-независимыми (параллельными) операциями записи.
Система обеспечивает причинную согласованность, если операции с памятью, которые потенциально причинно связаны, рассматриваются всеми узлами системы в том же порядке. Одновременные операции записи (то есть те, которые причинно не связаны), могут рассматриваться в различном порядке разными узлами. Этот вид согласованности слабее, чем последовательная согласованность, которая требует, чтобы все узлы видели все записи в том же порядкеVijay K. Garg Concurrent and Distributed Computing in Java. John Wiley & Sons, 28 Jan 2005 — Computers — 336 pages. p 60, но сильнее, чем , при которой только записи, сделанные одним узлом, были бы видимы в том же порядке любым другим узлом.
Отношения причинности между операциями (событиями) для систем с можно определить следующим образом:
Последовательность операций чтения и записи на узле определяет локальный причинный порядок. Операция записи причинно предшествует операции чтения на другом узле, если чтение возвращает значение, записанное с помощью этой операции записи. Это отношение межпроцессного порядка. И, наконец, причинный порядок считается транзитивным: то есть, если операция А (причинно) следует до В, а В — до С, то А находится в порядке причинности перед С. То есть, транзитивное замыкание отношений локального и межпроцессного порядков определяет глобальный причинный порядок.
Достоинства и недостатки Сохраняя свойство гарантированных операций с небольшой задержкой, причинная согласованность лучше согласованности в конечном счёте как для пользователей, так и для программистов. Она учитывает причинно-следственные связи между операциями и гарантирует, что каждый узел видит операции в заданном порядке. Причинная согласованность также делает программирование проще, устраняя необходимость рассматривать не относящиеся к делу операцииWyatt Lloyd, Michael J. Freedman, Michael Kaminsky, David G. Andersen. A Short Primer on Causal Consistency ;login: The USENIX Magazine, Vol 38, Number 4, August 2013..
Тем не менее, причинной согласованности присущи и некоторые недостатки: не все причинные связи могут быть установлены в рамках системы, не всегда возможно требовать выполнения глобальных инвариантов, логика одновременной записи может представлять трудности при реализации. В частности, требуется установить, достаточно ли простого затирания старых данных или требуются отдельные механизмы разрешения конфликтующих записей.
Примечания
Литература Крюков В. А. Курс лекций «Распределенные ОС» 6. Распределенная общая память
M. Ahamad, G. Neiger, J. E. Burns, P. Kohli, and P. Hutto. Causal memory: Definitions, implementation and programming. Distributed Computing, 9(1), 19
Категория:Теоретические основы баз данных Категория:Архитектура распределённых вычислений Категория:Управление памятью