본문 바로가기

이력 관리

이력 엔터티를 설계하는 10가지 방법 – 서론 이력 데이터에 대한 글을 계속 올리고 있는데요. 개요적인 내용은 소개했으니 다른 주제(식별자)로 넘어갈까를 좀 고민했습니다. 느끼신 분들이 있겠지만 엔터티나 관계 등과 같이요. 개인적으로 제가 책을 쓰면서 다른 책과 차별되도록 구성한 장이 정규화와 통합, 이력, 방법론 입니다. 얼마 전에 메일을 한통 받았는데 거의 정확하게 맞추신 분이 있습니다. 각 장의 특징을 조만간 올릴 생각입니다. 군더더기라 생각해서 책에는 생략을 했는데요. 이력 데이터 관리가 전략적인 장이라서 당분간 이력 엔터티 위주로 글을 올리겠습니다. 오늘은 이력 데이터를 관리할 수 있는 10가지 방법의 개략에 대해 쓰려고 합니다. 이 10가지 방법은 실무에서 자주 사용하는 방법을 제 나름대로 구분한 것인데요. 사실 내역 데이터 설계 방법까지.. 더보기
선분 이력의 종료일자 이번 글에서는 종료일자에 대해 쓰려고 합니다. 선분 이력은 다 아실 것입니다. 자세한 내용은 제 책 등을 참고해 보시고요. 간단히 설명하면 선분 이력은 과거 특정 시점의 데이터를 조회하는 요건이 많을 때 채택하는 조회 성능을 고려한 방법입니다. 즉 성능 문제가 없다면 선분 이력을 채택하지 않아도 됩니다. 제 책에서 선분 이력을 설명한 목적이 두 가지가 있었습니다. 하나는 성능 이슈가 존재할 때 선분 이력을 정확하게 사용할 수 있도록 하는 것이고, 또 하나는 선분 이력의 남용을 방지하기 위해서입니다. 그런데 첫 번째 목적인 성능 문제에 대한 이슈가 최근에 있었는데요. 저 또한 Between 조회가 성능상 유리하다고 생각해 그렇게 썼는데요. Between 조회가 아니더라도 성능상 큰 문제가 없다고 주장한 블.. 더보기
이력 데이터와 내역 데이터 2 그럼 [그림5] 환율 엔터티는 내역 엔터티일까요? 이력 데이터일까요? 환율은 기준 통화에 대한 상대 통화의 교환 비율인데요. 기본적으로 매일 관리하기 때문에 기준일자를 관리합니다. 원화에 대한 달러의 2월 15일 환율 데이터가 생성되고, 16일 환율도 생성되는 등 주 식별자에 따라 데이터가 생성되니 내역 데이터입니다. 환율을 관리하는 원천 엔터티이니 발생 내역 엔터티입니다. 환율 같은 엔터티를 이력 엔터티로 생각하는 경우가 많습니다. [그림5] 이미 존재하는 15일 환율이 바뀌고, 바뀌기 전 데이터를 관리해야 한다면 [그림6]과 같이 이력 엔터티가 있어야 됩니다. [그림6] 그리고 또 많이 혼돈하는 엔터티가 학력이나 회사경력 같은 엔터티입니다. [그림7]과 같은 고객의 학력을 관리하는 엔터티는 주 식별자.. 더보기
이력 데이터와 내역 데이터 1 지난 글에서 이력 데이터의 성격에 대해 간략하게 설명드렸습니다. 다시 정리하면 변경되는 데이터가 이력 데이터이고요. 쌓이는 데이터는 내역 데이터입니다. 그리고 원천(본질) 데이터인지를 구별하는 것이 중요합니다. 원천 엔터티를 도출하고 이력엔터티를 분석해야 하고요. 발생 내역인 원천 데이터가 변경되면, 변경 전의 데이터를 관리해야 이력 데이터 관리라고 합니다. 저는 ‘변경이력’과 ‘발생내역’이라는 용어로 구분합니다. 지난 번에 언급했듯이 이력이라는 용어는 상당히 애매합니다. 과거 데이터라는 포괄적인 의미를 지니고 있습니다. 영어로 표현하면 Time-Dependent Data, Historical Data 정도가 되는데요… 하지만 데이터 모델에서 말하는 이력은 단순히 쌓여있는 과거의 데이터가 아니라 변경된 .. 더보기
이력 데이터에 대한 주절거림 모델링 분야에서 ‘이력’만큼 혼란스러운 용어는 없을 거 같습니다(저만 그런지는 모르겠습니다만). 책을 쓰면서도 가장 고민했던 장이고 ‘이력’이란 용어를 사용하지 않으려 시도해 봤지만 달리 방법이 없었습니다. 어쨌든 이력이라는 용어는 사용했지만 강조하려 했던 것이 우선 이력 데이터입니다. 무엇을 이력 데이터라고 하는지를 설명하려 애를 먹었습니다. 아직도 스스로 만족하지 못하는 부분은 있지만요. 언젠가 저를 잘 아는 어떤 모델러가 아직 연구할 부분이 있냐고 물었을 때 이력 데이터라고 주저없이 답변했습니다. 이력 데이터에 대한 내용은 외국 서적에도 그다지 없는 거 같습니다. 우리만의 고민은 아닐 거 같은데 원서에서 생각보다 많이 찾지 못했습니다. 저는 이력 데이터는 지나간 데이터(Bygone Data)라고 생.. 더보기