Hashed access, tagging pattern Computer Code

분산 노드에 데이터를 저장하고 읽는 방식에는 여러가지가 있지만, 결론적인 측면에서는 아직 CAP 를 벗어나지 못한다.
몇 가지 trade-off 들은 감수할 수 밖에 없고, 그 안에서 최대한 활용도를 극대화하는 게 아직까지는 최선이 아닐까 싶다.

hgLock에서 접근하는 방식 중 Hashed access, tagging pattern은 다음 상황을 위해 고려된 부분이다.
제한된 상황을 위한 고려이므로 데이터 모델과 처리 방식이 다른 상황에서는 당연히 맞지 않을 수 있다.

원래는 다른 noSQL에 넣으려고 하다 (당연하겠지만) 성능상 차별 포인트가 없어서, 지금은 용도를 전환하여 global lock쪽으로 이래저래 적용중..
-

전제는 어떤 데이터가 기록되었을 때, 모든 노드가 그 데이터를 필요로 하지는 않는다는 것이다.
많은 경우 단시간 내에 특정 데이터를 필요로 하는 노드 수는 전체 노드 수보다 적으며, 데이터에 접근하는 노드를 명확하게 제어할 수 있다면 성능을 적게 희생하면서도 consistency를 확보하는 데 도움이 된다.

다른 솔루션들과 비슷하게 hgLock 역시 데이터의 hash를 키로 데이터에 접근한다. 그리고 이 hash에 어느 어느 노드에 동기화가 되었는지를 나타나는 플래그가 추가(tagging)되어 있는데, 이 플래그를 가지고 데이터를 읽어올 노드를 판단하게 된다. - 실제 구현은 이 부분이 빡셈...

기본적으로 hash를 key-nodes에 배포하는 방식은 consistency-write 모델이며, value-node배포/tagging 값 변경은 eventually consistency를 따른다. 장점은 읽기와 쓰기 비율이 비슷한 상황에서 어느 정도의 CaP를 확보할 수 있지만, 단점으로는 플래그 업데이트를 위한 오버헤드와 데이터에 변경이 자주 일어나는 상황에서는 맞지 않다는 것.



덧글

댓글 입력 영역