Database/SQLD

[SQLD] 2-05. 분산 데이터베이스와 성능

콩스프 2024. 3. 1. 21:31

분산 데이터베이스란?

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

➡ 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역에 여러 노드로 위치시켜
    사용성/성능 등을 극대화 시킨 데이터베이스

 

 

투명성 (Transparency)

분산데이터베이스가 되기 위해서 6가지 투명성을 만족해야 함

 

1) 분할 투명성 (단편화) : 하나의 논리적 Relation이 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장

2) 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 System Catalog에 유지되어야 함

3) 지역사상 투명성 : 지역 DBMS와 물리적 DB 사이의 Mapping 보장. 각 지역 시스템 이름과 무관한 이름 사용 가능

4) 중복 투명성 : DB 객체가 여러 site에 중복 되어 있는지 알 필요가 없는 성질

5) 장애 투명성 : 구성요소 (DBMS, Computer)의 장애애 무관한 Transaction의 원자성 유지

6) 병행 투명성 : 다수 Transaction 동시 수행시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking을 이용하여 구현

 

 

분산 데이터베이스의 장단점

 

 

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

  • 테이블 위치 분산, 테이블 분할 분산, 테이블 복제 분산, 테이블 요약 분산
  • 테이블 복제 분할이 가장 많이 쓰임
    ➡ 성능이 저하되는 많은 데이터베이스에서 가장 유용하게 적용할 수 있는 기술적 방법

  • 분산환경으로 데이터베이스를 설계하는 방법
    ➡ 일단 통합 데이터 모델링을 하고 각 테이블별로 업무적인 특징에 따라
         지역 또는 서버별로 테이블을 분산 배치나 복제 배치 하는 형태로 설계

 

테이블 위치 분산

 

  • 테이블의 구조는 변하지 않음
  • 테이블이 다른 데이터베이스에 중복되어 생성되지 않음
  • 설계된 테이블의 위치를 각각 다르게 위치시는 것
  • 정보를 이용하는 형태가 각 위치별로 차이가 있을 경우에 이용
  • 테이블의 위치가 다르므로 테이블의 위치를 파악할 수 있는 도식화된 위치별 데이터베이스 문서가 필요함

 

 

테이블 분할 분산

  • 단순히 위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어 분산하는 방법
  • 테이블을 나누는 기준에 따라 수평분할 / 수직분할이 있음

 

수평분할 (Horizontal Fragmentation)

 

 

 

  • 테이블의 로우 (Row) 단위로 분리
  • 데이터를 한군데에 집합시켜놓아도 PK에 의해 중복이 발생되지 않음
  • 각 Node 별로 사용하는 Row가 다를 때 이용
  • 데이터를 수정할 때는 타 Node에 있는 데이터를 원칙적으로 수정하지 않고 자신의 데이터에 대해서 수정하도록 함
  • 각 Node에 존재하는 테이블에 대해서 통합처리를 해야 하는 경우 조인이 발생하여 성능 저하가 예상 됨
  • 통합처리 프로세스가 많은지를 먼저 검토한 이후에 많지 않은 경우에 수평분할을 해야 함
  • 타 Node에 있는 데이터가 Node가 변경되면 단순히 수정이 발생하는 것 이외에 변경된 Node로 데이터를 이송해야 함

 

수직분할 (Vertical Fragementation)

 

  • 테이블의 칼럼 (Column)을 기즌으로 분리
  • 모든 데이터가 각 지사별로 분리되어 있는 형태를 가지고 있음
  • 칼럼을 기준으로 분할하였기 때문에 각각의 테이블에는 동일한 Primary Key 구조와 값을 가지고 있어야 함
  • 자사별로 쪼개어진 테이블을 조합하면 Primary Key가 동일한 데이터의 조합이 가능해야 함
  • 데이터의 중복이 발생하지 않음
  • 테이블의 전체 칼럼을 보기 위해서는 각 Node 별로 흩어져 있는 테이블을 조인하여 가져와야 함
  • 통합하여 처리하는 프로세스가 많은 경우 이용하지 않아야 함

 

 

테이블 복제 분산

  • 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 분리하는 유형
  • 부분 복제와 광역복제가 있음
  • 데이터를 복제하는데 많은 시간이 소요되고 데이터베이스와 서버에 부하(Load)가 발생함
  • 보통 실시간 (On-Line) 처리에 의해 복사하는 것보다는 배치에 의해 복제가 되도록 함

 

부분복제 (Segment Replication)

 

 

  • 마스터 데이터베이스에서 테이블의 일부 내용만 다른 지역이나 서버에 위치시키는 방법
  • 통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사별로는 지사에 해당된 로우를 가지고 있는 형태
  • 지사에 존재하는 데이터는 반드시 본사에 존재하게 됨 = 본사의 데이터는 지사데이터의 합
  • 전체 데이터에 대한 통합처리도 본사에 있는 통합 테이블을 이용하게 되어 여러 테이블에 조인이 발생하지 않음
  • 지사간에는 데이터 중복이 발생하지 않으나 본사와 지사간에는 데이터의 중복이 항상 발생
  • 본사의 데이터를 통해 통계, 이동 등을 관리
  • 지사에 있는 데이터를 통해 지사별로 빠른 업무수행 가능
  • 보통 지사에 데이터가 먼저 발생하고 본사에 데이터는 지사에 데이터를 이용하여 통합하여 발생
    = 지사에서 데이터에 대한 입력, 수정, 삭제가 발생하여 본사에서 이용하는 방식이 많음

 

 

광역복제 (Broadcast Replication)

 

 

  • 마스터 데이터베이스의 테이블의 내용을 각 지역이나 서버에 존재시키는 방법
  • 통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 가지고 있는 형태
  • 지사이 존재하는 데이터는 반드시 본사에 존재하게 됨 = 모든 지사에 있는 데이터량과 본사에 있는 데이터량이 동일
  • 본사에서 데이터가 입력, 수정, 삭제가 되어 지사에서 이용하는 형태

 

 

테이블 요약 분산

  • 지역간에 또는 서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우에 사용
  • 요약의 방식에 따라 분석요약 / 통합요약이 있음
  • 통합통계데이터에 대한 정보제공에 용이한 분산방법
  • 본사에 통합 요약된 테이블을 생성하는 작업은 일반 업무가 종료되는 야간에 수행하여 생성하는 것이 일반적

 

분석요약 (Rollup Summarization)

 

  • 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식
  • 지사별로 존재하는 요약정보본사에 통합하여 다시 전체에 대해서 요약정보를 산출하는 분산 방법
  • 테이블에 모든 칼럼과 로우가 지사에도 동일하게 존재
  • 각 지사에는 동일한 내용에 대해 지사별로 요약되어 있는 정보를 가짐
  • 본사는 각 지사의 요약정보를 통합하여 재산출하여 전체에 대한 요약정보를 가지고 있음

 

 

통합요약 (Consolidation Summarization)

  • 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식
  • 각 지사별로 존재하는 다른 내용의 정보본사에 통합하여 다시 전체에 대해서 요약정보를 산출하는 분산 방법
  • 테이블에 있는 모든 칼럼과 로우가 지사에도 동일하게 존재
  • 각 지사에는 타지사와 다른 요약정보를 가짐
  • 본사는 각 지사의 요약정보를 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약정보를 가짐
    = 단지 지사에서 요약한 정보를 본사에서 취합하여 각 지사별로 데이터를 비교하기 위해 이용