일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리스트 컴프리헨션
- 백준 24499 파이썬
- sql
- 프로그래머스 조건에 맞는 개발자 찾기
- 백준 2852
- 정규화
- 백준 11059
- 데이터베이스
- AWS
- join
- SQLD
- react
- 파이썬
- 백준 크리문자열
- ROWNUM
- SAA-C02
- github
- 깃허브
- 백준 1756
- 알고리즘
- Today
- Total
-
[SQLD] #011 데이터 모델과 성능 - 분산 데이터베이스와 성능 본문
목차
1. 분산 데이터베이스의 개요
2. 분산 데이터베이스의 투명성
3. 분산 데이터베이스의 적용 방법 및 장단점
4. 분산 데이터베이스의 활용 방향성
5. 데이터베이스 분산 구성의 가치
6. 분산 데이터베이스의 적용 기법
7. 분산 데이터베이스를 적용하여 성능이 향상된 사례
1. 분산 데이터베이스의 개요
분산 데이터베이스의 정의
- 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어있는 데이터들의 모임
즉, 분산 데이터베이스는 DB를 연결하는 빠른 네트워크 환경을 이용하여 DB를 여러 지역의 여러 노드로 위치시켜
사용성/성능 등을 극대화 시킨 데이터베이스이다.
2. 분산 데이터베이스의 투명성 (Transparency)
분산 데이터베이스가 되기 위해서는 6가지 투명성을 만족해야 한다.
1) 분할 투명성 : 하나의 논리적 관계가 여러 단편으로 분할되어 각 단편의 사본이 여러 site에 저장
2) 위치 투명성 : 사용하려는 데이터의 저장 장소 명시 불필요. 위치정보가 System Catalog에 유지되어야 함
3) 지역사상 투명성 : 지역 DBMS와 물리적 DB 사이의 Mapping 보장. 각 지역 시스템 이름과 무관한 이름 사용 가능
4) 중복 투명성 : DB 객체가 여러 site에 중복되어있는지 알 필요가 없는 성질
5) 장애 투명성 : 구성요소 (DBMS, Computer)의 장애에 무관한 트랜잭션의 원자성 유지
6) 병행 투명성 : 다수 트랜잭션 동시 수행시 결과의 일관성 유지, Time Stamp, 분산 2단계 Locking을 이용 구현
3. 분산 데이터베이스의 적용 방법 및 장단점
1. 분산 데이터베이스 적용 방법
분산 데이터베이스를 현장에서 가치있게 사용하는 방법은 업무의 흐름을 보고 업무 구성에 따른 아키텍쳐 특징에 따라 데이터베이스를 구성하는 것이다. 단순히 분산 환경에서 DB를 구축하는 것이 목적이 아니라, 업무의 특징에 따라 데이터베이스 분산구조를 선택적으로 설계하는 능력이 필요하다.
2. 분산 데이터베이스 장단점
장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신비용 절감
- 데이터의 가용성과 신뢰성 증가
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구 수용 증대
단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 처리 비용의 증대
- 설계, 관리의 복잡성과 비용
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위험
4. 분산 데이터베이스의 활용 방향성
분산 데이터베이스는 업무적인 기능이 다양해지고 데이터의 양이 기하급수적으로 증가하는 최근 데이터베이스 환경에서 적용하는 고급화된 기술이다.
5. 데이터베이스 분산구성의 가치
데이터를 분산 환경으로 구성하였을 때 가장 핵심적인 가치는 바로 통합된 데이터베이스에서 제공할 수 없는 빠른 성능을 제공한다는 것이다.
6. 분산 데이터베이스의 적용 기법
데이터베이스 분산 전략의 종류에는 4가지가 있다.
- 테이블 위치 분산
- 테이블 분할 분산
- 테이블 복제 분산
- 테이블 요약 분산
이중에서도 가장 많이 사용하는 방식은 테이블 복제 분할 분산이고, 이 방법은 성능이 저하되는 많은 DB에서 가장 유용하게 적용할 수 있다.
1. 테이블 위치 분산
이 방법을 적용하면 테이블의 구조는 변하지 않고, 테이블이 다른 DB에 중복되어 생성되지도 않는다.
다만 설계된 테이블의 위치를 각각 다르게 위치시키는 것이다.
자재 품목은 본사에서 구입하여 관리하고 각 지사별로 자재품목을 이용하여 제품을 생산한다고 하면, 위 그림처럼 DB를 본사와 지사 단위로 분산시킬 수 있다.
또한 각각의 테이블마다 위치가 다르게 지정되어야 한다면 아래 표와 같이 각각 테이블마다 위치를 표기하여 테이블을 생성한다.
2. 테이블 분할 분산
테이블 분할 분산 : 단순히 위치만 다른 곳에 두는게 아니라 각각의 테이블을 쪼개어 분산하는 방법
테이블을 분산하는 방법은 테이블을 나누는 기준에 따라 두가지로 구분된다.
1. 수평 분할 (Horizontal Fragmentation)
지사에 따라 테이블을 특정 칼럼의 값을 기준으로 로우(row)를 분리한다. 칼럼은 분리되지 않는다. 모든 데이터가 각 지사별로 분리되어있는 형태를 가진다. 각 지사에 있는 데이터와 다른 지사에 있는 데이터가 항상 배타적으로 존재하며 한군데 집합시켜도 Primary Key에 의해 중복이 발생하지 않는다.
이와 같이 수평분할을 이용하는 경우는 각 지사별로 사용하는 로우가 다를 때 이용한다. 데이터를 수정할 때는 다른 지사가 아닌 자신의 데이터에 대해서 수정하도록 한다. 각 지사에 존재하는 테이블에 대해서 통합처리를 해야하는 경우는 JOIN이 발생하여 성능 저하가 예상되므로, 통합처리 프로세스가 많지 않은 경우에만 수평분할을 한다.
2. 수직 분할 (Vertical Fragmentation)
지사에 따라 테이블 칼럼을 기준으로 칼럼을 분리한다. 수평분할과 반대로 로우 단위로는 분리되지 않는다. 칼럼을 기준으로 분할했기 때문에 각각의 테이블에는 동일한 PK 구조와 값을 갖고있어야 한다. 지사별로 쪼개진 테이블들을 조합하면 PK가 동일한 데이터의 조합이 가능해야하며 하나의 완전한 테이블이 구성되어야 한다.
데이터를 한군데 집합시켜도 동일한 PK는 하나로 표현하면 되므로 데이터 중복은 발생되지 않는다.
예를 들어 제품의 재고량은 각 지사별로 관리하고, 제품의 단가는 본사에서 관리한다고 했을 때 테이블 수직분할 결과는 다음과 같다.
일반적으로 실제 프로젝트에서는 테이블 수직분할을 하는 사례는 드물다.
3. 테이블 복제 분산
테이블 복제 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하여 관리하는 유형
1. 부분 복제 (Segment Replication)
통합된 테이블을 한군데(본사)에 가지고 있으면서 각 지사별로는 지사에 해당된 row를 가지고있는 형태
따라서 지사에 존재하는 데이터는 반드시 본사에 존재한다. 각 지사에서 데이터 처리가 용이할 뿐만 아니라 전체 데이터에 대한 통합처리도 본사에 있는 통합테이블을 이용하게 되므로 여러 테이블에 JOIN이 발생하지 않는 빠른 작업 수행이 가능해진다.
위 그림을 보면 본사 데이터베이스에 있는 테이블에는 테이블의 전체 내용이 들어가고 각 지사 데이터베이스에 있는 테이블에는 지사별로 관계된 데이터만 들어간다. 수평 분할 분산과 마찬가지로 지사간에는 데이터의 중복이 발생하지 않으나 본사와 지사간에는 데이터의 중복이 항상 발생한다.
보통 지사에 데이터가 먼저 발생하고 본사의 데이터는 지사의 데이터를 이용하여 통합한다.
또한 본사와 지사 양쪽 모두 데이터를 수정하여 전송하는 경우 데이터의 정합성을 일치시키는 것이 어렵기 때문에 가능하면 지사에서 데이터의 수정이 발생하여 본사로 복제하도록 한다.
2. 광역 복제 (Broadcast Replication)
통합된 테이블을 본사에 가지고 있으면서 각 지사에도 본사와 동일한 데이터를 모두 가지고있는 형태
지사에 존재하는 데이터는 반드시 본사에 존재하고, 모든 지사에 있는 데이터량과 본사에 있는 데이터량이 동일하다.
본사와 지사 모두 동일한 정보를 갖고있으므로 둘다 데이터 처리에 특별한 제약을 받지는 않는다.
예를 들어 본사에서 코드테이블의 데이터에 대해 입력, 수정, 삭제가 발생하고 각 지사에서는 코드 데이터를 이용하는 프로세스가 발생한다. 즉, 본사에서는 데이터를 관리하고 지사에서는 이 데이터를 읽어 업무프로세스를 발생시킨다.
부분 복제와 마찬가지로 데이터를 복제하는데 많은 시간이 소요되고 데이터베이스와 서버에 부하가 발생하므로 보통 실시간 처리에 의해 복사하는 경우는 별로 없다.
4. 테이블 요약 분산
지역 또는 서버간에 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우
1. 분석 요약 (Rollup Replication)
각 지사별로 존배하는 요약정보를 본사에 통합하여 다시 전체에 대해 요약정보를 산출하는 분산 방법
위 그림에서 보면, 테이블에 있는 모든 칼럼과 로우가 지사에도 동일하게 존재하지만, 각 지사에는 동일한 내용에 대해 지사별로 요약되어있는 정보가 있고, 본사에는 지사의 요약정보를 통합하여 재산출하여 전체에 대한 요약정보를 갖고있는 것으로 표시되어있다.
예를들어, 제품별 판매실적이라는 테이블이 존재한다고 하자.
각 지사에서는 취급제품이 동일하다. 또한 지사별로 판매된 제품에 대해 지사별로 판매실적이 관리된다. 하지만 본사에서 판매실적을 집계할 경우 통합된 판매실적을 관리할 수 있다.
2. 통합 요약 (Consolidation Replication)
각 지사별로 존재하는 다른 내용의 정보를 본사에 통합하여 다시 전체에 대해 요약정보를 산출하는 분산 방법
위 그림에서 보면, 테이블에 있는 모든 칼럼과 로우가 지사에도 동일하게 존재하지만 각 지사에는 타 지사와 다른 요약정보를 가지고 있고, 본사에는 각 지사의 요약정보에 대한 데이터를 같은 위치에 두는 것으로 통합하여 전체에 대한 요약 정보를 가지고있는 것으로 표시된다.
본사에서 통계 데이터를 산정하는 유형은 분석요약과 비슷하지만, 통합요약은 단지 지사에서 산출한 요약정보를 한군데 취합하여 보여주는 형태이다. 데이터 통합을 본사에서 하는지, 지사에서 하는지의 차이다.
7. 분산 데이터베이스를 적용하여 성능이 향상된 사례
데이터베이스 분산 설계는 다음과 같은 경우에 적용하면 효과적이다.
- 성능이 중요한 사이트에 적용해야 한다.
- 공통 코드, 기준 정보, 마스터 데이터 등에 대해 분산 환경을 구성하면 성능이 좋아진다.
- 실시간 동기화가 요구되지 않을 때 좋다. 거의 실시간의 업무적인 특징을 가지고 있을 때도 분산 환경을 구성할 수 있다.
- 특정 서버에 부하가 집중될 때 부하를 분산하는 용도로도 좋다.
- 백업 사이트를 구성할 때 간단하게 분산 기능을 적용하여 구성할 수 있다.
출처
이 글의 내용은 모두 한국데이터베이스진흥원이 출판한 SQL 전문가 가이드 2013 Edition을 기본으로 한다.
'SQLD' 카테고리의 다른 글
[SQLD] #013 SQL 기본 - DDL (0) | 2021.04.28 |
---|---|
[SQLD] #012 SQL 기본 - 관계형 데이터베이스 개요 (0) | 2021.04.28 |
[SQLD] #010 데이터 모델과 성능 - 데이터베이스 구조와 성능 (0) | 2021.04.22 |
[SQLD] #009 데이터 모델과 성능 - 대량 데이터에 따른 성능 (0) | 2021.04.21 |
[SQLD] #008 데이터 모델과 성능 - 반정규화와 성능 (0) | 2021.04.21 |