이 문서의 내용은 출처가 분명하지 않습니다. 이 문서를 편집하여, 신뢰할 수 있는 출처를 표기해 주세요. 검증되지 않은 내용은 삭제될 수도 있습니다. 내용에 대한 의견은 토론 문서에서 나누어 주세요.(2013년 5월)
분산 데이터베이스(distributed database)는 하나의 데이터베이스 관리 시스템(DBMS)이 여러 CPU에 연결된 저장장치들을 제어하는 형태의 데이터베이스이다. 물리적으로 동일한 위치에 여러 대의 컴퓨터로 구성된 경우 또는 컴퓨터 네트워크에서 상호 연결된 컴퓨터 군에 분산되어있는 경우 등이 있다.
개요
데이터베이스의 데이터의 집합체는 여러 물리적 위치에 분산 배치될 수 있다. 분산 데이터베이스가 있는 네트워크 서버는 인터넷으로 연결되어 있는 경우, 기업의 인트라넷 및 엑스트라넷의 경우 다른 기업의 네트워크에 있는 경우가 있다. 데이터베이스 복제 및 분산을 통해 사용자에서 보면 데이터베이스의 성능이 향상된다.
분산된 데이터베이스의 내용이 최신 업데이트의 획득을 보장하기 위해서는 복제 및 듀플리케이션 두 가지 처리를 한다. 복제는 분산된 데이터베이스의 데이터 업데이트를 반영하는 특별한 소프트웨어를 사용한다. 업데이트를 발견하면, 복제 프로세스는 데이터베이스 그룹 모두에 동일한 업데이트를 추가한다. 복제 프로세스는 분산 데이터베이스의 크기나 분산 배치 수에 따라 매우 복잡하고 처리 시간이 소요된다. 또한 계산 자원도 많이 필요로 한다. 한편 듀플리케이션은 그다지 복잡하지 않다. 기본적으로 하나의 데이터베이스를 마스터로 다른 데이터베이스를 복제한다. 일반적 듀플리케이션은 설정된 시간에 몇 시간에 걸쳐 실시한다. 이를 통해 분산된 각각의 위치 데이터가 동일하게 보장된다. 듀플리케이션은 마스터 데이터베이스만 갱신이 허용된다. 이러한 방법으로 분산 배치된 모든 데이터가 최신 상태를 유지한다.
상기 이외에도 분산 데이터베이스 설계 기법에는 여러 가지가 있다. 예를 들어, 로컬 자율형, 동기, 비동기 같은 분산 데이터베이스 기술이 있다. 사업의 필요성, 데이터의 중요성과 기밀성, 데이터 보안 일관, 완전성에 소요되는 비용에 따라 이러한 기술들 중 어떤 방식으로 구현할지 여부를 결정한다.
아키텍처
사용자는 분산 데이터베이스에 다음과 같은 방법으로 접근한다.
로컬 응용 프로그램
다른 사이트에서 데이터를 요청하지 않는 응용 프로그램
전역 응용 프로그램
다른 사이트에서 데이터를 요청하는 응용 프로그램
분산 데이터베이스는 주기억 메모리와 디스크를 공유하는 것은 아니다.
포인트
분산 데이터베이스의 경우, 다음과 같은 점이 중요하다.
분산은 투명하다 - 사용자는 그것이 하나의 논리체계인 것처럼 상호 작용할 필요가 있다. 이것은 성능이나 사용 방법 등 여러 가지 면에 적용된다.
트랜잭션은 투명하다 - 각 트랜잭션은 다중 데이터베이스에 걸쳐 일관성을 보장할 필요가 있다. 트랜잭션은 일반적으로 여러 하위 트랜잭션으로 분리된 개별 서브 트랜잭션이 하나의 데이터베이스에 대응한다.
장점
조직 구조의 반영 - 기업 등 부문별로 데이터베이스를 놓고 그들을 통합하여 분산 데이터베이스로 할 수 있다.
국소 자율성 - 각 부서는 자체 보유한 데이터를 제어할 수 있다.
중요한 데이터의 보호 - 화재 등의 재해가 발생했을 때 데이터가 분산되어 있으면 전체를 한 번에 잃는 것을 예방할 수 있다.
성능 향상 - 자주 사용하는 데이터는 가까운 위치에 있으면서, 전체가 병렬적으로 작동하기 때문에 데이터베이스의 부하 분산이 가능하다. 일부가 과부하 되어도 분산 데이터베이스 전체에 미치는 영향이 작다.
경제성 - 거대한 고성능 컴퓨터보다 동일한 정도의 성능을 발휘하는 소형 컴퓨터 네트워크 쪽이 싸다.
모듈화 - 분산 데이터베이스의 다른 모듈(시스템)에 영향을 주지 않고 개별 시스템을 갱신, 추가, 삭제할 수 있다.
높은 신뢰성의 트랜잭션 - 복제(replication)에 의한다.
하나의 사이트에 장애가 발생해도 전체 기능은 손상되지 않는다. 모든 거래는 ACID 특성에 따른다.
단점
복잡성 - 투명성을 보장하기 위해 구축에는 간단한 데이터베이스보다 기량을 요한다. 또한 구성하는 시스템은 동일한 기종 것은 아니다. 접속이 끊어졌을 때의 동작도 고려할 필요가있다. 예를 들어 결합 을 여러 시스템간에 할 경우 성능 저하가 예상된다.
비용 - 시스템의 규모와 복잡성이 증가함에 따라 관리 비용도 증가한다.
보안 - 개별 사이트의 보안을 확보하고, 사이트 간 네트워크의 보안도 확보하지 않으면 전체에 보안을 말할 수 없다.
무결성 보장의 어려움 - 분산 데이터베이스 무결성을 보장하려면 상당한 네트워크 자원을 필요로한다.
미성숙한 기술 - 분산 데이터베이스는 미성숙한 분야이며, 경험적 지식의 축적이 적다.
표준의 부족 - 중앙 DBMS를 분산 DBMS로 변환하기위한 도구와 방법론은 아직 존재하지 않는다.
데이터베이스 설계의 복잡성 - 일반 데이터베이스 설계 이외에, 데이터를 각 사이트에 어떻게 배치하거나 복제를 어떻게 할 것인가 등 설계시에 고려해야 할 사항이 늘어난다.