컴퓨터공학 공부/SQLD (SQL 전문가 가이드)
SQLD 자격증 공부 데이터 모델과 성능-분산 데이터베이스와 성능 (SQL 전문가 가이드)
개발학생
2024. 4. 22. 17:59
반응형
*본 게시물은 2013년도 SQL 전문가 가이드 교재(일명 '노랭이')를 참고하여 공부하고 정리한 게시물입니다
1과목 데이터 모델링의 이해: 제2장 데이터 모델과 성능
1. 분산 데이터베이스의 개요
- 여러 곳으로 분산하여 저장한 DB를 하나의 가상 시스템으로 사용할 수 있는 DB
- 물리적 사이트는 분산되어 있으나 논리적으로 동일한 시스템에 속함
- 과거에는 위치 중심이었으나 현재는 업무 필요에 따라 분산 설계
*설계 방식
‒ 상향식: 지역 스키마 작성 후 전역 스키마 작성
‒ 하향식: 전역 스키마 작성 후 지역사상 스키마 작성
2. 분산 데이터베이스의 투명성(Transparency)
- 분산 데이터베이스가 되기 위해서는 6가지 투명성을 만족해야 함
투명성 | 설명 |
분할 투명성 (단편화) |
하나의 논리적 관계가 분할되어 각 단편의 사본이 여러 사이트에 저장됨 |
위치 투명성 | 사용하려는 데이터의 저장 장소 명시하지 않아도 됨, 위치정보가 System Catalog에 유지되어야 함 |
지역사상 투명성 | 지역 DBMS와 물리적 DB 사이의 사상(Mapping)이 보장되어, 각 지역시스템 이름과 무관한 이름 사용 가능 |
중복 투명성 | DB 객체가 여러 사이트에 중복 되어 있는지 알 필요 없음 |
장애 투명성 | 구성요소(DBMS, 컴퓨터)의 장애에 무관하게 트랜잭션의 원자성이 유지됨 |
병행 투명성 | 다수 트랜잭션 동시 수행 시 결과의 일관성이 유지되며, 타임스탬프와 분산 2단계 Locking을 이용하여 구현 |
3. 분산 데이터베이스 적용 방법 및 장단점
1) 적용 방법
- 업무의 흐름을 보고 업무 구성에 따른 아키텍처 특징에 따라 데이터베이스를 구성
-> 단순히 분산 환경에서 데이터베이스를 구축할 뿐만 아니라,
업무의 특징에 따라 데이터베이스 분산구조를 선택적으로 설계하는 능력 필요
2) 장단점
장점 | 단점 |
지역 자치성, 점증적 시스템 용량 확장 | 소프트웨어 개발 비용 및 처리 비용 증가 |
신뢰성과 가용성 증가(특히 데이터) | 오류의 잠재성 증대 |
효용성과 융통성 증가 | 설계, 관리의 복잡성과 비용 증가 |
빠른 응답 속도로 인한 통신비용 절감 | 불규칙한 응답 속도 |
시스템 규모의 적절한 조절 | 통제의 어려움 |
각 지역 사용자의 요구 수용 증대 | 데이터 무결성 관리 어려움 |
4. 분산 데이터베이스의 적용 기법
1) 테이블 위치 분산
- 테이블의 구조는 변하지 않고, 테이블이 다른 데이터베이스에 중복되어 생성되지도 않음
- 설계된 테이블의 위치를 각각 다르게 분산함
- 예시: 자재품목은 본사에서 구입하여 관리하고 각 지사별로 자재품목을 이용하여 제품을 생산한다고 하면,
다음 이미지와 같이 데이터베이스를 본사와 지사단위로 분산 가능
위치/테이블 | 자재품목 | 생산제품 | 협력회사 | 사원 | 부서 |
본사 | ● | ● | ● | ||
지사 | ● | ● |
2) 테이블 분할(Fragmentation) 분산
- 설계된 테이블의 위치를 각각 다르게 분산하면서, 각 테이블을 쪼개서 분산함
(1) 수평분할(Horizontal Fragmentation)
- 테이블을 로우(Row) 단위로 분할
- 지사(Node)에 따라 테이블을 특정 칼럼 값을 기준으로 로우(Row)를 분리 [칼럼은 분리되지 않음]
-> 각 지사별로 사용하는 로우(Row)가 다를 때 사용 - 모든 데이터가 각 지사별로 분리되어 있는 형태(=데이터가 지사별로 별도로 존재)
-> 한 지사의 데이터는 항상 다른 지사의 데이터와 배타적으로 존재하며,
데이터를 한 군데 집합시켜 놓아도 Primary Key에 의해 중복이 발생하지 않음
=> 한 시점에 한 데이터만이 존재하므로 데이터 무결성이 보장되는 형태 - 통합처리 프로세스가 많은지를 먼저 검토한 이후에 수평분할 고려해야 함
-> 각 지사에 존재하는 테이블에 대해 통합처리를 하게 되면 조인이 발생하여 성능 저하가 발생할 수 있기 때문
위치/테이블 (위 or 아래) |
고객 | 생산제품 | 협력회사 | 사원 | 부서 |
지사 1 | ▲▽ | ▲▽ | ▲▽ | ▲▽ | ▲▽ |
지사 2 | △▼ | △▼ | △▼ | △▼ | △▼ |
(2) 수직분할(Vertical Fragmentation)
- 지사(Node)에 따라 테이블을 칼럼(Column) 단위로 분할
-> 각 테이블에는 동일한 PK 구조와 값을 가지고 있어야 함 - 모든 데이터가 각 지사별로 분리되어 있음
-> 지사별로 쪼개진 테이블들을 조합하면 PK가 동일한 데이터의 조합이 가능해야 하며,
하나의 완전한 테이블이 구성되어야 함 - 데이터를 한 군데 집합시켜 놓아도 동일한 PK는 하나로 표현하면 되므로, 데이터 중복이 발생하지 않음
위치/테이블 | 제품 | 분할 칼럼 |
본사 | ◐ | 제품번호, 단가 |
지사 | ◑ | 제품번호, 재고량 |
3) 테이블 복제 분산(Table Replication)
- 동일한 테이블을 다른 지역이나 서버에서 동시 생성하여 관리
- 마스터 데이터베이스에서 테이블의 내용을 얼마나/어떻게 서버에 위치시키냐에 따라 분류
(1) 부분복제(Segment Replication)
통합된 테이블을 한 군데(본사)에 가지고 있는데, 각 지사별로는 지사에 해당된 로우를 가지고 있는 형태
-> 지사에 존재하는 데이터는 반드시 본사에 존재하게 됨(본사의 데이터는 지사 데이터의 합)
=> 실제 프로젝트에서 많이 사용!!
위치/테이블 | 고객 |
본사 | ● |
지사 1 | ◐ |
지사 2 | ◑ |
(2) 광역복제(Broadcast Replication)
통합된 테이블을 한 군데(본사)에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 가지고 있는 형태
-> 지사에 존재하는 데이터는 반드시 본사에 존재하게 됨
(모든 지사에 있는 데이터양과 본사에 있는 데이터양이 동일함
: 본사와 지사 모두 동일한 정보를 갖고 있으므로 데이터처리에 특별한 제약을 받지 않음)
본사, 지사1, 지사2 모두 동일한 양의 코드 테이블의 데이터를 갖고 있음
위치/테이블 | 코드 |
본사 | ● |
지사 1 | ● |
지사 2 | ● |
4) 테이블 요약 분산(Table Summarization) - 둘 다 지사간의 요약 내용은 동일함
(1) 분석요약(Rollup Replication)
각 지사별 요약정보를 본사에서 통합하여, 전체 요약정보 산출
-> 각 지사는 동일한 내용에 대해 지사별로 요약되어 있는 정보를 가지고 있고,
본사에는 각 지사의 요약정보를 통합한 후 전체에 대한 요약정보를 가지고 있음
위치/테이블 | 판매실적 |
본사 | ● |
지사 1 | ● |
지사 2 | ● |
(2) 통합요약(Consolidation Replication)
각 지사별로 다른 내용의 정보를 본사에서 통합하여, 전체 요약정보 산출
-> 각 지사들은 서로 다른 요약정보를 가지고 있고,
본사에는 각 지사의 요약정보 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약정보를 가지고 있음
위치/테이블 | 판매실적 |
본사 | ● |
지사 1 | ▲▽ |
지사 2 | △▼ |
5. 분산 데이터베이스를 적용하여 성능 향상
- 성능이 중요한 시이트에 적용
- 공통코드, 기준정보, 마스터 데이터 등에는 분산환경을 구성
- 실시간 동기화가 요구되지 않을 때
-> 거의 실시간(Near Real Time)의 업무적 특징을 가지고 있을 때는 분산 환경 가능 - 특정 서버에 부하가 집중될 때 부하 분산
- 백업 사이트(Disaster Recovery Site)를 구성할 때 간단하게 분산기능을 적용하여 구성
반응형