| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 파일시스템
- 프로그래밍패러다임
- 이벤트처리
- ReactNative
- 보안솔루션
- SQLD
- 함수형프로그래밍
- 챌린지
- folium
- db
- 베이직
- defaultdict
- sql
- 단위테스트
- BFS
- pandas
- 코딩테스트
- PYTHON
- 부스트캠프
- DFS
- display
- parser
- CSS
- Graph
- javascript
- flexbox
- database
- 가상메모리
- OOP
- reactnavigation
- Today
- Total
DevLog
[SQLD] 1과목 "데이터 모델과 성능" 핵심 요약 정리 본문
06. 정규화와 성능
성능 데이터 모델링
분석/설계 단계부터 데이터베이스의 성능을 고려한 데이터 모델링 수행 기법
* 데이터 모델 성능 저하의 원인
→ 잘못 설계된 데이터 모델 구조
→ 데이터가 대용량으로 누적됨
→ 잘못 생성된 인덱스
성능 데이터 모델링의 수행 절차⭐⭐
1. 논리 모델링 단계에서 데이터베이스 정규화를 정확하게 수행
2. 데이터베이스 용량산정 (현재 용량, 예상 증가량 조사)
3. 데이터베이스에 발생되는 트랜잭션 유형 파악
4. 용량과 트랜잭션 유형에 따라 반정규화 수행 (다시 합치거나 or 또 나누거나)
5. 추가 조정 과정 수행 (모델 조정, 식별자 조정, 타입 조정 등)
6. 성능 관점에서 데이터 모델 검증
데이터베이스 정규화(DB Normalization)
논리 모델링 수행 단계에서 데이터 모델을 일정한 규칙에 따라 변형하여 이용하기 쉽도록 만드는 작업.
데이터 이상현상 제거를 위해 데이터를 분해하여 데이터 중복을 제거하고 모델 독립성을 확보하는 과정이다.
* 이상현상(Abnormality)
1) 삽입이상 : 행 삽입 시 지정되지 않은 속성 값이 NULL을 가지는 경우
2) 갱신이상 : 데이터 갱신 시 일부 데이터만 갱신되어 일관성 유지가 안되는 경우
3) 삭제이상 : 행 삭제 시 원하지 않는 연쇄 삭제가 발생하는 경우
정규화 단계

모든 정규화 작업은 이전 정규화를 만족해야 하며,
정규화를 하게 되면 테이블이 여러 개로 분해되기 때문에 조인 가능성이 높아져 조회 성능이 저하될 수 있다.
07. 반정규화(De-Normalization)와 성능
반정규화는 데이터베이스 성능향상을 위해 데이터 중복을 허용하고 조인을 줄이는 성능 향상 방법이다.
정규화의 반대 개념으로, 역정규화라고도 불린다. (!=비정규화)
08. 대용량 데이터에 따른 성능
설계가 잘 되어있는 데이터 모델이더라도 저장된 데이터의 양이 많아지면 인덱스 트리구조가 커지면서 디스크 I/O 소요 시간이 길어진다. 이렇게 대용량 데이터가 있는 경우, 성능 저하를 막기 위해서 파티셔닝 방법을 적용할 수 있다.
파티셔닝(Partitioning)이란 대용량 테이블을 작은 여러 개의 파티션으로 나누어 데이터 접근성과 관리 용이성을 높이는 작업이다. 파티션 테이블을 사용하게 되면 데이터 조회 시 엑세스 범위가 줄어들기 때문에 성능이 향상되고, 데이터가 여러 곳에 분할되기 때문에 I/O 성능이 향상된다(데이터를 읽고 쓰는 데 걸리는 시간이 줄어듦). 또한, 각 파티션을 독립적으로 관리하고 백업 및 복구할 수 있다.
09. DB 구조와 성능
슈퍼/서브타입 데이터 모델
= Extended ER모델
공통 부분을 뽑아내서 슈퍼타입으로 모델링하고, 차이가 있는 속성은 별도의 서브 엔티티로 구분하여 분리한다.
업무 데이터의 특징을 공통점과 차이점을 기준으로 정확하게 표현 가능하며, 물리 모델링 단계에서 다양한 데이터 모델 타입으로 변환할 수 있다는 장점이 있다.

슈퍼/서브타입 데이터 모델 변환 방법⭐
1) One-to-One Type
슈퍼타입과 서브타입을 각각 따로 변환. (Super / Sub1 / Sub2)
불필요한 I/O를 줄일 수 있지만, 테이블의 수가 많아서 조인이 많이 발생하게 되고 관리가 어렵다.
2) Plus Type
슈퍼타입과 각 서브타입을 따로따로 묶어서 변환. (Super-Sub1 / Super-Sub2)
각 트랜잭션에 필요한 속성만 통합해서 관리한다. 서브타입이 많은 경우는 관리가 어려울 수 있다.
3) Single Type
슈퍼타입과 서브타입들을 모두 묶어서 하나의 테이블로 변환. (Super-Sub1-Sub2)
하나의 테이블을 운용하기 때문에 관리가 좋고 조인이 줄어들지만 I/O 효율이 좋지 않다.

10. 분산DB 데이터에 따른 성능
분산 데이터베이스는 여러 곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용하는 데이터베이스다.
네트워크를 이용하여 DB를 각 지역에 위치시킴으로써 사용성과 응답속도를 향상시킨다. 또한 각 DB를 지역 자치적으로 관리하기 때문에 점증적으로 시스템 확장이 가능하다 (일부만 확장 가능). 하지만, 동시에 오류의 잠재성과 데이터 무결성, 보안성이 떨어진다는 단점이 있다.
분산 데이터베이스의 투명성(Transparency)⭐
분산DB는 6가지 투명성을 만족해야 한다.
1) 분할 투명성(단편화) : 실제 DB는 나뉘어 있지만, 사용자가 데이터가 분할되어 있다는 사실을 알 필요가 없다.
2) 위치 투명성 : 사용자가 데이터 분할 사실을 알더라도, 분할된 데이터의 위치 정보를 알고 사용할 필요가 없다.
3) 지역사상 투명성 : 사용자가 데이터의 이름과 위치를 특정할 수 있는 경우, 다른 지역에 있다는 사실을 알 수 있다.
4) 중복 투명성 : 데이터가 여러 지역 서버에 중복되어 있는지 알 필요가 없다. (하나의 데이터만 존재한다고 느낌)
5) 장애 투명성 : 장애가 발생하더라도 자동으로 다른 서버에서 같은 데이터를 가져와서 해결하기 때문에 사용자가 장애 사실을 알 필요가 없다.
6) 병행 투명성 : 다수의 트랜잭션이 동시에 수행되고 있더라도 개인이 독점적으로 데이터를 작업하고 있다고 느끼게 한다.

'이모저모 > SQLD' 카테고리의 다른 글
| [SQLD] 2과목 "SQL 활용" - JOIN 파트 핵심 요약 정리 (0) | 2023.11.15 |
|---|---|
| [SQLD] 2과목 "SQL 기본" - 단일행함수, 집계함수 파트 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] 2과목 "SQL 기본" 파트 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] 1과목 "데이터 모델링의 이해" 핵심 요약 정리 (0) | 2023.11.14 |
| [SQLD] SQLD 자격증 :: 제51회 SQLD 개발자 자격시험 준비 (0) | 2023.11.14 |