01. 이력 관리 |
관심있게 보는 사건(Event)의 발생정보를 관리하는 것.
이력 관리 대상 선정 기준
- 변경 내역을 감시할 필요가 있는가?
- 시간의 경과에 따라 데이터가 변할 수 있는가?
- 시간의 경과에 따라 관계가 변할 수 있는가?
- 과거의 데이터를 조회할 필요가 있는가?
- 과거 버전을 보관할 필요가 있는가?
이력 데이터의 종류
- 발생 이력
- 변경 이력
- 진행 이력
이력 관리 형태
- 점 이력
- 선분 이력 (시작 점 이력 + 종료 점 이력)
이력 관리 형태별 조회방법
- 점 이력은 where = max() 함수로 조회
- 선분 이력은 between 또는 부등호로 조회.
선분 이력 성능이슈
- 최근 선분이력의 종료값을 NULL : 인덱스 사용 못함
- 최근 선분이력의 종료값을 최대값 : 인덱스 사용 가능. 성능상 유리
- 자세한 성능 이슈는 SQLP에서 배움.
02. 이력 관리 레벨 |
관리 레벨에 따라 로깅 조건이 바뀐다.
레벨
- Low (인스턴스 레벨) : 하나의 인스턴스가 변경되면 모든 인스턴스 로깅.
- Colum (속성 레벨) : 속성 값이 변할때, 해당 이벤트의 로그만 생성.
- Subject (주제 레벨) : 그룹을 지정하여 그룹 단위로 로깅.
인스턴스 레벨 장단점
- 스냅샷 쉬움
- 저장공간 낭비
- 변경점 찾으려면 과거 스냅샷과 merge 해야 함.
- 특정 순간의 스냅샷만 보는게 아니라면 복잡해진다.
- 변화가 빈번하게 발생한다면 고려해볼만 하다.
속성 레벨 장단점
- 명확하고 독립적인 로깅이 가능하다.
- 통합 이력 관리가 가능하다.
- 변화 가능성은 매우 낮으면서, 관리 대상이 많은 경우에 유리하다.
- 여러 속성에 대한 이력이 필요할 때 많은 merge 가 발생한다.
- 액세스 쿼리에서 조건 검색이 조금 어렵다.
- 변화가 너무 많은 경우에는 적용이 곤란하다.
주제 레벨 장단점
- 위의 2개의 레벨의 장점을 모두 수용하는 형태의 관리 형태.
- 확장성이 확보됨.
- 독립적인 로깅이 가능.
- 다른 엔터티와 통합 이력 관리가 가능하다.
- 속성 레벨의 단점을 해소할 수 있음.
- 전체를 참조할 때 인스턴스 레벨에 비해 Merge가 많이 발생.
- 주제에 따라 변경 정도의 차이가 심한 경우에 유리.
'# 미사용' 카테고리의 다른 글
[4-4-1]: 물리 데이터 모델링 이해 (0) | 2018.03.23 |
---|---|
[4-3-5]: 논리 데이터 모델 품질 검토 (0) | 2018.03.23 |
[4-3-3]: 엔터티 상세화 (0) | 2018.03.23 |
[4-3-2]: 속성 정의 (0) | 2018.03.23 |
[4-3-1]: 논리 데이터 모델링 이해 (0) | 2018.03.23 |