일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 한 권으로 읽는 컴퓨터 구조와 프로그래밍
- Til
- CS
- 덴드로그램
- 1463
- 다시 왔다!
- SQL
- FastAPI
- 2023
- 프로그래머스
- 퓨처셀프
- Programmers
- 컴퓨터 과학이 여는 세계
- 백준
- 멀티스레딩
- 엘런 튜링
- 혼자 공부하는 SQL
- 문제풀이
- WIL
- 선형대수
- MVT
- Stored Procedure
- computer science
- Django
- stored function
- JP Study
- Recommender system
- PCA
- mysql
- 미래혁신대전
- Today
- Total
Growth Hoon
20230829_TIL SQLD 1과목 ( 데이터 모델과 성능 ) 본문
성능 데이터 모델링이란?
- 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일에 거쳐서 정리했다.
수퍼/서브 모델 타입은 좀 더 공부후 수정 하자
'TIL_Today I Learned' 카테고리의 다른 글
20230905_TIL_CS책{ 조합논리, 순차논리 } (0) | 2023.09.05 |
---|---|
20230904_TIL_Computer Science{컴퓨터 구조, 프로세스 코어, 함수} (0) | 2023.09.04 |
20230828_TIL_SQLD {Entity, Attribute, Relationship, Identifiers} (0) | 2023.08.28 |
20230827_TIL_SQLD공부 ( ~24p) (0) | 2023.08.27 |
20230826_TIL_JPstudy(엔트로피, 파이썬 내장 자료형) (0) | 2023.08.27 |