К чему относится контекст для флагов в Riak KV

При использовании флагов в Riak KV для флага требуется контекст. В клиенте Elixir контекст задается Flag.new("my context")иначе бросит :context_required когда один пытается отключить флаг.

Теперь флаг может существовать только на карте, и каждый элемент на карте должен иметь ключ, поэтому несколько флагов могут быть на карте и различаться по ключу.

Какова цель контекста, если не проводить различие между ними?

1 ответ

Решение

Флаг на карте имеет семантику "добавить выигрыши" или "настоящие выигрыши". Эта семантика достигается с помощью метода причинности, называемого "Наблюдаемое удаление", который заимствован из набора "Наблюдаемое удаление". Во многих отношениях флаг - это просто набор из одного нулевого элемента, который находится либо в наборе (флаг равен true), либо не в наборе (флаг равен false).

Нижнее значение Flags - False. Когда нет ключа для флага на карте, флаг ложный. Вот почему вы не можете добавить ключ флага со значением False. Добавление ключа аналогично установке флага в значение True.

Добавление флага приводит к тому, что ключ получает точку или причинный тег. Если флаг добавляется дважды одновременно, у него будет два таких причинных тега. Когда флаг установлен в False, контекст или удаляемые причинные теги должны быть переданы в Riak, это гарантирует, что некоторые одновременные установки в True (с tag3) не получат false при удалении tag1 и tag2. Вот как добавить побед! Часть Observed-Remove облегчается контекстом: контекст говорит, какие причинные теги вы наблюдали, и, следовательно, какие из них вы можете удалить.

Другие вопросы по тегам