Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 정규화
- feature map
- 식별자
- outer join
- 그래프
- get_dummies()
- SQLD
- Inductive Bias
- 인접리스트
- skip connection
- 1x1 Convolution
- pytorch
- depthwise convolution
- resnet
- numpy
- SQLD 후기
- dfs
- BFS
- mobilenet
- Depthwise Separable Convolution
- CROSS JOIN
- 엔터티
- bottleneck
- dp
- 연산량 감소
- Two Pointer
- 데이터모델링
- 인접행렬
- SQL
- 백준
Archives
- Today
- Total
SJ_Koding
SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화, 데이터베이스 본문
2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자(Identifier)
이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.
https://youtu.be/gmMaH5mMJ9M?t=2180
성능 데이터 모델링의 개요
1. 성능 데이터 모델링의 개념
- 분석 및 설계 단계부터 데이터베이스 성능을 고려한 데이터 모델링을 수행하는 기법
- 데이터 모델을 중심으로 성능에 대한 데이터 모델링을 수행
2. 성능 데이터 모델링의 수행 절차
- 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터베이스 용량을 현재와 예상 증가량을 고려하여 조사한다.
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
- 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 성능관점에서 데이터 모델을 검증한다.
정규화와 성능
1. 정규화의 개념
- 데이터의 일관성, 최소한의 중복, 최대한의 유연성을 위한 방법
- 데이터를 분해하는 과정
- 정해진 규칙에 따라 데이터를 이용하기 쉽게 만드는 일
- 데이터의 중복을 제거
- 데이터 모델의 독립성을 확보
- 데이터 이상현상(Abnormality)을 줄이기 위한 설계 기법
- 엔터티를 상세화하는 과정이며 논리 데이터 모델링 수행 시점에서 고려
2. 이상현상(Abnomality)
- 삽입이상: 행(row) 삽입 시 지정되지 않은 속성 값이 NULL을 가지는 경우
- 갱신이상: 데이터 갱신 시 일부분의 데이터만 갱신되어 일관성 유지가 안되는 경우
- 삭제이상: 행(row) 삭제 시 원하지 않는 연쇄 삭제가 발생하는 현상
3. 정규화의 단계
제1정규화 | - 테이블 내 속성의 원자성을 확보하는 단계 - 기본키를 설정 |
제2정규화 | 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거 (두 개를 분리해서 따로 테이블을 만듦) |
제3정규화 | - 기본키를 제외(Non-Key)한 컬럼 간 종속성을 제거 - 이행 함수 종속성 제거 |
BCNF(Boyce-Codd Normal Form) | - 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속 시키면 분해 - 결정자 함수 종속성을 제거하는 단계 - 강한 제3정규화 |
제4정규화 | 여러 컬럼들이 하나의 컬럼을 종속 시키는 경우 분해하여 다중값 종속성을 제거 |
제5정규화 | 조인(Join)에 의한 종속성이 발생되는 경우 분해 |
3-1 제 1 정규화 예시 (원자성 확보)
3-2 제 2 정규화 예시 (부분 함수 종속성 제거)
3-3 제 3 정규화 예시 (이행 함수 종속성 제거)
4. 정규화 주의사항
- 모든 정규화는 이전 정규화를 만족해야한다.
- 정규화시 이상현상은 제거 되지만 테이블의 분해로 데이터 조인의 발생이 많아지고, 이는 조회 성능 저하로 이어질 수 있다. (I/O증가 및 조인 연산 증가) --> 반정규화 필요
- 단일 테이블 조회시엔 데이터 중복이 제거되어 조회 성능이 향상 될 여지가 있다.
반정규화와 성능
1. 반정규화 개념
- 데이터베이스 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 방법
- 시스템의 성능 향상 및 개발 운영의 단순화를 위해 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법
- 조회속도를 향상 시킬 수 있지만 데이터 모델의 유연성은 낮아짐.★
- 비정규화는 정규화를 수행하지 않음을 의미하며, 반정규화는 역정규화라고 표현하기도 함
비정규화와 반정규화는 다른 개념!
2. 반정규화를 수행해야 하는 경우
- 정규화를 잘하면 종속성, 활용성이 향상되지만 수행 속도가 느려진 경우
- 다량의 범위를 자주 처리해야하는 경우
- 특정 범위의 데이터만 자주 처리 하는 경우
- 요약/집계 정보를 자주 사용하는 경우
3. 반정규화의 절차
- 대상 조사 및 검토 (문제파악)
- 데이터 처리 범위, 통계성 등을 확인 후 반정규화를 수행한다.
- 대량의 범위처리 및 빈도수, 통계성 프로세스, 테이블 조인 수
- 다른 방법 검토
- 클러스터링, 뷰, 인덱스, 응용 프로그램, 파티셔닝등 다른 방법으로 해결 할 수 있는지 확인한다.
- 반정규화 수행 (다른 방법이 없을 경우)
- 테이블, 속성, 관계 등을 반정규화 한다.
- 테이블 반정규화, 속성의 반정규화, 관계의 반정규화
4. 반정규화 기법
데이터베이스
1. 데이터베이스 구조
- 현대의 물리적 시스템에 여러 명의 사용자가 접속해서 사용하는 데이터베이스를 중앙 집중형 데이터베이스라고 한다.
- 물리적으로 떨어져 있지만 네트워크로 연결된 단일 데이터베이스 이미지를 보여주고 분산된 작업을 하는 데이터베이스를 분산 데이터베이스라고 한다.
2. 분산 데이터베이스의 투명성
분할 투명성 | 고객은 하나의 논리적 관계가 여러 단편으로 분할 되어 각 단편의 사본이 여러 시스템에 저장 되어 있음을 알 필요 없다. |
위치 투명성 | - 고객이 사용하는 데이터베이스의 위치를 알릴 필요가 없다. - 어느 위치에서 접근 하더라도 동일한 명령으로 접근 할 수 있어야 한다. |
지역 사상 투명성 | 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름을 사용할 수 있다. |
중복 투명성 | 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지 되어야 한다. |
장애 투명성 | 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 보장 되어야 한다. |
병행 투명성 | 여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야 한다. |
3. 분산 데이터베이스 설계 방식
- 상향식 설계 방식은 지역 스키마 작성 후 향후 전역 스키마를 작성하여 분산 데이터베이스를 구축하는 방식
- 하향식 설계 방식은 전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 문산 데이터베이스를 구축하는 방식
'SQL > SQLD' 카테고리의 다른 글
SQLD 대비 (6) - SQL 문법 및 라이브러리_1 (1) | 2023.11.13 |
---|---|
SQLD 대비 (5) - 관계형 데이터베이스 (RDBMS) (0) | 2023.11.13 |
SQLD 대비 (3) - 식별자(Identifier) (2) | 2023.11.11 |
SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) (0) | 2023.11.11 |
SQLD 대비 (1) - 데이터 모델의 이해 (0) | 2023.11.09 |