Growth Hoon

20230829_TIL SQLD 1과목 ( 데이터 모델과 성능 ) 본문

TIL_Today I Learned

20230829_TIL SQLD 1과목 ( 데이터 모델과 성능 )

sayhoon 2023. 8. 29. 23:05

성능 데이터 모델링이란?

- DB 성능향상을 목적으로 설계 단계에서 진행.

- 성능과 관련된 사항(정규화, 반정규화, 테이블 병합 등)이 데이터 모델링에 반영이 되도록 하는 것

 

성능 데이터 모델링을 진행하는 시점

- 분석/설계 단계에서 DB 처리 성능을 향상 시킬 수 있는 방법을 주도면밀하게 고려해야함.

 

성능 데이터 모델링의 고려사항

- 정규화를 정확하게 수행

- DB 용량산정 수행

- DB에 발생되는 트랜잭션의 유형 파악

- 용량과 트랜잭션의 유형에 따라 반정규화 수행

- 이력모델, PK/FK 조정, 슈퍼타입/서브타입 조정 등 수행

- 성능과점 검증

* 트랙잭션은 쪼갤 수 있는 업무의 최소 단위를 의미 *

 


1. 정규화

- 데이터에 대한 중복성을 제거, 데이터가 관심사별로 처리되기에 성능 향상을 기대함.

- SQL 문장에서 JOIN을 많이 수행하여 성능이 저하될 수 있음

 

데이터 처리 성능의 부류

- 조회 성능

- 입력/수정/삭제 성능

 

* 정규화는 입력/수정/삭제 성능에서의 데이터 모델 성능은 향상이 되지만 조회 성능에서 성능이 저하 될 수 있다. * 

 

함수적 종속성에 근거한 정규화 수행의 필요

- 함수적 종속성은 데이터(=종속자)들이 어떠한 기준값(=결정자)에 의해 종속되는 현상을 지칭

- 예시) 이름, 출생지, 대한민국 -> 주민등록번호 라는 속성에 종속된다. (포함되어있다.)

             3개의 input이 주민등록번호라는 함수(function)에 의해 종속된다 ?


2. 반정규화 (De-Nomalization)

- 정규화를 수행하지 않은 모델을 지칭

- 정규화된 Entity, Attribute, Relationship에 대해 시스템 성능의 향상....(1)

  개발과 운영의 단순화....(2) 를 위해 중복, 통합, 분리를 수행하는 데이터 모델링 기법

- 정규화의 함수적 종속성을 위반하지 않지만 데이터 중복성을 증가해야 성능이 증가하는 경우 수행.

 

반정규화의 적용방법

- 데이터 무결성을 보장할 수 있는 방법으로 진행해야 함.

- "반정규화 대상조사 -> 다른 방법유도 검토 -> 반정규화 적용" 순으로 수행됨.

 

반정규화 기법

- 데이블 반정규화 : 테이블 병합, 테이블 분할, 테이블 추가

- 칼럼(Column) 반정규화 : 중복칼럼 추가, 파생칼럼 추가, 이력테이블 칼럼 추가, PK에 의한 칼럼추가

                                        응용시스템 오작동을 위한 칼럼 추가

- 관계(Relationship) 반정규화 : 중복관계 추가


3. 대량 데이터에 따른 성능

- 대량의 데이터가 하나의 Table에 존재하면 성능 하락의 요인이 될 수 있음.

- Column 단위로 분할하는 수평분할, Row 단위로 분할하는 수직분할이 있음.

 

Row Chaining과 Row Migration

- Row Chaining : Row가 길어서 하나의 Block에 저장된 것이 아니라 2개의 Block에 저장된 현상

- Row Migration : 수정된 데이터를 해당 Block에 저장하는 것이 아닌 다른 곳에 저장하는 현상

 

대량 데이터 저장 및 처리에 의한 성능 향상 기법들 ( Oracle )

- List Partition (특정값 지정) : 핵심적인 코드 값으로 PK가 구성되어 있는 경우 각각의 값으로 처리 (지점별 처리)

- Range Partition (범위) : 건수로 나눠줌 (들어오는 데이터 마다 1000만건 씩 잘라서 처리)

- Hash Partition (해시적용) : hash 알고리즘을 적용하여 테이블 분리

- Composite Partition (범위 해시 복합) :

 

전략

Column수가 너무 많아 성능이 저하 되는 경우에는 트랙잭션에 따라 1:1분리 ( 수평분할 )

Column수가 적으나 데이터 용량이 많은 경우는 Partitioning 전략을 수행 ( 수직 분할 ) 


4. 슈퍼/서브 타입 데이터 모델

- 좀 더 읽고 이해해야 하는 모델


5. 분산 DB 

- DB에 연결하는 빠른 네트워크 환경을 이용하여 DB를 여러지역, 여러 노드로 위치시킴

- 이로 인해 사용성과 성능을 극대화 시킨 DB

 

분산 DB가 되기 위한 6가지 투명성 (Transparency)

- 분할 투명성 (단편화) : 하나의 논리적인 Relation이 여러 단편으로 분할, 사본이 여러 site에 저장

- 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 

- 지역사상 투명성 : 지역 DBMS와 물리적 DB사이의 Mapping보장

- 중복 투명성 : DB 객체가 여러 site에 중복 되었는지 알 필요 없음

- 장애 투명성 : 구성요소의 장애에 무관한 Traslation의 원자성 유지

- 병행 투명성 : 다수 Translation 동시 수행시 결과의 일관성 유지

 

분산 DB의 적용 기법

- 테이블 위치 분산 : 각 Table 마다 다른 지역에 저장되어 있는 형태

- 데이블 분할 분산 : 각각의 Table을 쪼개어 다른 지역에 저장하는 방법. 수평/수직 분할이 있음

- 데이블 복제 분산 : 가장 많이 사용. 부분 복제는 원본은 본사에 부분은 각 지사에서 관리

                                 광역복제는 모든 지사가 같은 Table을 가지나 입력,수정,삭제는 본사에서 관리

- 데이블 요약 분산 : 분석요약 - 각 지사의 요약정보를 모아 본사에서 다시 요약

                                통합요약 - 각 지사에서 다른 내용으로 요약한 정보를 본사에서 다시 요약


우선 1과목은 다 읽고 약 3일에 거쳐서 정리했다.

수퍼/서브 모델 타입은 좀 더 공부후 수정 하자