이전에 회사에서 정말 특수한 조건때문에 몽고디비에 데이터 히스토리를 남겨야 할 일이 있었어..
아래와 같이 값이 있다 했을때
x => 1, 2, 3, 4, 5, 4, 3, 6, 7, 9
----------------------> 시간
현재 최종값을 달라하면 9를 주면 되는거고
어떻게 값이 변해왔는지 보려면 히스토리 특정 영역을 주면 되는거고
그리고 문제가 되었던 당시의 상황
(내가만든 서비스) <-> (서드파티) <-> 실데이터
형태로 데이터 in/out이 일어나던 상황이었는데,
서드파티 입장에서 delete를 구현하고 싶어 했음
나한테 하는 얘기가
그분이 말하길 [
x => 1, 2, 3, 4, 5, 4, 3, 6, 7, 9
----------------------> 시간
일때,
x => 1, 2, 3, 4, 5, 4, 3, 6, 7, (지워짐)
----------------------> 시간
형태로 값을 지워주실 수 있나요?
]
하는거..
그래서 내가 [
음? 9란값이 없어져도 괜찮나요? 나중에 지우기 전 마지막값 안필요하세요?
]
라고 했더니
그분께서 [
x => 1, 2, 3, 4, 5, 4, 3, 6, 9(<= 요놈을 업데이트), (지워짐)
----------------------> 시간
하면 돼지 않아요?
]
하는거임
그래서 내가 [
아, 그렇게 앞 값을 수정해버리면, 히스토리 일관성이 깨진다.
데이터를 지우는 행위 역시 히스토리의 일종이므로,
x => 1, 2, 3, 4, 5, 4, 3, 6, 7, 9, {deleted}
----------------------> 시간
형태로 지워졌다는 히스토리가 새로 추가되는것이 맞다.
히스토리를 관리하는 입장에서는
append도 insert고, update도 insert고 delete도 insert다.
결국 너는 나한테 올바른 시간만 주면 내가 그 당시의 값을 리턴 해주겠다.
]
했더니 그분이 갑자기 [
음?? 몽고 update 되지 않아요? update 명령이 있는걸로 알고있는데..
]
이러기 시작함..
내가 [
아, mongodb에 update가 당연하게 가능하구요,
지금 얘기하는건 몽고가 update를 지원 안하기때문에 저렇게 해야된다는게 아니고,
히스토리를 보관하는 매커니즘에 관한 설명을 드린거에요
]
그분 왈[
흐음... 이상하다..
]
이러고는 머 여튼 각자 다른 업무들 보고 그날이 다 가고, 다음날이 됨
그분 왈[
제가 어제 해봤는데요, mongodb update 되던데요?
자 보세요 어떻게 하냐면요..
]
하면서 나에게 mongodb 강의를 하기 시작함..
ㅋㅋ 이만한 발암 이길사람 있음?
하 글쓰다가 다시 기억이 났는데 또 빡치넼ㅋㅋㅋㅋㅋ 하 진짜 암걸릴거같아....................
그건 존나 귀여운데
난 저번에 념글서 봤던 머큐리얼 빌런이 경악스러웠음
호오, 머큐리얼 함 찾아봐야겠네
아 참고로 말하자면, 그분이 나한테 mongodb update 기능 있는데요? 하고 말하는 뉘앙스가, '에휴 이 한심한새끼야 db update도 할줄 모르냐 형이 알려줄게' 하는 형태였음