- 분산 데이터베이스의 개요
- 분산 데이터베이스의 개요
- 논리적으로 같은 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터베이스
- 물리적으로 사이트(Site) 분산이지만, 논리적으로 사용자 통합.공유 가능
- 분산 DBMS : 분산된 데이터베이스를 관리하고 데이터의 분산을 사용자에게 투명하게 제공하는 소프트웨어 시스템
- 분산 DBMS의 구성 요소
- 분산 처리기
자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템
- 분산 데이터베이스
지리적으로 분산되어 있는 데이터베이스로, 해당 지역의 특성에 맞게 데이터베이스가 구성됨
- 통신 네트워크
분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록 하는 통신 네트워크
- 분산 트랜잭션
분산 데이터베이스 환경에서 하나의 사이트에서 처리되지 않고 물리적으로 분산되어 있는 여러 사이트에 걸쳐 처리되는 트랜잭션
- 분산 데이터베이스의 장점
- 지역 자치성 : 자신의 데이터를 지역적으로 제어하고, 원격 데이터 처리 센터에 대한 의존도 감소
- 자원 분산 : 자원 및 부하의 분산으로 성능 향상이 가능
- 단일 컴퓨터에서 처리 불가능한 대용량 데이터의 수용이 가능하고, 기존 시스템에서 사이트 추가 등을 통한 점진적인 확장이 용이
- 데이터의 공유성 향상, 높은 신뢰성 및 가용성 제공, 질의 처리의 속도 향상(즉, 시스템 성능 향상), 효율성 및 융통성 제공, 분산 제어 등
- 분산 데이터베이스의 단점
- 복잡성 증가 : 사이트간 조정(보안, 데드락, 회복)문제로 인해 데이터베이스 설계 및 소프트웨어 개발 비용이 증가
- 성능 저하 : 통신 링크 속도 저하, 메시지 교환 및 조정 비용 등으로 인한 처리의 오버헤드
- 통제 기능 취약 : 보안 통제, 데이터 일괄 통제 등
- 분산 알고리즘의 정확성 판단이 곤란 : 치명적 오류 발생 가능성이 내재
- 비용 측면의 부담
- 전문 인력 부족/기술 부족/경험 부족으로 개발 비용 과다 소요
- 중앙 데이터베이스에서 분산 데이터베이스로 변경하는 작업이 복잡
- 통신 메시지 처리 비용(통신 요금) 증가
- 분산 데이터베이스의 특성 및 구조
- 특성
- 컴퓨터 네트워크를 기반으로 한 분산 시스템
- 데이터는 물리적으로 분산되어 있어나, 논리적으로는 하나의 통합된 데이터베이스
- 전통적 데이터베이스와 분산 데이터베이스의 비교
구분 | 전통적 데이터베이스 | 분산 데이터베이스 |
통제 방식 |
|
|
데이터 형태 |
|
|
데이터 중복성 |
|
|
데이터 구조 |
|
|
트랜잭션 처리 |
|
|
비밀성 및 보안 |
|
|
- 구조
- 전역 스키마(Global Schema)
지역 데이터베이스 스키마들을 모두 포함하는 하나의 상위 집합으로, 사용자들은 전역 스키마를 통하여 마치 하나의 데이터베이스를 사용하는 것 처럼 이용
- 분할 스키마 또는 단편화 스키마(Fragmentation Schema)
전역 릴레이션과 단편과 사상을 정의
- 할당 스키마(Allocation Schema)
분산을 위한 단편들과 할당될 사이트 간의 관계를 표현하는 데, 한 단편의 이미지가 2개 이상의 사이트에 할당되는 경우 중복 저장됨
- 지역 사상 스키마(Local Mapping Schema)
물리적 이미지를 해당 DBMS가 관리하는 객체로 취급할 수 있도록 사상
- 사상(Mapping)
- 전역 릴레이션 : 데이터베이스가 전혀 분산되어 있지 않은 것처럼 분산 데이터베이스에 포함되어 있는 모든 데이터로 구성되는 릴레이션
- 단편 : 분산을 위해 전역 릴레이션을 여러 개로 분할한 것
- 물리적 이미지 : 각 사이트에 할당된 단편들의 모임
- 설계 절차
- 조직 전체의 업무 지원에 필요한 요구 사항 정의 및 분석
- 전역 ERD 작성
- 각 지역 스키마의 지역 ERD 작성 및 여러 지역 스키마 간의 동의어 또는 모순 조정
- 여러 지역 스키마 간의 개체와 속성의 수정 및 일치(각 지역 개체 및 속성은 전체 개체 및 속성과 일치하여야 함)
- 주요 트랜잭션을 중심으로 분할과 배치의 비용 및 효과를 분석하여 효과가 큰 경우 각 지역에 배치
- 분할 조건
- 완정성(Completeness) : 전역 릴레이션의 모든 데이터는 반드시 어느 한 단편에 속해야 함
- 회복성(Reconstruction) : 단편화된 전역 릴레이션은 그 단편들로부터 다시 원래의 전역 릴레이션으로 원상 회복이 가능해야 함
- 분리성(Disjointness) : 일반적으로 전역 릴레이션의 단편들은 내용이 중복되지 않도록 함
- 데이터베이스 분할 및 배치
- 수평 분할
- 한 릴레이션의 레코드를 특정 조건에 따라 분할하여 둘 이상의 서로 다른 장소에 저장
- 여러 지역에서 유사한 업무를 수행하되 그 대상이 다른 경우에 적합
- 수직 분할
- 한 릴레이션의 속성들을 분할하여 둘 이상의 서로 다른 장소에 저장
- 서로 다른 지역의 업무에서 요구되는 데이터 속성이 다른 경우에 적합
- 혼합 분할
- 수평 분할과 수직 분할을 혼합하여 수행
- 빠른 응답 속도와 통신 비용을 절감할 수 있으면, 데이터의 가용성과 신뢰성이 증가
- 데이터 갱신이 복잡하고 비용이 높음
- 투명성(중요도별)
투명성 | 기능 | 장점 | 단점 |
분할(단편화) 투명성 | 데이터베이스 분할 관리에 무관한 작업 환경 제공 |
|
|
위치 투명성 | 데이터 저장 장소의 물리적 위치에 무관한 접근 제공 |
|
|
지역 사상 투명성 | 지역 시스템과 무관한 이름 사용 가능 |
|
|
중복 투명성 | 데이터의 다중 사이트 물리적 중복과 무관한 접근 제공 |
|
|
장애 투명성 | 구성 요소 장애에 무관한 트랜잭션 원자성 유지 |
|
|
동시 투명성 | 동시 수행 시 각 트랜잭션 결과의 일관성 유지 |
|
|
- 분산 동시성 제어
- 락킹과 타임스탬프 사용
- 락킹 방식(주로 2단계 락킹이 사용)
- 전체 시스템에 오직 하나의 전체 락 관리자(또는 조정자(coordinator)를 둠
- 기본 사본에 대한 모든 락 요구는 기본 사본이 저장된 사이트의 락 관리자(또는 종속자(Subordinate))가 전담
- 트랜잭션 그래프
전역 트랜잭션명과 사이트명을 나타내는 노드를 가진 그래프
- 트랜잭션 그래프에서 트랜잭션 Ti가 사이트 Sk에서 활동 중이면, 무방향 간선(Ti, Sk)이 존재
- 트랜잭션 그래프에 무방향 비순환을 포함하면 전역 직렬성은 조장됨
- 전역 2PL : 각 지역 사이트는 정확한 2PL을 사용
- 전역 트랜잭션의 결과로 설정된 락은 그 트랜잭션이 끝에 이를 때에만 해제됨
- 타임스탬프
- 각 트랜잭션에 유일한 타임스탬프를 할당한 후 타임스탬프 순으로 연산을 처리
- 타임스탬프 형태 : (타임, 사이트 번호)
- 각 사이트는 논리 계수기 또는 지역 시계를 사용해 유일한 지역 타임스탬프를 생성
- 유일한 전역 타임스탬프는 유일한 지역 타임스탬프와 유일한 사이트 식별자를 연결해 얻음
- 전역 데드락(Global Deadlock)
- 2개 이상의 사이트가 관련된 데드락
- 각 사이트의 락 관리자는 자신의 사이트 정보만으로 전역 데드락을 탐지하지 못함
- 전역 데드락의 탐지 방법
- 전역 대기 그래프(Global Wait-for Graph) 방법
- 각 지역 대기 그래프(Local Wait-for Graph)를 합침
- 단점 : 지역 대기 그래프의 전송에 추가 통신 비용 필요
- 타임 아웃(Time-out) 방법
- 주어진 시간이 경과되면 전역 데드락 존재로 간주
- 분산 트랜잭션 관리
- 2단계 완료(2PC; 2-Phase Commit) 가정
- 각 사이트는 트랜잭션 관리자를 유지
- 트랜잭션 T는 n개 사이트 S1, S2, …, Sn에서 A1, A2, … , An으로 분리되어 수행
- n개 사이트 중 하나가 트랜잭션 중재자(Coordinator) C가 됨
- 2단계 완료 절차
- 1단계(Prepare Phase)
- 트랜잭션 T 실행 시 임의의 Ai 트랜잭션의 실패 시 해당 사이트 Si에서 복구됨
- 모든 Ai 종료 후 C가 "종료 준비" 메시지를 모든 Si에 전송
- 실패한 사이트는 "NOT OK" 메시지를 C에 전송
- 성공한 사이트는 T에 관련된 모든 로그와 지역 자원을 지역 로그에 기록하고 "OK" 메시지를 C에 전송
- 2단계(Commit Phase)
- 모든 메시지가 "OK"이면, C는 "COMMIT 전송함" 메시지를 지역 로그에 기록하고 모든 Si에 "COMMIT" 명령을 전송
- 임의의 사이트에서 "NOT OK" 응답이 있으면, C는 "ROLLBACK 전송함" 메시지를 지역 로그에 기록하고 모든 Si에 "ROLLBACK" 명령을 전송
- 각 사이트는 전송된 대로 COMMIT 하거나 ROLLBACK하고, 해당 사이트의 T의 모든 자원을 반환하고 C로 응답(Acknowledgement) 메시지를 보냄
- 모든 응답 수신 후 트랜잭션 중재자 C종료
- 병렬 데이터베이스 구조
- Shared Memory
- 프로세스들과 디스크들이 버스 또는 상호 접속(interconnection) 네트워크를 통해서 공동의 메모리를 접근함
- 하위 수준의 병행성(4~8)을 위해 사용됨
- Shared Disk
- 모든 프로세스들은 상호 접속 네트워크를 통해 모든 디스크들을 직접 접근할 수 있으나, 각자가 개인적으로 메모리를 가지고 있음
- 어느 정도의 fault-tolerance를 지원할 수 있음
- Shared Nothing
- 노드는 프로세서, 메모리, 1개 이상의 디스크로 구성되며, 한 노드 상에 있는 프로세서는 다른 노드 상에 있는 프로세서와 상호접속 네트워크를 통해 통신
- 수천 개의 프로세서까지 확장될 수 있음
- Hierarchical
- Shared-Memory, Shared-Disk, Shared-Nothing 구조들이 결합된 구조
- Non-Uniform Memory Architecture(NUMA)이라고도 불림
'밥벌이 > 기타 데이터베이스' 카테고리의 다른 글
멀티미디어 데이터베이스 (0) | 2011.03.21 |
---|---|
공간 데이터베이스(Spatial Database) (0) | 2011.03.21 |
XML 데이터베이스 (0) | 2011.03.21 |
주기억 장치 데이터베이스(MMDB; Main Memory DataBase) (0) | 2011.03.21 |
실시간(Real-time) 데이터베이스 (0) | 2011.03.21 |