일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 java
- 리눅스
- 개발자 회고록
- GoingBus
- Java
- 연습문제
- 코딩테스트
- map
- 월간코드챌린지
- 자바스크립트 코딩의 기술
- 명령어
- 리눅스마스터 1급 정리
- toCharArray
- 스프링 컨테이너
- 카카오
- JavaScript
- Memoir
- 반복문
- Linux
- Kotlin
- 고잉버스
- 문자열
- 코테
- 리눅스마스터 3과목
- 리눅스마스터1급
- 자바
- 프로그래머스
- 스프링 빈
- java 백준 1차원 배열
- 백준 javascript
- Today
- Total
hoon's bLog
SQLD 데이터 모델과 성능 본문
성능 데이터 모델링
- DB 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등
여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
- 문제 발생시점에 튜닝, 성능을 튜닝하며 데이터 모델이 변경 가능
- 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우, 성능저하에 따른 재업무 비용을 최소화할 수 있음.
- 데이터의 증가가 빠를수록, 성능저하에 따른 성능 개선비용은 기하급수적으로 증가
성능 데이터 모델링 고려사항 순서
- 데이터 모델링을 할 때 정규화를 정확하게 수행
- DB 용량산정을 수행
- DB에 발생되는 트랜잭션의 유형을 파악
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행
- 이력모델의 조정, PK/FK조정, 슈퍼/서브타입 조정
- 성능관점에서 데이터 모델을 검증
함수적 종속성
- 데이터들이 어떤 기준값에 의해 종속되는 현상
- 기준값을 결정자, 종속되는 값을 종속자 ex) 주민등록번호(결정자) - 이름 / 출생지 / 주소(종속자)
- 기본적으로 데이터는 속성간의 함수종속성에 근거하여 정규화되어야 함.
대량 데이터 발생에 따른 형태
로우체이닝(Row Chaining)
- 로우길이가 너무 길이서 데이터 블록 하나에 데이터가 모두 저장되지 않고, 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
로우마이그레이션(Row Migration)
- 데이터 블록속에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
대량 데이터 저장 및 처리로 인해 성능 향상 기법
RANGE Partition 적용
- 숫자값으로 분리가 가능하면 범위를 지정해서 분리
- 데이터보관주기에 따른 테이블 관리가 용이
HASH Partition (해쉬적용)
- 지정된 HASH조건에 따라 해쉬 알고리즘이 적용되어 테이블이 분리
- 설계자는 테이블 데이터가 정확히 어떻게 들어갔는지 알 수 없음
LIST Partition (특정값 지정)
- 대용량 데이터를 특정값에 따라 분지 저장할 수 있으나, 데이터 보관주가에 따라 쉽게 삭제하는 기능은 제공 X
COMPOSITE Partition(범위와 해쉬가 복합)
- 컬럼 수가 적지만 데이터 용량이 많아 성능저하가 예상되는 경우 테이블에 대해 Partitioning 전략을 고려해야 함
정규화
- 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것
- 정규화 수행하면 데이터 처리(DML) 성능 향상(입력, 수정, 삭제 기능 향상)
- 조회는 향상 또는 저하될 수 있음 반정규화 장점(일반적으로 조회 성능향상이 됨)
1차 정규화(1NF)
- 같은 성격, 내용 컬럼이 연속될 때 컬럼제거, 테이블 생성(중복 속성에 대한 분리)
- 1:M으로 분리
2정규형(2NF)
- 일반속성은 주식별자 전체에 종속적이어야 함.(부분함수 종속제거)
3정규형(3NF)
- 일반속성 간에는 종속성이 없어야 함. (추이함수 종속성 제거)
반정규화
- 조회 기능 향상
- 반정규화 절차 : 반정규화 대상 조사 → 다른 방법 검토 → 반정규화 적용
반정규화 기법
테이블 반정규화
- 테이블병합(1:1, 1:M, 슈퍼/서브타입) 테이블 분할(수직_칼럼단위, 수평_로우단위) 테이블추가(중복, 통계, 이력, 부분)
칼럼 반정규화
- 중복칼럼추가, 파생칼럼추가, 이력테이블 칼럼 추가, PK에 의한 칼럼추가, 응용시스템 오작동 위한 칼럼추가
관계 반정규화
- 중복관계 추가, 테이블, 칼럼 반정규화와 달리 데이터 무결성 영향 없음
슈퍼 / 서브 타입 모델
- 슈퍼타입 : 공통부분
- 서브엔터티 : 공통부분 상속받아, 다른 엔터티와 차이가 있는 속성 대해 별도로 구분 변환기준? 데이터 양 & 트랜잭션 유형
슈퍼/서브타입 변환
- One to One : 개별테이블, 확장성 우수, 조인성능 나쁨, I/O 좋음, 관리 안 좋음
- Plus Type : 슈퍼서브타입테이블, 확장성 보통, 조인성능 나쁨, I/O 좋음, 관리 안 좋음
- Single Type : 하나의 테이블, 확장성 나쁨, 조인성능 우수, I/O 나쁨, 관리 좋음
- 인덱스 특성을 고려한 PK/FK 데이터베이스 성능향상 이해
- PK 칼럼 순서 중요, FK칼럼의 인덱스 컬럼화 필요
분산 데이터베이터 투명성
분할(단편화), 위치, 지역사상, 중복, 장애, 병행 투명성
분산 데이터베이스의 장단점
- 장점 : 지역자치성, 점증적 시스템 용량확장, 신뢰성, 가용성, 효용성, 융통성, 빠른 응답, 통신비용 절감, 데이터가용성, 신뢰성, 시스템규모조절, 요구수용 증대
- 단점 : 비용, 오류잠재성 증대, 처리비용, 설계관리복잡성, 불규칙한 응답속도, 통제어려움, 데이터 무결성위협
분산 데이터베이스의 적용 기법
테이블 위치 분산
- 테이블 구조 변화 X, 각각의 테이블 위치가 다르게 지정
테이블 분할 분산
- 각각 테이블을 쪼개어 분산
- 수평 분할 : 로우단위 / 수직 분할 : 컬럼단위
테이블 복제 분산
- 동일한 테이블 다른 지역이나 서버에서 동시에 생성하여 관리
- 부분복제 : 통합된 건 본사, 각 지사별로 해당 로우
- 광역복제 : 본사, 지사 모두 동일한 데이터 가지고 있음
테이블 요약 분산
- 분석요약 : 각 지사별로 요약, 본사에 통합
- 통합요약 : 각 지사별로 존재하는 다른 내용이 정보요약, 본사에 통합
1차정규형 : 모든 도메인이 원자값만으로 구성되도록 하는 정규형. 중복제거
2차정규형 : 부분적 함수종속 제거 (완전 함수 종속)
3차정규형 : 이행적 함수(X→Y, Y→Z, X→Z) 종속 제거
참조 : https://rebro.kr/160
'IT > SQLD' 카테고리의 다른 글
SQLD SQL 기본 및 활용, 최적화 기본원리 (3) | 2023.03.07 |
---|---|
SQLD 데이터 모델링의 이해 (2) | 2023.02.28 |