1. 분산 데이터베이스의 개요

  • 분산 데이터베이스의 정의
    – 여러 곳으로 분산되어 있는 데이터를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
    – 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임
    – 물리적 Site 분산, 논리적 사용자 통합/공유

즉, 분산 데이터베이스는 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성, 성능 등을 극대화시킨 데이터베이스라고 정의할 수 있다.

2. 분산 데이터베이스의 투명성 (Transparency)

1) 분할 투명성 (단편화) : 하나의 논리적 Relation 이 여러 단편으로 분할되어 각 단편의 사본이 여러 site 에 저장
2) 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치 정보가 System Catalog 에 유지되어야 함
3) 지역사상 투명성 : 지역 DBMS 와 물리적 DB 사이의 Mapping 보장. 각 지역시스템 이름과 무관한 이름 사용 가능
4) 중복 투명성 : DB 객체가 여러 site 에 중복되어 있는지 알 필요가 없는 성질
5) 장애 투명성 : 구성요소 (DBMS, Computer) 의 장애에 무관한 Transaction 의 원자성 유지
6) 병행 투명성 : 다수 Transaction 동시 수행 시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking 을 이용 구현

3. 분산 데이터베이스의 적용 방법 및 장단점

1) 분산 데이터베이스 적용 방법

분산 환경의 데이터베이스를 우수한 성능으로 사용하기 위해서는 업무의 흐름을 보고, 업무 구성에 따른 아키텍처 특징에 따라 데이터베이스를 구성해야 한다. 업무의 특징에 따라 데이터베이스의 분산구조를 선택적으로 설계하는 능력이 필요한 것이다. 이러한 측면에서 데이터베이스 분산설계는 데이터베이스 구조설계(아키텍처)의 의미로 볼 수 있다.

2) 분산 데이터베이스 장단점

sqld-i-2-5

4. 분산 데이터베이스의 활용 방향성

분산 데이터베이스는 업무적인 기능이 다양하고 데이터의 양이 기하급수적으로 증가하는 최근 데이터베이스 환경에서 적용하는 고급화 된 기술이다. 업무적인 특징에 따라 분산 데이터베이스를 활용하는 기술이 필요하다.

sqld-1-2-39

5. 데이터베이스 분산 구성의 가치

분산 데이터베이스의 핵심 가치는 통합 데이터베이스가 제공할 수 없는 빠른 성능을 제공한다는 점이다. 원거리 또는 다른 서버에 접속하여 처리함으로써 발생되는 네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을 분산 데이터베이스 환경 구축을 통해 해결할 수 있다.

6. 분산 데이터베이스의 적용 기법

데이터베이스의 분산의 종류에는 테이블 위치 분산, 테이블 분할 분산, 테이블 복제 분산, 테이블 요약 분산 전략이 있다. 이 중 테이블 복제 분산이 가장 유용하게 적용할 수 있는 기술로 가장 많이 사용된다.
데이터베이스를 분산 환경으로 설계하는 방법은 일단 통합 데이터 모델링을 하고, 각 테이블 별로 업무적 특징에 따라 분산 배치나 복제 배치하는 형태로 설계할 수 있다.

1) 테이블 위치 분산

테이블 위치 분산은 정보를 이용하는 형태가 각 위치별로 차이가 있을 때 이용한다. 위치 분산은 테이블 구조가 변하지 않고, 다른 데이터베이스에 중복되어 생성되지 않는다.

sqld-1-2-41

[그림 I-2-41] 과 같이 자재품목은 본사에서 구입하여 관리하고, 각 지사별로 자재품목을 이용하여 제품을 생산한다고 하면 데이터베이스를 본사와 지사 단위로 분산시킬 수 있다.

sqld-1-2-42

위치 분산은 정보를 이용하는 형태가 각 위치별로 차이가 있기 때문에, 테이블의 위치를 파악할 수 있는 도식화 된 위치별 데이터베이스 문서가 필요하다.

2) 테이블 분할 (Fragmentation) 분산

테이블 분할 분산은 테이블을 나누는 기준에 따라 두 가지로 구분된다.

  • 수평분할 (Horizontal Fragmentation) : 테이블의 로우(Row) 단위로 분할
  • 수직분할 (Vertical Fragmentation) : 테이블의 컬럼(Column) 단위로 분할

⑴ 수평분할 (Horizontal Fragmentation)

테이블을 특정 컬럼 값 기준으로 Row 를 분리한다. 컬럼은 분리되지 않으며, 추후에 통합하여도 PK 중복이 발생하지 않는다. 하지만 통합 처리를 할 경우 JOIN 이 발생하여 성능 저하가 예상되므로, 통합 처리 프로세스가 많은 경우에는 적절하지 않다.
중복이 발생하지 않기 때문에 데이터의 무결성은 보장되지만, 데이터가 수정되어 Node 를 이동해야 하는 경우가 발생할 수 있다.

⑵ 수직분할 (Vertical Fragmentation)

Node 에 따라 컬럼을 기준으로 분리한다. Row 단위로는 분리되지 않으며, 각 테이블마다 동일한 PK 구조와 값을 가지고 있어야 한다. 통합 시 PK가 동일한 데이터끼리 조합이 가능해야 하며, 하나의 완전한 테이블이 구성되어야 한다.
테이블의 전체 컬럼을 보기 위해서는 각 Node 별 테이블을 JOIN 해야 하므로, 통합 처리 프로세스가 많은 경우에는 이용하지 않도록 한다.

