본문 바로가기
Be Smart/SQL

[SQLD] (2) 데이터 모델과 성능

by 반월하 2021. 10. 25.
728x90

성능 데이터 모델링


DB 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인 구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

PK: Primary Key, 기본키로 해당 테이블에서 가장 기본적이 값을 가짐, NULL이 될 수 없음
FK: Foreign Key, 테이블간 링크가 무너지는 액션을 방지, 두 개의 테이블을 연결해주는 다리 역할

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


정규화 -> 용량산정 -> 트랜잭션 유형 파악 -> 반정규화 -> 이력 모델 조정, PK/FK 조정, 슈퍼/서브타입 조정 -> 성능 관점 데이터 모델 검증 (분석/설계 단계에서 성능 데이터 모델링하기)

함수적 종속성


데이터들이 어떤 기준값에 의해 종속되는 현상 (기준값을 결정자, 종속되는 값을 종속자)
ex) 주민등록번호 - (이름, 출생지, 주소)

정규화


반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것

1. 제1 정규형 (1NF)
- 모든 속성은 반드시 하나의 값을 가져야한다.
- 도메인이 원자 값

2. 제2 정규형 (2NF)
- 모든 속성은 반드시 기본키 전부에 종속되어야 한다.
- 부분적 함수 종속 제거
(기본키에 의해 함수적 종속성을 가지고 있지 않는 것들을 분리)

3. 제3 정규형 (3NF)
- 모든 속성들이 기본키에 이행적 함수 종속이 아니다.

4. 보이스 코드 정규형 (BCNF)
- 모든 결정자가 후보 키이다 (후보 키가 아닌 것들을 제외 및 분리)

반정규화


정규화된 엔터티 속성 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복 통합 분리 등을 수행하는 데이터 모델링의 기법

반정규화 장점


일반적으로 정규화 시 입력 수정 삭제 성능이 향상되며 반정규화시 조인 성능이 향상된다.

반정규화 절차


반정규화 대상 조사 -> 다른방법 검토 (뷰, 클러스터링, 인덱스 조정) -> 반정규화 적용

반정규화 기법


- 테이블 반정규화
  - 테이블 병합 (1:1, 1:M, 슈퍼/서브타입)
  - 테이블 분할 (수직_칼럼 단위, 수평_로우 단위)
  - 테이블 추가 (중복, 통계, 이력, 부분)

- 칼럼 반정규화
  - 중복칼럼 추가, 파생칼럼추가, 이력테이블 칼럼 추가, PK에 의한 칼럼추가, 응용시스템 오작동 위한 칼럼추가

- 관계 반정규화
  - 중복 관계 추가, 테이블, 칼럼 반정규화와 달리 데이터 무결성 영향 없음

로우체이닝


로우 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

로우 마이그레이션


데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

파티셔닝


PK에 의해 테이블을 분할하는 방법
1 RANGE PARTITION: 대상 테이블이 날짜 또는 숫자 값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리되는 경우
ex) _0401 요금
2 LIST PARTITION : 지점, 사업소 등 핵심적인 코드값으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블의 경우
ex)_ 고객 서울
3 HASH PARTITION : HASH 지정된 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리

슈퍼 / 서브 타입 모델


슈퍼 타입 : 공통부분
서브 엔터티 : 공통부분 상속받아 다른 엔터티와 차이가 있는 속성에 대해 별도로 구분
변환 기준: 데이터 양 & 트랜잭션 유형

슈퍼 서브 / 타입 데이터 모델의 변환 기술


▶ One to One : 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성 (확장성 우수, 조인 성능이 나쁨, I/O 좋음, 관리 안 좋음)
▶ Plus Type : 슈퍼 타입 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼 서브타입 + 테이블로 구성 (확장성 보통, 조인 성능 나쁨, I/O 좋음, 관리 안 좋음)
▶ Single Type : 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성 (확장성 나쁨, 조인 성능 우수, I/O 나쁨, 관리 좋음)

인덱스 특성을 고려한 PK/FK 데이터베이스 성능 향상 이해


인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값으로 비교해야 좋은 효율을 나타낸다.
앞쪽에 위치한 속성의 값이 가급적 아니면 최소한 '=' 범위 'BETWEEN' '<>'가 들어와야 효율적이다.

분산 데이터베이스


여러 곳으로 분산되어있는 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스

분산 데이터베이스 투명성


분할(단편화), 위치, 지역 사상, 중복, 장애, 병행 투명성

분산 데이터베이스의 장단점


- 장점 : 지역 자치성, 점증적 시스템 용량 확장, 신뢰성, 가용성, 효용성, 융통성, 빠른 응답, 통신비용 절감, 데이터 가용성, 신뢰성, 시스템 규모 조절, 요구 수용 증대

- 단점 : 비용, 오류 잠재성 증대, 처리비용, 설계관리 복잡성, 불규칙한 응답속도, 통제 어려움, 데이터 무결성 위협

분산 DB 6을 만족하기 위한 가지 투명성


분할 투명성(단편화), 위치 투명성, 지역 사상 투명성, 중복 투명성, 장애 투명성, 병행 투명성

분산 데이터베이스의 적용 기법


테이블 위치 분산 - 설계된 테이블을 본사와 지사 단위로 분산
테이블 분할 분산 - 각각의 테이블을 쪼개어 분산
    -> 수평 분할 - 로우 단위, 수직 분할 - 칼럼 단위
테이블 복제 분산 - 동일한 테이블 다른 지역이나 서버에서 동시에 생성하여 관리
    -> 부분 복제 - 통합된 건 본사, 각 지사별로 해당 로우
    -> 광역 복제 - 본사, 지사 모두 동일한 데이터 가지고 있음
테이블 요약 분산 - 지역 간에 또는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우
    -> 분석 요약 - 각 지사별로 요약, 본사에 통합
    -> 통합 요약 - 각 지사별로 존재하는 다른 내용이 정보 요약, 본사에 통합

728x90

댓글