상세 컨텐츠

본문 제목

데이터베이스모델링(반정규화 절차 2)

Database

by somiyuralove 2020. 5. 10. 01:53

본문

* 테이블 추가

 

수평분할, 수직분할 모두 테이블에 추가적으로 설계되는 경우에 해당합니다.

 

이외에도 논리적인 데이터 모델링이 끝났다 하더라도 통계관리, 이력 관리 등은 추가적으로 발생할 수 있습니다.

 

프로젝트를 시작할때 통계 데이터를 산출하고 이를 데이터 모델링에 반영하는 경우도 있지만, 도출된 엔터티타입과 속성의 형식을 보고 통계 데이터의 방향을 정하는 경우도 많습니다.

 

기업의 영업, 재무, 회계 등을 분석하려면 다양한 통계 정보가 필요합니다. 데이터양이 소량이고 조회하려는 데이터 유형이 단순하면 일반 테이블을 이용하여 통계 데이터를 산출할 수 있습니다.

 

하지만 전체 데이터를 모두 읽어야 한다거나 산출하려는 내용이 복잡하다면 실시간으로 원하는 정보를 보는 것은 속도도 느릴 뿐만 아니라 다른 업무에 지장을 줄 수도 있습니다.

 

따라서 대량의 데이터를 처리할 때는 다양한 통계 정보를 조회하여 별도의 통계 테이블을 분리하고 배치작업으로 데이터를 산출하여 원하는 데이터를 조회합니다.

 

데이터 금액의 합계나 건수 등을 실시간으로 처리하면 여러 개의 테이블을 읽어야하며, 또한 테이블 전체에 대한 건수나 금액등을 산정하는 경우가 많습니다.

이와같은 프로세스가 발생하면 데이터베이스에 부하(Load)가 발생하여 시스템의 성능이 느려지는 원이이 됩니다.

 

그래서 별도의 통계 테이블을 만들어 두고 시스템을 이용하지 않는 시간을 이용하여( 보통 야간에 자동으로 수행하는 schedule work에 등록) 배치 작업으로 통계 테이블에 데이터를 입력합니다.

 

* 컬럼 반정규화 방법

 

테이블의 성능이 저하되거나 데이터에 접근하는 경로가 너무 복잡한 경우 컬럼의 중복이나 로우의 중복을 통해 이를 해결할 수 있습니다.

 

데이터 모델링을 하는 동안 관계에 의해 정의되는 FK는 테이블간의 논리적인 관계를 연결하는 다리 역할도 하지만, 관련된 테이블의 PK를 그대로 복사하여 자기 테이블에서 이용하기도 합니다.

 

1) 중복 컬럼 방법

컬럼의 반정규화 역시 성능 향상을 위해 이루어진다는 사실은 다른 반정규화의 이유와 비슷하나 인덱스 사용을 고려한 반정규화은 컬럼 반정규화의 특별한 이유입니다.

 

2) 중복 컬럼 특징

자주 조인이 발생하는 컬럼이나 간단한 컬럼만 읽어도 되는데, 접근 경로가 너무 복잡한 경우는 컬럼값을 더하여 또 하나의 컬럼을 만듦으로써 테이블에 대한 읽기 성능을 향상시킬 수 있고 SQL 문장 작성을 좀더 용이하게 할 수 있습니다.

그렇지만 중복 컬럼의 단점으로 데이터 무결성의 확보가 어려워지고, 중복데이터의 저장을 위해 추가적인 디스크 공간이 필요하며 시스템 운영자가 중복 속성에 대한 소유권을 혼동할 수 있습니다.

 

3) 중복 컬럼 추가

- 해당 테이블에서 자주 사용하는 컬럼인 경우 컬럼을 중복시킴

- 데이터를 조회하는 경로를 단축하기 위해 컬럼을 중복시킴

 

4) 파생 컬럼 추가

- 컬럼에 의한 파생 컬럼 추가

- 로우에 의한 파생 컬럼 추가

 

5) 이력 데이터 모델의 컬럼 추가

- 변경이력, 발생 이력에 대한 최신 정보 컬럼 추가

 

6) PK에 의한 컬럼 추가

 

 

관련글 더보기

댓글 영역