728x90
반응형



제 6절 분산 데이터베이스와 성능


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

여전히 많은 데이터베이스는 네트워크를 통한 데이터베이스 간의 공유체계를 통해 분산 데이터베이스를 활용하고 있다.


분산 데이터베이스의 정의

- 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스

- 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임, 물리적 Site 분산, 논리적으로 사용자 통합 및 공유 가능



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


1) 분할 투명성(단편화)

2) 위치 투명성 

3) 지역사상 투명성

4) 중복 투명성

5) 장애 투명성

6) 병행 투명성



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

가. 분산 데이터베이스 적용방법


분산환경의 데이터베이스를 성능이 우수하게 현장에서 가치 있게 사용하는 방법은 업무의 흐름을 보고 업무 구성에 따른 아키텍처 특징에 따라 데이터베이스를 구성하는 것이다. 단순히 분산환경에서 데이터베이스 분산설계라는 측면보다는 데이터베이스 구조설계(아키텍쳐)라는 의미로 이해하는 것이 좋다.


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



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





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

데이터를 분산환경으로 구성하였을 때 가장 핵심적인 가치는 통합된 데이터베이스에서 제공할 수 없는 빠른 성능을 제공한다는 점이다. 네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을 분산된 데이터베이스 환경을 구축하므로 빠른 성능을 제공하는 것이 가능해진다.







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

1) 테이블 위치 분산

2) 테이블 분할 분산

3) 테이블 복제 분산

4) 테이블 요약 분산



가. 테이블 위치 분산 

테이블 위치 분산은 테이블의 구조는 변하지 않고, 다른 데이터베이스에 중복되어 생성되지 않는다. 단, 위치를 각각 다르게 위치시키는 것이다. 이는 정보를 이용하는 형태가 각 위치별로 차이가 있을 경우 사용하고, 테이블의 위치가 서로 다르기 때문에 테이블의 위치를 파악할 수 있는 도식화된 위치별 데이터베이스 문서가 필요하다.








나. 테이블 분할(Fragmentation) 분산

테이블 분할 분산은 단순히 위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어 분산하는 방법이다. 두 가지 방법이 있는데 첫번째는 테이블의 로우(Row) 단위로 분리하는 수평분할(Horizontal Fragmentation)이 있고, 두번쨰는 테이블을 칼럼(Column) 단위로 분할하는 수직분할(Vertical Fragmentation)이 있다.



1) 수평분할(Horizontal Fragmentation)

지사(Node)에 따라 테이블을 특정 칼럼의 값을 기준으로 로우를 분리한다. 칼럼은 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어있는 형태를 가지고 있다. 각 지사에 있는 데이터와 다른 지사에 있는 데이터와 항상 배타적으로 존재하며 데이터를 한군데 집합시켜 놓아도 Primary Key에 의해 중복이 발생되지 않는다.


각 지사에 존재하는 테이블에 대해서 통합처리를 해야하는 경우는 조인(JOIN)이 발생하여 성능 저하가 예상되므로 통합처리 프로세스가 많은지를 먼저 검토한 이후에 많지 않은 경우에 수평분할을 해야 한다.




2) 수직분할(Vertical Fragmentation)

지사(Node)에 따라 테이블 칼럼을 기준으로 칼럼을 분리한다. 로우 단위로는 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어있는 형태를 가지고 있다. 칼럼을 기준으로 분할하였기 떄문에 각각의 테이블에는 동일한 Primary Key 구조와 값을 가지고 있어야 한다. 지사별로 쪼개어진 테이블들을 조합하면 Primary Key가 동일한 데이터의 조합이 가능해야 하며 하나의 완전한 테이블이 구성되어야 한다. 또한 데이터를 한군데 집합시켜 놓아도 동일한 기본키는 하나로 표현하면 되므로 데이터 중복은 발생되지 않는다.





다. 테이블 복제(Replication) 분산

테이블 복제 분산은 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리하는 유형이다. 마스터 데이터베이스에서 테이블의 일부의 내용만 다른 지역이나 서버에 위치시키는 부분복제(Segment Replication)가 있고 마스터 데이터베이스의 테이블의 내용을 각 지역이나 서버에 존재시키는 광역복제(Broadcast Replication)가 있다.



1) 부분복제(Segment Replication)

