제6절_분산_데이터베이스와_성능
2011.09.08 02:04
1. 분산 데이터베이스의 개요
데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜
사용성/성능 등을 극대화 시킨 데이터베이스
- 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임.
물리적 Site 분산, 논리적으로 사용자 통합·공유
2. 분산 데이터베이스의 투명성(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을 이용 구현
- 최근 분산 데이터베이스보다 통합 데이터베이스 구축 사례가 더 많다. (모두를 만족하면서 구축하는 사례는 최근에는 드물다)
- 업무적인 특징 및 지역적인 특징에 따라 적절하게 활용하기만 하면, 대량 데이터처리의 지역적 처리나 글로벌 처리 등에서는 유용하게 활용
3. 분산 데이터베이스의 적용 방법 및 장단점
가. 분산 데이터베이스 적용방법
단순히 분산 환경에서 데이터베이스를 구축하는 것이 목적이 아니라, 업무의 특징에 따라 데이터베이스 분산구조를 선택적으로 설계
나. 분산 데이터베이스 장단점
4. 분산 데이터베이스의 활용 방향성
- 업무적인 특징에 따라 분산 데이터베이스를 활용하는 기술 필요
5. 데이터베이스 분산구성의 가치
- 통합된 데이터베이스에서 제공할 수 없는 빠른 성능을 제공
(원거리 또는 다른 서버에 접속하여 처리하므로 인해 발생되는 네트워크 부하 및 트랜잭션 집중에 따른 성능 저하의 원인을
분산된 데이터베이스 환경을 구축하므로 빠른 성능을 제공)
6. 분산 데이터베이스의 적용 기법
가. 테이블 위치 분산
- 테이블 구조 변하지 않음
- 테이블이 다른 데이터베이스에 중복 생성되지 않음
- 정보를 이용하는 형태가 각 위치별로 차이가 있을 경우 이용
- 테이블 위치를 파악할 수 있는 도식화된 위치별 데이터베이스 문서가 필요
[그림 Ⅰ-2-41] 테이블 각각이 지역별로 분산되어 생성되는 경우
나. 테이블 분할(Fragmentation) 분산
위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어 분산
◆ 수평분할(Horizontal Fragmentation)
- 특정 칼럼의 값을 기준으로 로우(Row)단위로 분리
- 칼럼은 분리되지 않음
- Primary Key에 의해 중복이 발생되지 않음
- 지사별로 사용하는 로우(Row)가 다를 때 이용
- 데이터 수정 : 타 지사에 있는 데이터를 원칙적으로 수정하지 않고 자신의 데이터에 대해서 수정
- 각 지사의 테이블 통합처리 : 조인이 발생하여 성능 저하 예상, 통합처리 프로세스가 많은지를 먼저 검토한 후 많지 않은 경우에 수평분할
- 데이터 무결성 보장 : 데이터가 지사별로 별도로 존재하므로 중복은 발생하지 않는다. 타 지사 데이터의 지사구분이 변경되면 단순히 수정이 발생하는 것 이외에 변경된 지사로 데이터를 이송해야 한다. 한 시점에는 한 지사(Node)에서 하나의 데이터만 존재
- 지사별로 데이터베이스를 운영하는 경우 : 데이터베이스가 속한 서버가 지사에 존재하던지 아니면 본사에 통합해서 존재하건 간에 데이터베이스 테이블들은 수평 분할하여 존재
◆ 수직분할(Vertical Fragmentation)
- 칼럼을 기준으로 칼럼(Row)단위로 분리
- 로우(Row) 단위로 분리되지 않음
- 각 테이블에는 동일한 Primary Key구조와 값을 가지고 있어야 함
데이터를 한군데 집합시켜 놓아도 동일한 Primary Key는 하나로 표현하면 되므로 데이터 중복은 발생되지 않음
- 테이블의 전체 칼럼 데이터 조회 : 가능하면 통합하여 처리하는 프로세스가 많은 경우에는 이용하지 않도록 한다
- 실제 프로젝트에서 수직분할 분산 환경을 구성하는 사례는 드물다.
다. 테이블 복제(Replication) 분산
- 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리
- 프로젝트에서 많이 사용하는 데이터베이스 분산기법
◆ 부분복제(Segment Replication)
- 마스터 데이터베이스에서 테이블의 일부의 내용만 다른 지역이나 서버에 위치
- 통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사별로는 지사에 해당된 로우(Row)를 가지고 있는 형태
본사 데이터 = 지사데이터의 합
- 여러 테이블에 조인이 발생하지 않는 빠른 작업 수행 가능 (각 지사에서 데이터 처리 용이할 뿐 아니라 전체 데이터에 대한 통합처리도 본사의 통합 테이블을 이용)
[그림 Ⅰ-2-47] 지사간에는 데이터의 중복이 발생하지 않으나 본사와 지사간에는 데이터의 중복이 항상 발생하게 되는 경우
- 본사 데이터는 통계, 이동 등을 관리 / 지사 데이터를 이용하여 지사별로 빠른 업무수행
- 지사에 데이터가 먼저 발생, 본사 데이터는 지사 데이터를 이용하여 통합하여 발생 (광역복제와 차이점)
- 다른 지역간의 데이터를 복제는 실시간 처리보다 배치 작업에 의해 수행 (시간 소요, 데이터베이스와 서버에 부하 발생)
- 데이터의 정합성을 일치시키는 것이 어렵기 때문에 가능하면 한쪽(지사)에서 데이터의 수정이 발생하여 본사로 복제 하도록 한다
◆ 광역복제(Broadcast Replication)
- 통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 가지고 있는 형태
- 본사나 지사나 데이터처리에 특별한 제약을 받지는 않음
- 본사에서 데이터가 입력, 수정, 삭제가 되어 지사에서 이용하는 형태 (부분복제와 차이점)
- 다른 지역간의 데이터를 복제는 실시간 처리보다 배치 작업에 의해 수행 (시간 소요, 데이터베이스와 서버에 부하 발생)
라. 테이블 요약(Summarization) 분산
지역/서버 간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우
◆ 분석요약(Rollup Replication)
- 각 지사별로 존재하는 요약정보를 본사에 통합하여 다시 전체에 대해서 요약정보 산출
- 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용하여 통합된 데이터를 산출하는 방식
[그림 Ⅰ-2-51] 테이블에 있는 모든 칼럼(Column)과 로우(Row)가 지사에도 동일하게 존재하지만, 각 지사에는 동일한 내용에 대해 지사별로 요약되어 있는 정보를 가지고 있고 본사에는 각 지사의 요약정보를 통합하여 재산출하여 전체에 대한 요약정보를 가지고 있다.
- 각종 통계데이터 산정 : 모든 지사의 데이터를 이용하여 처리하면 성능이 지연되고 각 지사 서버에 부하를 주기 때문에 업무에 장애가 발생 가능성 있음
- 지사에 있는 데이터를 이용하여 본사에서 통합하여 요약 데이터 산정
- 통합 통계데이터에 대한 정보제공에 용이
- 본사에 분석 요약된 테이블을 생성하고 데이터는 역시 일반 업무가 종료되는 야간에 수행하여 생성
◆ 통합요약(Consolidation Replication)
각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 다시 전체에 대해서 요약정보 산출
[그림 Ⅰ-2-53] 테이블에 있는 모든 칼럼(Column)과 로우(Row)가 지사에도 동일하게 존재하지만 각 지사에는 타지사와 다른 요약정보를 가지고 있고 본사에는 각 지사의 요약정보를 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약정보를 가지고 있다.
- 본사에 통계데이터를 산정 : 분석요약과 비슷하나 단지 지사에서 산출한 요약정보를 한군데 취합하여 보여주는 형태. 모든 지사의 데이터를 이용하여 처리하면 성능이 지연되고 각 지사 서버에 부하를 주기 때문에 업무에 장애가 발생 가능성 있음
- 지사에서 요약한 정보를 본사에서 취합하여 각 지사별로 데이터를 비교하기 위해 이용
- 통계데이터에 대한 정보제공에 용이- 본사에 통합 요약된 테이블을 생성하고 데이터는 역시 일반 업무가 종료되는 야간에 수행하여 생성
7. 분산 데이터베이스를 적용하여 성능이 향상된 사례
- 분산 환경의 원리를 이해하지 않고 데이터베이스를 설계하여 성능이 저하되는 경우 빈번
복제분산의 원리를 간단하게 응용하면 많은 업무적인 특성이 있는 곳에서 그 성능을 향상시켜 설계 가능
[그림 Ⅰ-2-55] 분산이 안된 경우의 각 서버에 독립적으로 테이블이 있을 때 트랜잭션과 복제분산을 통해 테이블의 정보가 양쪽에 있을 때 트랜잭션 처리. 위의 원리가 복잡한 업무처리에서 효과적으로 성능을 향상시킬 수 있음을 주목
데이터베이스 분산 설계는 다음과 같은 경우에 적용하면 효과적이다.
- 성능이 중요한 사이트에 적용해야 한다.
- 공통코드, 기준정보, 마스터 데이터 등에 대해 분산환경을 구성하면 성능이 좋아진다.
- 실시간 동기화가 요구되지 않을 때 좋다. 거의 실시간(Near Real Time)의 업무적인 특징을 가지고 있을 때도 분산 환경을 구성할 수 있다
- 특정 서버에 부하가 집중이 될 때 부하를 분산할 때도 좋다.
- 백업 사이트(Disaster Recovery Site)를 구성할 때 간단하게 분산기능을 적용하여 구성할 수 있다.
※ 자료출처 : DBguide.Net
- SQL 개발자 자격증 (bysql.net 2011년 2차 스터디)
- 작성자: 이주영 (suspace)
- 최초작성일: 2011년 09월 08 일
- 본문서는 bysql.net 스터디 결과입니다 .본 문서를 인용하실때는 출처를 밝혀주세요. http://www.bysql.net
- 문서의 잘못된 점이나 질문사항은 본 문서에 댓글로 남겨주세요. ^^
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
27 | 제4절_서브쿼리 | balto | 2011.10.08 | 14420 |
26 |
제9절_조인(JOIN)
![]() | DB지기 | 2011.09.29 | 7658 |
25 | 제8절_ORDER_BY_절 | 실천하자 | 2011.09.29 | 6706 |
24 | 제7절_GROUP_BY_HAVING_절 | 실천하자 | 2011.09.28 | 7776 |
23 | 제6절_함수(FUNCTION) | monsterRachel | 2011.09.28 | 11049 |
22 | 제5절_WHERE_절 | 실천하자 | 2011.09.21 | 7147 |
21 | 제4절_TCL(TRANSACTION_CONTROL_LANGUAGE) | 노랑배 | 2011.09.20 | 8635 |
20 | 제3절_DML(DATA_MANIPULATION_LANGUAGE) | 노랑배 | 2011.09.19 | 13028 |
19 | 제2절_DDL(DATA_DEFINITION_LANGUAGE) | balto | 2011.09.10 | 10411 |
18 | 제1절_관계형_데이터베이스_개요 | balto | 2011.09.10 | 11360 |
17 | 2_연습문제 | suspace | 2011.09.08 | 7227 |
16 | 2_장요약 | suspace | 2011.09.08 | 22329 |
» | 제6절_분산_데이터베이스와_성능 | suspace | 2011.09.08 | 12312 |
14 |
제3절_반정규화와_성능
![]() | DB지기 | 2011.09.07 | 6967 |
13 |
제2절_정규화와_성능
![]() | DB지기 | 2011.09.07 | 7338 |
12 |
제1절_성능_데이터_모델링의_개요
![]() | DB지기 | 2011.09.07 | 7261 |
11 | 제5절_데이터베이스_구조와_성능 | monsterRachel | 2011.09.07 | 6774 |
10 | 제4절_대량_데이터에_따른_성능 | monsterRachel | 2011.09.07 | 7729 |
9 | 장_요약 [1] | balto | 2011.09.02 | 16680 |
8 | 연습문제 | 노랑배 | 2011.09.01 | 41363 |