이력관리

Jina·2020년 5월 29일
0

Today I Learned

목록 보기
13/21

아래의 글은 여기를 참고하여 작성한 글!

이력 데이터

이력 데이터를 설계하는 첫 번째 방법

이력 엔터티를 별도 엔터티로 설계하는 방법

  • 계좌 엔터티의 속성 중에서 하나라도 변경되면 변경 당시의 데이터를 스냅샷 형태로 계좌이력 엔터티에 생성
  • 변경된 속성의 값은 원천 엔터티인 계좌 엔터티에 갱신
  • 업무 요건이 본질 데이터와 변경 데이터가 같이 조회되는 경우가 드물 때 유리
  • 계좌 엔터티(실체 엔터티)는 하위 엔터티가 많이 존재하기 때문에 별도의 엔터티에서 관리하는 것이 바람직함

이력 데이터를 설계하는 두 번째 방법

하나의 엔터티에 원천 데이터와 변경 데이터를 함께 관리

  • 발생내역과 변경이력을 같이 관리하기 때문에 엔터티의 성격이 불명확
  • 데이터 모델을 관리하기가 좋음
  • 원천 데이터와 변경 데이터를 같이 조회하는 요건이 매우 중요할 때 사용

이력 데이터를 설계하는 세 번째 방법

속성 단위로 이력 데이터를 관리하며, 별도의 엔티티에서 이력을 관리하는 방법

선분 이력

  • 과거 특정 시점의 데이터를 조회하는 요건이 많을 때 사용하는 방법으로 조회 성능을 고려한 기법
  • 선분이력은 데이터가 유효한 시작 시점과 종료 시점을 관리하는 방법

점 이력

쿼리가 복잡해지고 성능 측면에서 비효율이 발생함

점이력은 변경일자만 관리하므로 선분이 되지 않음

선분 이력

  • 선분이력 릴레이션
  • 현재 데이터는 종료 시점이 없어서 9999년12월31일과 같이 약속된 데이터를 사용
  • 논리적으로 종료일자는 널(Null)값을 입력해야 하지만 성능을 위해 기본값을 사용

  • 변경된 릴레이션의 시작과 종료 시점을 연결하면 하나의 선분이 되는 것이 중요
  • 시작일자와 종료일자가 겹치지 않도록 해야함
  • Between 구문을 사용해 조회 쿼리의 효율성을 높일 수 있음

REF

http://wiki.gurubee.net/pages/viewpage.action?pageId=28606568

0개의 댓글