3) 테이블 복제 (Replication) 분산

테이블 복제 분산은 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리하는 유형이다.

  • 부분복제 (Segment Replication) : 마스터 데이터베이스에서 테이블의 일부 내용만 다른 지역이나 서버에 위치
  • 광역복제 (Broadcast Replication) : 마스터 데이터베이스의 테이블을 각 지역이나 서버에 위치

⑴ 부분복제 (Segment Replication)

통합된 테이블을 본사에 가지고 있으면서, 각 지사별로 지사에 해당되는 Row 를 가지고 있는 형태이다. 각 지사에서 데이터 처리가 용이할 뿐만 아니라 전체 데이터에 대한 통합 처리도 본사에 있는 통합 테이블을 이용하기 때문에 JOIN 이 발생하지 않는 빠른 작업 수행이 가능해진다.

sqld-1-2-48

실제 프로젝트에서 가장 많이 사용되며, 다른 지역 간의 데이터를 복제하는데 많은 시간이 소요되고 데이터베이스와 서버에 부하가 발생하므로 실시간 처리에 의해 복사하는 것 보다는 야간에 배치작업에 의해 수행되는 경우가 많다. 또한 본사와 지사 양쪽 모두 데이터를 수정하여 전송하는 경우 데이터의 정합성을 일치시키는 것이 어렵기 때문에 가능하면 한쪽(지사)에서 데이터를 수정하여 본사로 복제하도록 한다.

⑵ 광역복제 (Broadcast Replication)

통합된 테이블을 본사에 가지고 있으면서, 각 지사에도 본사와 동일한 데이터를 모두 가지고 있는 형태이다. 모든 지사와 본사에 있는 데이터량은 동일하기 때문에 데이터 처리에 특별한 제약을 받지 않는다.
예를 들어, 본사에서 코드테이블에 데이터를 입력/수정/삭제 하고, 지사에서는 코드데이터를 이용하는 프로세스가 가능하다.

sqld-1-2-50

광역복제 역시 실제 프로젝트에서 많이 사용된다. 부분복제와 마찬가지로 데이터를 복제하는데 많은 시간이 소요되고, 데이터베이스와 서버에 부하가 발생하므로 배치에 의해 복제되도록 한다.
부분복제의 경우는 지사에서 데이터에 대한 입력/수정/삭제가 발생하여 본사에서 이용하는 방식이 많고, 광역복제는 본사에서 데이터를 입력/수정/삭제하여 지사에서 이용되는 형태이다.

4) 테이블 요약 (Summarization) 분산

테이블 요약 분산은 지역 또는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우이다.

  • 분석요약 (Rollup Summarization) : 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식
  • 통합요약 (Consolidation Summarization) : 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식

⑴ 분석요약 (Rollup Summarization)

분석요약은 각 지사별로 존재하는 요약 정보를 본사에 통합하여 다시 전체에 대해 요약정보를 산출하는 분산 방법이다. 본사 테이블에 있는 모든 컬럼과 로우가 지사에도 동일하게 존재하지만, 각 지사에는 동일한 내용에 대해 지사별로 요약되어 있는 정보가 있고, 본사에는 각 지사의 요약정보를 통합하여 재산출하여 전체에 대한 요약정보를 가지고 있다.

sqld-1-2-52

각종 통계 데이터를 산정할 경우, 모든 지사의 데이터를 이용하여 처리하면 성능이 지연되고 서버에 부하를 줄 수 있다. 분석요약 분산 방법은 이러한 통합 통계 데이터에 대한 정보제공에 용이하다.

⑵ 통합요약 (Consolidation Summarization)

통합요약은 각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 전체에 대한 요약정보를 산출하는 분산 방법이다. 테이블에 있는 모든 컬럼과 로우가 지사에도 동일하게 존재하지만, 각 지사에는 타지사와 다른 요약정보를 가지고 있고 본사에는 각 지사의 요약정보 데이터 위치를 동일하게 통합하여 전체에 대한 요약정보를 가지고 있는 것으로 표시된다.

sqld-1-2-54

본사에서 통계데이터를 산정하는 유형은 분석요약과 비슷하지만, 통합요약은 지사에서 산출한 요약정보를 취합하여 보여준다. 분석요약은 지사에 있는 데이터를 본사로 통합하여 요약하였지만, 통합요약에서는 지사에서 요약한 정보를 본사로 취합하여 각 지사별 데이터를 비교하기 위해 이용되는 것이다.
각종 통계 데이터를 산정할 때 모든 지사의 데이터를 JOIN 하여 처리하면 성능이 지연되고 서버에 부하를 줄 수 있기 때문에 일반 업무가 종료되는 야간에 수행하여 생성하는 것이 일반적인 적용 방법이다.

7. 분산 데이터베이스를 적용하여 성능이 향상된 사례

  • 성능이 중요한 사이트에 적용해야 한다.
  • 공통코드, 기준정보, 마스터 데이터 등에 대해 분산 환경을 구성하면 성능이 좋아진다.
  • 실시간 동기화가 요구되지 않을 때 좋다. 거의 실시간 (Near Real Time) 의 업무적인 특징을 가지는 경우에도 분산 환경을 구성할 수 있다.
  • 특정 서버에 부하가 집중되는 경우 부하를 분산할 때도 좋다.
  • 백업 사이트 (Disaster Recovery Site) 를 구성할 때 간단하게 분산 기능을 적용하여 구성할 수 있다.