통합된 테이블을 한군데에 가지고 있으면서 각 지사별로는 지사에 해당된 로우를 가지고 있는 형태이다. 지사에 존재하는 데이터는 반드시 본사에 존재하게 되며, 즉 본사의 데이터는 지사데이터의 합이 되는 것이다. 


각 지사에서 데이터 처리가 용이할 뿐만아니라 전체 데이터에 대한 통합처리도 본사에 있는 통합 테이블을 이용하게 되므로 여러 테이블에 조인이 발생하지 않는 빠른 작업 수행이 가능해진다.



지사간에는 데이터의 중복이 발생하지 않으나 본사와 지사간에는 데이터의 중복이 항상 발생하게 된다. 


보통 전국에 있는 고객을 관리할 때 본사에는 전국고객에 대한 정보를 관리하고, 지사에는 각 지사와 거래하는 고객정보를 관리한다. 이는 실제 프로젝트에서도 많이 사용하는 데이터 베이스 분산기법이다.

데이터를 복제하는데 많은 시간이 소요되고 데이터베이스와 서버에 부하가 발생하므로 보통 실시간 처리에 의해 복사하는 것 보다는 야간에 배치 작업에 의해 수행되는 경우가 많이 있다. 


2) 광역복제(Broadcast Replication)


통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 가지고 있는 형태이다. 지사에 존재하는 데이터는 반드시 본사에 존재하게 된다. 모든 지사에 있는 데이터양과 본사에 있는 데이터양이 동일하다. 

본사와 지사 모두 동일한 정보를 가지고 있으므로 본사나 지사나 데이터처리에 특별한 제약을 받지는 않는다.



광역복제 역시 실제 프로젝트에서 많이 사용하고 있는 기법이다. 부분복제의 경우에는 데이터에대한 입력, 수정, 삭제가 발생하여 본사에서 이용하는 방식이 많은 반면 광역복제의 경우에는 본사에서 데이터가 입력, 수정, 삭제가 되어 지사에서 이용하는 형태가 차이점이다.


부분복제와 마찬가지로 데이터를 복제하는데 많은 시간이 걸리고, 데이터베이스와 서버에 부하가 발생하므로 보통 실시간 처리에 의해 복사하는 것 보다는 배치에 의해 복제가 되도록 한다.





라. 테이블 요약(Summarization) 분산

테이블 요약 분산은 지역간에 또는 서버간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우가 있다. 요약 방식에 따라 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식의 분석요약, 분산되어있는 다른 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식의 통합요약이 있다.


1) 분석요약(Rollup Replication)

분석요약은 각 지사별로 존재하는 요약정보를 본사에 통합하여 다시 전체에 대해서 요약정보를 산출하는 분석 방법이다. 




예를 들어, 제품 판매 실적이라는 테이블이 존재한다고 가정할 때, 각 지사에서는 취급제품이 동일하다. 지사별로 판매된 제품에 대해서 지사별로 판매실적이 관리된다. 지사1과 지사2에도 동일한 제품이 취급이 되므로 이를 본사에서 판매실적을 집계할 경우에는 통합된 판매실적을 관리할 수 있는 것이다. 




2) 통합요약(Consolidation Replication)

통합요약은 각 지사별로 존재하는 다른 내용의 정보를 본사에서 통합하여 다시 전체에 대해서 요약정보를 산출하는 분산방법이다. 

아래 그림에서 보면 테이블에 있는 모든 칼럼과 로우가 지사에도 동일하게 존재하지만 각 지사에는 타지사와 다른 요약정보를 가지고 있고 본사에는 각 지사의 요약정보를 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약정보를 가지고 있는 것으로 표시된다.






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

아래 그림과 같이 개인정보를 관리하는 데이터베이스가 인사 데이터베이스 일 때 분산이 안된 경우의 각 서버에 독립적으로 테이블이 있을 때 트랜잭션과 복제분산을 통해 테이블의 정보가 양쪽에 있을 떄 트랜잭션처리의 특성을 보여주는 그림이다. 






데이터베이스 분산설계는 다음과 같은 경우에 적용하면 효과적


- 성능이 중요한 사이트에 적용

- 공통코드, 기준정보, 마스터 데이터 등에 대한 분산환경을 구성하면 성능이 좋아짐

- 실시간 동기화가 요구되지 않을 때 좋음, 그러나 실시간의 업무적인 특징을 가지고있어도 분산환경 구축 가능

- 특정 서버에 부하가 집중될 때 부하를 분산 할 수 있음

- 백업사이트를 구성할 때 


728x90
반응형