Введение

Причинная последовательность является одной из основных моделей последовательности памяти. В одновременном программировании, когда одновременные процессы получают доступ к общей памяти, модель согласованности ограничивает, какие доступы являются законными. Это полезно для определения правильных структур данных в распределенной общей памяти или распределенных транзакциях. Причинная согласованность - это "доступная под разделом", что означает, что процесс может читать и записывать память (память доступна), даже если между процессами нет функционирующего сетевого соединения (сеть разделена); это асинхронная модель. В отличие от сильных моделей согласованности, таких как последовательная согласованность или линеаризуемость, которые не могут быть одновременно безопасными и жить в разделе, и медленно реагируют, потому что они требуют синхронизации. Причинная согласованность была предложена в 1990-х годах как более слабая модель согласованности для моделей общей памяти. Причинная согласованность тесно связана с концепцией причинной передачи в протоколах связи. В этих моделях распределенное выполнение представлено как частичный порядок, основанный на концепции потенциальной причинности, предшествующей событию Лампорта. Причинная согласованность является полезной моделью согласованности, потому что она соответствует интуиции программистов о времени, более доступна, чем сильные модели согласованности, но предоставляет более полезные гарантии, чем возможная согласованность. Например, в распределенных базах данных причинная согласованность поддерживает упорядочение операций, в отличие от конечной согласованности. Кроме того, причинная согласованность помогает в разработке абстрактных типов данных, таких как очереди или счетчики. Поскольку время и порядок так важны для нашей интуиции, трудно представить систему, которая не обеспечивает причинную согласованность. Однако многие распределенные базы данных не имеют этой гарантии, даже те, которые обеспечивают сериализацию. Spanner гарантирует причинную согласованность, но также заставляет к сильной согласованности, таким образом избегая доступности при разделе. Более доступные базы данных, которые обеспечивают причинно-следственную согласованность, включают MongoDB и AntidoteDB.

Определение

Причинная согласованность охватывает потенциальные причинно-следственные связи между операциями и гарантирует, что все процессы наблюдают причинно-следственные операции в общем порядке. Другими словами, все процессы в системе согласны с порядком причинно-следственных операций. Они могут не соглашаться по поводу последовательности операций, которые не связаны между собой причинно-следственной связью. Модель причинной согласованности слабее последовательной согласованности, которая гарантирует, что все процессы соблюдают все операции записи в общем порядке, независимо от того, связаны они причинно или нет. Однако причинная согласованность сильнее, чем PRAM-согласованность, которая требует, чтобы только операции записи, выполняемые одним процессом, соблюдались в общем порядке каждым другим процессом. Из этого следует, что когда система последовательно последовательна, она также причинно-следственно последовательна. Кроме того, причинная согласованность подразумевает согласованность PRAM, но не наоборот.

Гарантии сеанса

Модель причинной согласованности может быть уточнена в четырех гарантии сеанса. Их можно обобщить следующим образом: Read Your Writes: Если процесс выполняет запись, тот же процесс позже наблюдает результат своей записи. Монотонные считывания: набор записей, наблюдаемый (читаемый) процессом, гарантированно монотонно не уменьшается. Пишет Следует читает: если какой-то процесс выполняет чтение, за которым следует запись, и другой процесс наблюдает результат записи, то он также может наблюдать чтение (если он не был перезаписан). Монотонные записи: если какой-то процесс выполняет запись, за которой некоторое время спустя следует другая запись, другие процессы будут наблюдать за ними в том же порядке. Гарантии транзакционной сессии для сериализации и изоляции моментальных снимков представлены Даудджи и Салемом.