데이터베이스 구축 2. 물리 데이터베이스 설계
1. 물리 데이터베이스 설계
- 논리적 구조로 표현된 데이터베이스를 디스크 등의 물리적 저장장치에 저장 가능한 구조로 변환하는 과정
- 기본적 데이터 단위: 저장 레코드(Stored Record)
- 꼭 포함되는 설계: 저장 레코드의 양식, 레코드 집중(Record Clustering)의 분석, 접근 경로 등
- 파일과의 차이: 어려 타입의 저장 레코드 집합
- 데이터베이스 시스템 성능에 큰 영향 미침
- 설계 전 파악 사항: 기존 시스템 분석해서 데이터 명명 규칙, 시스템 자원, 데이터베이스 관리 요소 등
- 설계 시 고려 사항
- 인덱스 구조
- 레코드 크기
- 파일에 있는 레코드 개수
- 파일에 대한 트랜잭션(Transaction) 갱신 및 참조 성향
- 성능 향상 위한 개념 스키마(Conceptual Schema) 변경 여부
- 잦은 질의와 트랜잭션의 수행속도 높이는 방안
- 시스템 운용 시 파일 크기 변화 가능성
- 물리적 설계 옵션
- 반응 시간(Response Time)
- 공간 활용도(Space Utilization)
- 트랜잭션 처리량(Transaction Throughput)
2. 트랜잭션
- Transaction
- 데이터베이스 상태 변화를 위한 하나의 논리적 기능을 수행하는 작업 단위 혹은 한번에 수행되는 일련의 연산
- 데이터베이스 시스템의 병행 제어와 회복 작업 시 처리되는 작업의 논리적 단위로 사용
- 특성: 데이터 무결성(Integrity) 보장 위해 DBMS의 트랜잭션이 가져야 함
- Atomicity(원자성): 연산이 데이터베이스에 모두 반영되도록 완료(Commit)되거나 전혀 반영 안 되도록 복구(Rollback)되어야
- Consistency(일관성)
- Isolation(독립성, 격리성, 순차성)
- Durability(영속성, 지속성)
3. 인덱스
- Index
- <키 값, 포인터> 쌍으로 구성되어 데이터 레코드에 빠르게 접근하는 데이터 구조
- 데이터가 저장된 물리적 구조와 밀접 관련(레코드가 저장된 물리적 구조에 접근 방법 제공)
- 인덱스 없으면 TABLE SCAN(특정 값 찾기 위해 모든 데이터 페이지 확인) 발생
- 기본 인덱스: 기본키 / 보조 인덱스: 기본 인덱스 아님
- 클러스터드(Clustered) 인덱스: 레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치
- 분류
- 트리 기반 인덱스
- 비트맵 인덱스
- 함수 기반 인덱스
- 비트맵 조인 인덱스
- 도메인 인덱스
4. 뷰
- View
- 접근 허용된 자료만 사용자에게 제한적으로 보이기 위해 하나 이상의 테이블로부터 유도한 가상 테이블
- 물리적으로 존재 안 하나 사용자에게는 있는 것으로 간주
- 임시 작업(데이터 보정, 처리 과정 시험 등) 위함
- 조인문 사용 최소화하여 사용상 편의 최대화
- 특징
- 뷰로 데이터 접근하면 나타나지 않은 데이터 안전 보호 가능
- 기본 테이블의 기본키 포함한 열(속성) 집합으로 구성해야 삽입/삭제/갱신 가능
- 다른 뷰의 정의에 기초 될 수 있음
- 장점
- 논리적 데이터 독립성 제공
- 동시에 다수 사용자의 다른 응용/요구 지원
- 데이터 관리 간단화
- 단점
- 독립적 인덱스 못가짐
- 뷰의 정의 변경 불가
- 연산에 제약 있음
5. 클러스터
- Cluster
- 데이터 저장 시 액세스 효율 높이기 위해 동일 성격의 데이터를 같은 블록에 (물리적) 저장
- 클리스터링키(테이블의 행에 접근 시 기준이 되는 열)로 지정된 컬럼 값 순서대로 저장
- 여러 테이블이 하나의 클러스터에 저장
- 특징
- 데이터 조회 속도 높이나 입력/수정/삭제 성능 저하
- 데이터 분포도 넓을수록 유리(인덱스는 분포도 좁을 때 유리)
- 저장 공간 절약(클러스터링키 열을 공유)
- 대용량 처리 트랜잭션은 전체 테이블 스캔 자주 하므로 클러스터링에 부적합
- 파티셔닝 되면 클러스터링 못함
- 클러스터링된 테이블에 클러스터드 인덱스 생성해여 접근 성능 향상
- 단일 테이블 클러스터링: 처리 범위 넓을 시
- 다중 테이블 클러스터링: 조인 자주 발생할 때
6. 파티션
- Partition
- 대용량 테이블을 관리 쉽도록 작은 논리적 단위로 나눔
- 중요 몇 테이블에만 집중 데이터 증가
- 테이블 혹은 인덱스 파티션 시 파티션키 혹은 인덱스키에 따른 물리적 별도 데이터 저장
- 애플리케이션이 테이블 단위로 데이터 처리해서 파티션 인식 못함)데이터는 파티션별 저장)
- 장점
- 데이터 액세스 범위 줄어 쿼리 성능 향상
- 파티션별로 데이터 분산 저장되어 디스크 성능 향상
- 파티션별 백업/복구 수행하여 빠름
- 데이터 가용성 향상
- 파티션 단위로 입/출력 분산
- 단점
- 하나의 테이블을 세분하므로 세심한 관리 요구
- 테이블간 조인 비용 증가
- 용량 작은 테이블 파티셔닝하면 성능 저하
- 종류
- 범위 분할(Range Partitioning)
- 해시 분할(Hash Partitioning)
- 조합 분할(Composite Partitioning)
7. 분산 데이터베이스
- 논리적으로 하나의 시스템이지만 물리적으로 네트워크로 연결된 여러 컴퓨터 사이트(Site)에 분산된 데이터베이스
- 데이터 처리/이용 많은 지역에 데이터베이스 두어 처리가 가능한 해당 지역에서 해결
- 장점
- 지역 자치성, 자료 공유성, 효용성, 융통성, 신뢰성, 가용성
- 분산 제어
- 시스템 성능 향상
- 중앙 컴퓨터의 장애가 전체 시스템에 영향 무
- 점진적 시스템 용량 확장 쉬움
- 단점
- DBMS가 수행할 기능 복잡
- 설계 어려움
- 소프트웨어 개발 비용 증가
- 처리 비용 증가
- 잠재적 오류 증가
- 구성 요소
- 분산 처리기
- 분산 데이터베이스
- 통신 네트워크
- 설계 시 고려 사항
- 작업부하(Work Load)의 노드별 분산
- 지역의 자치성 보장
- 데이터 일관성 정책
- 사이트/회선 고장으로부터의 회복
- 통신 네트워크로 원격 접근
- 분산 데이터베이스 목표
- 위치 투명성(Location Transparency)
- 중복 투명성(Replication Transparency)
- 병행 투명성(Concurrency Transparency)
- 장애 투명성(Failure Transparency)
8. 접근통제
- 데이터가 저장된 객체(테이블, 컬럼 등 데이터베이스 개체)와 주체 사이의 정보 흐름을 통제하여 데이터 보호
- 기술
- 임의 접근통제(DAC, Discretionary Access Control)
- 사용자 신원에 따른 권한 부여
- 통제 권한(지정/제어)이 주체에게 있음
- SQL 명령어: GRANT, REVOKE
- 강제 접근통제(MAC, Mandatory Access Control)
- 주체와 객체의 등급 비교하여 권한 부여
- 제3자가 권한 지정
- 객체별 보안 / 사용자별 인가 등급 부여 가능
- 보안 등급 높으면? 읽기/수정/등록 불가
보안 등급 같으면? 읽기/수정/등록 가능
보안 등급 낮으면? 읽기 가능
9. 스토리지
- Storage
- 단일 디스크로 처리 불가능한 대용량 데이터 저장을 위해 서버와 저장장치 연결 기술
- 종류
- DAS(Direct Attached Stroage)
- 서버에 스토리지 직접 연결
- 속도 빠름
- 다른 서버에서 스토리지 접근 사용 불가
- NAS(Network Attached Storage)
- NAS Storage(파일 관리 기능 있음)가 네트워크 상에 독립적으로 연결
- 서버가 자유롭게 스토리지에 접근하여 파일 공유
- SAN(Storage Area Network)
- 별도의 전용 스토리지 네트워크(파이버 채널 스위치로 서버와 스토리지가 연결) 구성
- 서버가 저장장치와 파일을 자유롭게 공유
10. 이중화
- Database Replication
- 예기치 못한 시스템 오류로 인한 데이터베이스 서비스 중단을 막고 물리적 손상 발생 시 복구를 위해 동일 데이터베이스를 복제/관리
- 데이터베이스의 부하 줄임
- 손쉬운 백업 서버 운영