Рационализация согласованности в облаках

       

Категория C – сессионная согласованность


Категория C включает данные, для которых поддерживается сессионная согласованность (session consistency). Сессионная согласованность определяется как минимальный уровень согласованности в распределенной среде, не приводящий к чрезмерной сложности разработки приложений . При поддержке сессионной согласованности приложения не обязательно видят свои собственные изменения данных и при последующих обращениях могут получить несогласованные данные.

Клиенты подключаются к системе в контексте сессий. Пока длится сессия, система гарантирует монотонность по чтению собственных записей (read-your-own-writes monotonicity). Гарантии монотонности не распространяются за границы сессий. Если некоторая сессия завершается, в новой сессии могут быть сразу не видны записи, произведенные в предыдущей сессии. В сессии одного клиента могут быть не видны изменения, произведенные в сессии другого клиента. По истечении некоторого времени (и при отсутствии сбоев) система достигает устойчивого состояния, и данные становятся согласованными (это свойство, полезное в распределенных вычислениях, называется согласованностью "в конечном счете" (eventual consistency). Например, в службе S3 компании Amazon, направленной на хранение файлов, обеспечивается согласованность "в конечном счете".

Разрешение конфликтов, возникающих при параллельном обновлении данных категории C, производится в зависимости от типа обновления. В случае некоммутативных обновлений (например, замены значений данных) выигрывает последнее обновление. При коммутативных обновлениях (выполнении численных операций, например, сложения) конфликты разрешаются путем поочередного применения обновлений. Тем не менее, оба подхода могут привести к несогласованности, если, например, обновленные данные нарушают некоторое ограничение целостности.

При поддержке сессионной согласованности дешевле обходятся выполнение транзакций и обеспечение требуемого времени отклика системы, поскольку требуется меньшее число сообщений, чем при соблюдении гарантий строгой согласованности, например, сериализуемости. Кроме того, оказывается возможным кэширование данных, позволяющее еще больше снизить расходы и повысить производительность. В "облачных" базах данных данные всегда относятся к категории C, если несогласованность возникнуть не может (например, в любой момент времени над данными выполняются операции не более одной транзакции), или если возникновение временной несогласованности данных не вызывает финансовых или административных расходов.



Содержание раздела