Strict (строгая)
Наиболее строгий и детерментированный вид согласованности. В этой модели изменение данных одним узлом гарантирует чтение
измененных данных всеми остальными узлами. Модель не может разрешать конфликты одновременной записи, требует
блокировок или существования глобальных часов.
Sequential (последовательная)
Изменение значения записи не приводит к тому, что все остальные узлы при чтении получат то же самое последнее значение,
однако, последовательность изменений записи на всех узлах будут идентичны. Модель требует понятия виртуального
времени (времени Лэмпорта).
Casual (причинная)
модель согласованности, которая не требует, чтобы все процессы видели одну и ту же последовательность записей в памяти,
проводя различие между потенциально-зависимыми (запись одной может зависеть от результата чтения другой ячейки) и
потенциально-независимыми (параллельными) операциями записи
FIFO
Операции записи, осуществляемые единичным процессом, наблюдаются всеми остальными процессами в том порядке,
в котором они осуществляются, но операции записи, происходящие в различных процессах, могут
наблюдаться разными процессами в разном порядке.
Slow (слабая)
Данная модель позволяет реализовать высокую производительность и доступность, но практически не гарантирует консистентность.
Для реализации этой модели необходима ручная синхронизация данных при чтении (переменная синхронизации)
Модель слабой непротиворечивости имеет три свойства:
- Доступ к переменным синхронизации, ассоциированными с хранилищем данных, осуществляется на условиях последовательной непротиворечивости
- С переменной синхронизации не может быть произведена ни одна операция до полного и повсеместного завершения предшествующих ей операций чтения и записи над элементами данных
- С элементами данных не может быть произведена ни одна операция до полного завершения всех операций с переменными синхронизации
- Протокол непротиворечивости представляет собой конкретную реализацию соответствующей модели. Принято выделять следующие группы протоколов непротиворечивости: на базе первичной копии, реплицируемой записи, согласования кэшей.
** Eventual (в конечном счете)**
Модель согласованности, используемая для достижения высокой доступности, в рамках которой гарантируется, что в
отсутствии изменений данных, через какой-то промежуток времени после последнего обновления («в конечном счёте»)
все запросы будут возвращать последнее обновлённое значение