데이터베이스 관리 Flashcards
파티셔닝
[정의] 데이터베이스 성능/가용성 보장 위해 스키마 수정없이 대규모 테이블을 작은단위로 Range, List, Hash 기법기반 분할 관리 기법
[목적] 가용성, 성능향상, 관리 용이성
[종류] 수평(레코드 기준), 수직(컬럼 기준)
[파티션 분할 기준] (레리해코)
- Range : 키 값 범위 (1~100 101~200/날짜)
- List : 불연속 값목록 (지역별/성별)
- Hash : 해시함수 (Hash값 범위)
- Composite : 각 파티션의 서브 파티션 구성 (Range+Hash)
[동향]
- Range-Range, 리스트+해시, Reference(부모키 기반 자식 테이블 파티션), Interval (Range 파티션시 Interval 기준 자동 추가)
[성능향상 방안]
1. Data Archiving과 연계하여 Range 주로 사용 : DB 사이즈 절감 및 데이터 보관 용도
2. SQL 성능 향상을 위한 Subpartition 활용 : List-Range 의 Composite 형태로 활용
3. 파티션 수가 많은 경우 일반 테이블 대비 성능저하 : Partition Range = ALL, ITERATOR
4. 성능향상을 위해 관련 Index도 Partitioning : Local Option 통한 Partitioning Index 생성
샤딩
[정의] 데이터베이스 성능향상 위해 물리적으로 다른 DB에 데이터를 수평 분할 방식의 분산 DB 관리 기법
[특징] 성능 개선, 신뢰성 개선, 위치 추상화, 몽고DB 핵심 기능
[유형]
- 데이터 분할측면 : (벌레해디) Vertical(테이블 분리), Range based(서버 분리), Hash Based(해시기반 분리, Directory based(DB/캐시 조합) Partitioning
- 테이블 분할측면 : 수평/수직 파티셔닝
[샤딩과 파티셔닝 관계] 수평파티셔닝(여러곳에 분산 저장, 가용성, =샤딩), 수직파티셔닝(하나의 엔티티를 2개 이상으로 분리)
[구성시 고려사항] 데이터 내결함성 확보 ,쿼리 효율성 고려, Global Unique Key관리 (중복 가능성으로 App레벨에서 관리)
* 대규모 데이터 다루는 분산 환경에서는 샤딩 적합. 반면, 단일 서버에서 대용량 테이블 성능 개선 및 관리 용이 위해 파티셔닝 적합
쿼리.오프로딩
[리드] 대용량 데이터 처리 DB 성능 향상 아키텍처
[정의] Update 트랜잭션과 Read 트랜잭션을 분리 DB의 처리량을 증가시켜 성능을 높이는 기법
[특징] 읽기/쓰기 분리 DB 부하방지, 일반적 읽기/쓰기 비율 80:20
* 대용량 데이터 처리시 DB 성능 향상을 위해 트랜잭션을 분리 하여 처리하는 아키텍처
[구성요소]
- DB 요소 : Master(Update 트랜잭션), Staging (경유지, 성능저하 방지), Slave DB (Read 트랜잭션)
- 트랜잭션 요소 : Connection Pool, Update/Read 트랜잭션
- 기술 요소 : CDC(Change Data Capture) : 복제기술, Back Log를 이용 Source DB에서 Target DB에 replay, 분산 처리 (대규모 분산 아키텍처의 기술 요소), 로드밸런스(HA 고가용성위한 SW/HW)
* 분산 처리에 대표적인 Scale-Out 아키텍처로 샤딩과 쿼리 오프로딩이 존재
[차별화] Scale-Out 아키텍처, 쿼리 오프로딩 vs 샤딩 비교
- 개념 : 읽기,쓰기 분리 / 분리된 Instance Data 분리
- 목적 : DB 성능향상 / DB 용량 한계극복
- 기법 : CDC, Master/Staging/Slave DB / 수평분할, Range, Hash
CDC
[리드] 변경 로그 기반 실시간 복제
[정의] 트랜젝션 로그 변경 사항을 실시간으로 캡쳐 변환/복제에 이용하는 데이터 동기화 기술
[제공 장점] 실시간 작업 환경 구축, 운영시스템의 부하 감소, 신뢰성 있는 데이터 복제
[절차]
1. 추출 : DB의 로그 발생시 Capture 프로세스 발생 통한 데이터 추출
2. 전송 : Source → Target으로 전송
3. 적재 : Target엔진에서 타겟DB에 적제
* 트랜젝션 로그상의 변경 데이터를 추출하여 타겟 시스템으로 전송 및 적재
[동기화 기법]
- Refresh : 모든 데이터를 다시 Load (용이한 구축, 높은 안전성)
- 타임스탬프 : 최종 가져온 시점 체크 이후 데이터 이관 (추출 속도 개선, 이력관리 어려움)
- 변경로직 개발 : 직접 변경 데이터를 캡처하는 로직 구현 (유연한 구성, 운영&유지보수 어려움)
- 트랜잭션 로그 캡쳐 : Redo로그 분석 변경데이터 이관 (성능영향 최소화, 캡처프로그램 필요)
[고려사항]
- 대량 데이터 처리 성능 : Quer Off-Load 적용
- No Loggin 트랜잭션 대응 : 전체 데이터 재 동기화가 효율적
- 암호화 데이터 처리 : 복호화 필요성 고려