안녕하세요!
오늘은 분산 데이터 시스템에서 자주 사용되는 툼스톤에 대해 알아보겠습니다.
툼스톤은 묘비죠. 묘비는 무덤 앞에 있는 것으로 죽음을 표현할 때 사용됩니다.
묘비, 즉 툼스톤은 분산 데이터베이스 시스템에서 삭제된 데이터를 표현할 때 씁니다.
데이터를 삭제했을 때 묘비를 두어 데이터가 삭제됨을 표현하는 것이죠.
그럼 이 툼스톤은 왜 사용하는 걸까요?
분산 데이터 시스템은 Eventual Consistency 모델을 차용합니다.
Eventual Consistency 특성상 삽입/삭제가 완료되었다고 하더라도 일부 노드에는 정보가 누락될 수 있습니다.
이런 특성은 삭제 명령시 문제를 야기합니다.
아래 멀티 노드 클러스터 예시를 보겠습니다.
![](https://blog.kakaocdn.net/dn/IAXjx/btsBiUDr0SP/nYhuFKKMHkMLF4JBjC93kk/img.png)
Node1에 데이터가 삽입되어 Node2에 복제합니다.
Node2가 여러가지 사유로 잠시 중단되었습니다.
그 사이에 Node1의 데이터가 삭제됩니다. Node2는 Node1의 삭제 요청을 수신하지 못합니다.
Node2가 복구되었는데, Node2는 Node1에 데이터가 없다고 판단하여 Node1에 복제를 시도합니다.
분산 데이터 시스템에는 삭제 작업시 이런 문제가 발생할 수 있습니다.
그래서 데이터 삭제 후 툼스톤을 사용하여 "삭제됨"을 표기하고 이를 다른 노드와 공유합니다.
![](https://blog.kakaocdn.net/dn/dqMjwS/btsBo9suLke/A9KfC72ZlQLkLWPUwbr77k/img.png)
보통 일정 시간이 지나면 이 툼스톤이 세워진 레코드는 삭제됩니다.
보다 더 복잡한 구현 방식이 있지만 툼스톤의 개략적인 내용은 이렇습니다.
분산 데이터 시스템에서 툼스톤이란 무엇인지, 왜 사용하는 것인지 알아보았습니다.
궁금한 점이 있으면 댓글 남겨주세요 :)
출처 : https://en.wikipedia.org/wiki/Tombstone_(data_store)
'츄Log > 데이터 끄적' 카테고리의 다른 글
Dense/Sparse feature(data) (1) | 2024.01.03 |
---|