벡터 시계 (Vector Clock) 완벽 이해하기
·
Computer Science/Data Structure
벡터 시계 (Vector Clock)벡터 시계는 분산 시스템에서 사건의 순서를 추적하기 위한 자료구조입니다.다수의 노드가 서로 독립적으로 동작하면서 발생하는 이벤트의 인과관계를 기록하고 비교할 수 있도록 설계되어 있습니다.분산 시스템에서 여러 노드에 동일한 데이터가 저장되고 수정될 때, 데이터의 동시성을 판단하기 위해 활용됩니다. 벡터 시계는 왜 필요할까? 왼쪽 그림은 두 노드가 name:john이라는 동일한 데이터를 저장하고 있습니다. 이 상황에서 n1에는 name:johnSanFransico를 저장하고, n2에는 name:johnNewYork을 동시에 저장하면 각 노드는 서로 다른 데이터를 저장하게 됩니다. 즉, 충돌이 발생하게 됩니다. 벡터 시계는 이러한 충돌을 발견하기 위한 해결책을 제시해 줍니다..
머클 트리(Merkle Tree)
·
Computer Science/Data Structure
머클 트리 (Merkle Tree, Hash Tree) 머클 트리는 데이터 무결성을 검증하고 효율적으로 동기화하기 위해 사용하는 이진 트리 구조를 의미합니다.블록체인과 파일 시스템, 분산 데이터베이스에 사용됩니다. 머클 트리의 리프 노드는 원본 데이터 자체를 저장하지 않고 원본 데이터의 해시값을 저장하게 됩니다내부 노드는 두 자식 노드의 해시값을 더하여 다시 해싱한 값을 저장하게 됩니다.최상위 노드는 머클 루트(Merkle Root)로, 전체 데이터에 대한 요약 역할을 하게 됩니다. 내부 노드의 해시값은 자식 노드들의 해시값을 더한 후 다시 해시 연산을 한 값이 됩니다. 머클 루트를 사용하는 이유1.데이터 무결성 검증머클 트리를 사용하게 되면 최종적으로 하나의 머클 루트 해시로 요약됩니다. 리프 노드에..