1. 대량 데이터에 따른 성능
- 아무리 설계가 잘되어 있더라도 대량의 데이터가 하나의 테이블에 집약되어 있는 경우 성능 저하 발생 가능
- 테이블 단위의 분할(수직/수평 분할)을 통해 해결 가능
- 수평 분할 : 행 단위로 요소 분할하여 디스크 입/출력 비용 감소
- 수직 분할 : 컬럼 단위로 요소를 분할하여 디스크 입/출력 비용 감소
성능 저하 현상
- 로우 체이닝(Row Chaining)
- 행 데이터가 너무 길어 2개 이상의 블록에 걸쳐 하나의 행이 저장된 형태
- 하나 행 읽을 때 2개 이상의 블록을 읽게 되어 읽어야 하는 데이터가 증가하므로 성능 저하
- 로우 마이그레이션(Row Migration)
-
데이터 블록에서 수정 발생 시 수정된 데이터를 다른 블록의 빈 공간을 찾아 저장하는 방식
-
로우 체이닝과 하나 행 읽을 때 2개 이상의 블록을 읽게 됨
-
두 현상 모두 데이터베이스 블록에 많은 데이터가 저장되고 데이터 조회 과정에서 블록 입/출력 횟수 증가
수직 분할
- 데이터의 컬럼 수가 많은 경우 데이터를 읽을 때마다 불필요한 블록의 입/출력 증가
- 이럴 경우 수직 분할을 통해 필요한 정보만 조회 가능
수평 분할
- 데이터의 양이 많은 경우 데이터를 매번 조회할때마다 수천만 건의 데이터를 매번 저장하여 조회하므로 데이터베이스의 성능에 매우 큰 영향을 준다.
- 이 경우 수평 분할을 통해 데이터의 수를 나눠 성능을 향상 시킬 수 있다
-
범위 분할(Range Partition) : 특정 기간을 중심으로 분할
-
목록 분할(List Partition) : 리스트의 특정 값을 기준으로 분할
-
해시 분할(Hash Partition) : 지정된 해시 조건에 따라 해싱 알고리즘 적용하여 테이블 분리
장점
- 기존 1개의 테이블에만 데이터 입력하는 방식보다 부하 줄어듦
- 특정 파티션에 데이터 집중 가능성 방지
- 데이터 처리 많아지는 경우 경합 막을 수 있음
단점
- 데이터 보관 주기에 따라 쉽게 삭제 기능 제공하기 어려움
- 설계자 및 데이터 입력자는 특정 데이터가 어떤 파티션에 저장되는지 예측하기 어려움
-
합성 분할(Composite Partitioning) : 위의 3개의 분할 방식을 섞는 방법
테이블 수평/수직 분할 절차
- 데이터베이스 모델링 진행
- 데이터베이스 테이블의 용량 산정
- 데이터 처리 과정에서 트랜잭션 처리 패턴 분석
- 데이터 처리 과정이 컬럼/로우 중 어디에 집중되는지 분석 후 그 부분의 테이블 파티셔닝
2. 데이터베이스의 구조와 성능
2.1 슈퍼타입/서브타입
- 슈퍼타입 : 공통적인 특성 / 서브타입 : 자신만의 속성
- 공통적인 부분을 슈퍼 타입 엔터티로 만들고 그것으로부터 상속받아 다른 엔터티와 차이가 있는 속성을 별도의 서브 타입 엔터티로 구분
- 업무를 구성하는 데이터의 특징을 공통/차이점으로 나누어 표현 가능하므로 직관적 모델링 가능
2.2 슈퍼타입/서브타입 모델 변환 방법 및 비교
3. 분산 데이터베이스와 성능
분산 데이터베이스
- 여러 곳에 분산되어 있는 데이터베이스 시스템을 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 논리적으로는 동일한 시스템이지만 네트워크를 통해 물리적으로 분산되어 있는 데이터의 모임
- 물리적으로는 분산되어 있지만 논리적으로는 하나의 데이터베이스를 다루는 것처럼 사용자를 통합
분산 데이터베이스의 투명성
- 투명성 : 해당 데이터베이스를 사용하는 사용자가 데이터베이스 시스템이 논리적으로 분산되어 있음을 인식하지 못하고 나만의 데이터베이스 시스템을 사용하는 것처럼 느끼게 만드는 것
분산 데이터베이스 장단점
분산 데이터베이스 활용 방향성
- 과거의 분산 데이터베이스 시스템은 위치 중심 -> 물리적인 지역별로 나뉘어져 있고 서버간 네트워크로 연결
- 최근의 분산 데이터베이스 시스템은 업무 특성에 맞게 내외부 데이터베이스 나눠 설계 진행하여 더 빠른 성능
- 그러나 원거리 or 다른 서버에 접속하면서 발생하는 네트워크 트래픽 혹은 트랜잭션 집중으로 인한 성능 저하 발생 가능
분산 데이터베이스 적용 기법
1. 테이블 위치(Location) 분산 : 설계된 테이블의 위치 다르게 조정
2. 테이블 분할(Fragmentation) 분산 : 각 테이블을 쪼개서 분산하는 방법, 수직/수평 분할 방법 사용
- 수평 분할 : 테이블을 특정 컬럼 기준 행으로 분리, 컬럼 분리되지 않고 모든 데이터 분리되어 있는 형태
- 수직 분할 : 테이블 칼럼 기준으로 칼럼 분리, 로우 단위로는 분리되지 않고 모든 데이터 분리된 형태
3. 테이블 복제(Replication) 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성 및 관리
4. 테이블 요약(Summarization) 분산 : 지역/서버 간 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우
- 분석 요약 : 동일 테이블 구조를 가지면서 분산되어 있는 동일 내용 데이터 이용한 통합 데이터 산출
- 통합 요약 : 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터 산출