지금까지 3단원에 걸쳐서 개념 → 논리 데이터 모델링을 설계하는 방법에 대해서 알아보았다. 마지막 과정은 앞서 구축한 모델링을 바탕으로 실제 데이터베이스를 설계하는 과정인 ‘물리 데이터 모델링’에 대해서 알아보도록 하자.
[Part1. 물리 데이터 모델링]
1-1. 물리 데이터 모델링이란?
- 논리 데이터 모델링의 내용을 바탕으로 실제 데이터베이스의 물리적인 구조(Schema)를 작성하는 단계
- 이때, 사용하고자 하는 DBMS(데이터베이스 관리 시스템)의 특성, 기능, 성능을 고려해야 한다. (ex. 데이터 저장공간, 분산, 저장방법 등)
1-2. 모델링 전 조사단계
실제 모델링 전에 사용하고자 하는 DBMS 시스템에 대한 조사가 선행되어야 한다.
- 시스템 구축 관련 명명규칙
- 운영체제 및 DBMS 버전
- 하드웨어 자원
- CPU (중앙처리 장치 성능 및 부하 발생 시간 파악)
- 메모리 & 디스크 (사용 가능한 메모리 영역 및 디스크 공간 확인)
- I/O 컨트롤러 (현재 운용되고 있는 입출력 컨트롤러 성능 확인)
- 네트워크 (처리 가능 속도, 부하 발생 시간, 동시 접속 최대 가용 사이트 수 등 파악)
- DBMS 파라미터 정보
- 데이터 저장 공간 및 메모리 관리 기법에 관련된 파라미터 파악 필요
- 데이터베이스 운영과 관련된 관리 요소 파악
- 사용자 관리/백업/복구/보안 관리 기법 및 정책
[Part2. 논리 데이터 모델 → 물리 데이터 모델 변환]
기존에 논리 데이터 모델에서 설계한 내용을 바탕으로 물리 데이터 모델에서 사용할 용어로 명칭을 변환시켜줘야 한다.
논리 데이터 모델 | 물리 데이터 모델 |
Entity(엔터티) | Table(테이블) |
Attribute | Column |
Primary UID | Primary Key |
Secondary(Alternate) UID | Unique Key |
Relationship | Foreign Key |
Business Constraints | Check Constraints |
[Part3. 반정규화]
우리는 이미 논리 데이터 모델링 과정에서 정규화 작업을 완료했다. 하지만 때로는 정규화한 모델 사용이 불편하여 모델 성능이 나지 않을 때도 있다. 이러한 경우 시스템의 성능향상/개발 과정의 편의/운영의 단순화를 위해 정규화에 위배되는 행위를 ‘의도적’으로 수행하게 되는데, 이를 ‘반정규화’라고 한다.
하지만 반정규화 작업은 정규화를 위배하다보니 데이터의 일관성 및 정합성을 해칠 수도 있으며, 의도한만큼 성능이 나지 않을 수도 있다. 그렇기 때문에 데이터를 우선으로 할지? 데이터베이스의 성능을 우선으로 할지? 에 대해서 생각하여 적절히 조정하는 것이 중요하다.
3-1. 테이블 분할
- 한 테이블을 수직 혹은 수평 단위로 테이블을 분할하는 과정 (=파티셔닝)
- 수평 분할이란?
- what - 행을 기준으로 테이블을 분할하는 과정
- when - 테이블의 데이터가 많지만 특정 범위의 행에만 주로 엑세스 하는 경우에 적용
- why - 자주 사용하는 데이터와 사용하지 않는 데이터를 서로 다른 디스크에 위치시켜 디스크의 효용성 극대
- 수직 분할이란?
- what - 특정 컬럼에 대하여 테이블을 분할하는 과정
- when - 특정 컬럼만 갱신이 되거나/자주 조회되거나/컬럼 크기가 너무 크거나/보안이 필요한 경우에 적용
- why - 특정 컬럼을 분할함으로써 데이터 사용의 효율성/액세스 성능/보안성의 증가
3-2. 중복 테이블 생성
- 테이블의 통계 정보와 같이 여러 개의 테이블에서 필요한 데이터를 주기적으로 추출해야 하는 경우 중복 테이블을 추가하는 과정
-
- 특정(혹은 다수) 범위의 데이터만 자주 처리가 필요하지만 수행 속도가 느려지는 경우
- 데이터 처리 범위를 줄이지 않으면 수행 속도를 개선할 수 없는 경우
- 통계 정보와 같은 테이블의 요약 자료가 요구되는 경우중복 테이블을 고려해야 하는 상황
- ➡️ 하지만 가장 먼저 인덱스 조정 혹은 클러스터링 등의 다른 방법으로 해결할 수 있는지 철저하게 검토 후 사용해야 하는 최후의 방법이다.
- 중복 테이블 유형
- 집계 테이블 (단일 및 다수 테이블간의 GROUP BY) ⇒ 이때, 집계 테이블은 원본 데이터와 일관성을 유지해야 한다.
- 진행 테이블
3-3. 중복 칼럼 생성
- 모델 성능 상의 문제로 중복 칼럼(column)을 생성하는 과정 (⇒ Join, Sub-query의 최적화를 위해)
-
- 특정 칼럼에만 빈번히 조인이 발생하거나 사용되는 경우
- 자주 사용되는 칼럼이 서로 다른 테이블에 분산되어 액세스 범위가 넓은 경우중복 칼럼을 고려해야 하는 상황
- ➡️ 역시 가장 먼저 다중 테이블 클러스터링이나 GROUP BY와 같은 내장 함수를 이용하여 해결할 수 있는지 검토 후에 적용해야하는 최후의 방법이다.
[Part4. 물리 데이터 모델 품질 검토]
지난 장에서, 개념/논리/물리 데이터 모델링 과정 후에는 모두 모델 품질을 검토하는 과정이 필요하다고 말했었다. 물리 데이터 모델링 역시 품질 검토하는 과정을 필요로 한다.
물리 데이터 모델은 시스템 성능에 직접적으로 영향을 미치기 때문에 발생 가능한 성능 문제를 충분히 검토하여 추후 발생할 문제를 최소화하는 노력이 필요하다. 쉽게 말하자면 물리 데이터 모델 품질 검토는 ‘성능’과 ‘사전 오류 예방’을 기준으로 한다고 생각하면 된다.
검토 기준은 각자의 상황에 맞게 설정해야하며, 검토 기준은 [데이터아키텍처 전문가 가이드 p.498~502] 내용을 가볍게 읽어보면 되겠다.
👀 책 내용을 마치며…
긴 시간에 걸쳐서 [DAsP 한 권으로 끝내기]의 내용에 대해서 공부하는 시간을 가져보았다. 본 책에서는 요약 중심으로 진행하다보니, 자세한 내용을 공부하기 위해 다음 단계의 자격증 [DAP 가이드] 내용을 함께 병행하게 되었다.
단순히 자격증을 취득하겠다는 생각이 아니라 신입 데이터아키텍트로서 앞으로 어떻게 고객을 마주해야할지, 프로젝트를 이끌어야갈지에 대한 청사진을 그리는 마음으로 공부 시간을 보냈었다. 처음에는 낯선 개념과 내용들에 머리를 부여잡고 책을 읽었는데 2-3회독을 하면서 조금씩 내용을 이해할 수 있게 되었다. 물론 내가 정리한 내용을 자격증 취득을 위해 보는 사람도 있을 테지만 아키텍트로서의 직무를 이해하고 배워나가는 시간이 되었으면 좋겠다.
다음에는 올해 9월에 있는 DAP 자격 취득을 위해 공부를 해보려한다. 실제 모델링 과정에 대해서 내용이 어렵다는 평이 많았는데, 업무의 일부란 생각으로 차근히 공부해보자. 여기까지 공부하느라 모두 수고하셨습니다!😄
📘참고 서적: [데이터아키텍처 전문가 가이드]
한국데이터산업진흥원 지음
'[자격증] > DAsP(데이터아키텍처 준전문가)' 카테고리의 다른 글
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (3) (0) | 2023.06.03 |
---|---|
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (2) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter4.데이터 모델링 - (1) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter3.데이터 표준화 - (2) (0) | 2023.06.03 |
[DAsP 한 권으로 끝내기] Chapter3.데이터 표준화 - (1) (0) | 2023.06.03 |