2016-06-09 8 views
2

Riak KV에서 플래그를 사용할 때 플래그에는 컨텍스트가 필요합니다. Elixir 클라이언트에서는 컨텍스트가 Flag.new("my context")으로 설정되고, 그렇지 않으면 플래그를 비활성화하려고 시도 할 때 :context_required이 전달됩니다.Riak에서 Context for Flags는 무엇입니까 KV

이제 플래그는 맵에만 존재할 수 있으며 맵의 각 요소에는 키가 있어야하므로 여러 플래그가 맵에있을 수 있으며 키에 의해 여전히 구별 될 수 있습니다.

컨텍스트를 구분하지 않으면 컨텍스트의 목적은 무엇입니까?

답변

3

지도의 깃발에는 "wins"또는 "true wins"의 의미가 있습니다. 이 의미는 Observed-Remove CRDT Set에서 빌린 "Observed Remove"라는 인과 관계 기술을 사용하여 달성됩니다. 여러 가지면에서 플래그는 집합에있는 하나의 null 요소 집합이거나 (플래그는 true 임) 또는 집합에없는 플래그 (false는 플래그입니다.)

플래그의 맨 아래쪽 값은 False입니다. 플래그에 대한 키가 맵에 없으면 플래그는 거짓입니다. 이 때문에 False 값과 함께 깃발 키를 추가 할 수 없습니다. 키를 추가하는 것은 Flag를 True로 설정하는 것과 같습니다.

플래그를 추가하면 키가 점 또는 인과 관계 태그를 가져옵니다. 플래그가 동시에 두 번 추가되면 인과 관계 태그가 두 개 있습니다. 플래그가 False로 설정되면 컨텍스트 또는 인과 관계 태그가 Riak에 전달되어야합니다. 이렇게하면 tag1 및 tag2가 제거 될 때 일부 동시 설정 (태그 3 포함)이 True로 설정되지 않습니다. 그것이 승리를 더하는 방법입니다! Observed-Remove 부분은 컨텍스트에 의해 촉진됩니다. 컨텍스트는 사용자가 관찰 한 원인 태그를 표시하므로 제거 할 수있는 태그입니다.