2014-03-24 5 views
12

Запись операций на Coucbahse принимает параметр cas (создайте и установите). Кроме того, объект результата возврата любого запроса выборки без данных имеет свойство cas. Я немного погуглил и не смог найти хорошую концептуальную статью об этом.Что такое CAS в nosql и как его использовать?

Может ли кто-нибудь сказать мне, когда следует использовать CAS и как это сделать? Каким должен быть общий рабочий процесс использования CAS?

Я предполагаю, что нам нужно получить CAS для первой операции записи, а затем передать ее вместе со следующей записью. Также нам нужно его обновить, используя результат CAS. Поправьте меня, если я ошибаюсь.

ответ

28

CAS фактически обозначает check-and-set и является методом оптимистической блокировки. Значение или идентификатор CAS связаны с каждым документом, который обновляется всякий раз, когда изменяется документ - немного напоминает идентификатор ревизии. Цель состоит в том, что вместо пессимистической блокировки документа (и связанных с ним накладных расходов) вы просто читаете его значение CAS, а затем выполняете только запись, если CAS соответствует.

Общее использование регистр является:

  1. Читать существующий документ и получить его текущий CAS (get_with_cas)
  2. Подготовить новое значение для этого документа, при условии, что никто другой не модифицирован документ (и, следовательно, вызвало изменение CAS).
  3. Запишите документ, используя операцию check_and_set, предоставляя значение CAS из (1).

Шаг 3 выполнит только выполнение (выполнить запись), если документ не изменился между (1) и (3) - то есть ни один другой пользователь не изменил его за это время. Обычно, если (3) не работает, вы должны повторить всю последовательность (get_with_cas, modify, check_and_set).

В Руководстве разработчика Couchbase имеется более подробное описание check-and-set под Check and Set (CAS).

Смежные вопросы