본문 바로가기
츄Log/데이터 끄적

툼스톤(Tombstone)이란? 툼스톤 사용하는 이유

by 츄츄🦭 2023. 12. 3.
728x90

 
안녕하세요!
오늘은 분산 데이터 시스템에서 자주 사용되는 툼스톤에 대해 알아보겠습니다.
 
툼스톤은 묘비죠. 묘비는 무덤 앞에 있는 것으로 죽음을 표현할 때 사용됩니다.
 
묘비, 즉 툼스톤은 분산 데이터베이스 시스템에서 삭제된 데이터를 표현할 때 씁니다. 
데이터를 삭제했을 때 묘비를 두어 데이터가 삭제됨을 표현하는 것이죠.
 
그럼 이 툼스톤은 왜 사용하는 걸까요? 
 
분산 데이터 시스템은 Eventual Consistency 모델을 차용합니다. 
Eventual Consistency 특성상 삽입/삭제가 완료되었다고 하더라도 일부 노드에는 정보가 누락될 수 있습니다.
이런 특성은 삭제 명령시 문제를 야기합니다.
 
아래 멀티 노드 클러스터 예시를 보겠습니다.

노드 중단 상태를 표현할만한 그림이 없어서 화산을 넣었습니다.

 
Node1에 데이터가 삽입되어 Node2에 복제합니다.
Node2가 여러가지 사유로 잠시 중단되었습니다. 
그 사이에 Node1의 데이터가 삭제됩니다. Node2는 Node1의 삭제 요청을 수신하지 못합니다. 
Node2가 복구되었는데, Node2는 Node1에 데이터가 없다고 판단하여 Node1에 복제를 시도합니다.
 
분산 데이터 시스템에는 삭제 작업시 이런 문제가 발생할 수 있습니다.
 
그래서 데이터 삭제 후 툼스톤을 사용하여 "삭제됨"을 표기하고 이를 다른 노드와 공유합니다.
 

묘비 그림이 없어서 비슷해 보이는 걸로 대체합니다^_ㅠ

보통 일정 시간이 지나면 이 툼스톤이 세워진 레코드는 삭제됩니다. 
 
 
보다 더 복잡한 구현 방식이 있지만 툼스톤의 개략적인 내용은 이렇습니다. 
분산 데이터 시스템에서 툼스톤이란 무엇인지, 왜 사용하는 것인지 알아보았습니다.
 
궁금한 점이 있으면 댓글 남겨주세요 :)
 
출처 : https://en.wikipedia.org/wiki/Tombstone_(data_store)

728x90

'츄Log > 데이터 끄적' 카테고리의 다른 글

Dense/Sparse feature(data)  (1) 2024.01.03