2. CLUSTER
        1) Cluster 개념
        2) Shared Nothing Disk



1) Cluster 개념

Database 클러스터라 함은 하나의 DB를 복수개의 서버 상에 구축되는 경우를 지칭한다. 
DB 클러스터와 비슷한 형태로 복수개의 독립 된 DB가 서로 연계되는 경우가 있다.
예시로 DBlink나 CDC 등이 있는데, 이러한 DB는 서로 데이터를 읽거나 쓰지만 아래서 설명할 DB Cluster 용도에 부합하지 않는다.

DB Cluster 용도
복수개의 서버를 구성하여 고가용성 (Transactional), 병렬처리 (Analytical), 성능향상 (Online)의 요구를 만족시키는 시스템의 구성 형태를 DB Cluster라고 칭한다.

- 고가용성 (Transactional)

Database의 가용성이란, DB가 동작하고 있는 시간과 정지한 시간의 비율(또는 확률)이다. 연간 가용성이 99.999%라면 1년동안 5분 정도 정지했음을 의미한다.
고가용성을 실현하려면 데이터베이스 시스템을 구성할 서버나 스토리지 장비를 각각 2대 이상으로 구성하여, 한쪽에 장애가 발생하더라도 단 시간내에 운용을 재개할 수 있도록 함을 의미한다. 이를 고가용성 클러스터라고 한다. 서비스를 제공하던 DB에 장애가 발생할 경우, 동일한 데이터를 가지고 있는 복제 DB(이중화 된 DB)로 Fail-over를 하여 계속적인 서비스를 제공할 수 있다.
서버가 한대인 데이터베이스 시스템에서 장애가 발생하면, 미리 백업해 둔 데이터를 복원하고, 백업한 시점에서 장애발생까지 사이의 트랜잭션 로그를 적용하여 복구해야 한다. 
하드웨어적인 장애로 충돌한 경우, 새로운 서버로 교체한 후 데이터베이스를 복원하고 변경을 적용한다. 
따라서 고가용성 시스템은 하나의 서버만으로 실현이 힘들어, 고가용성 클러스터가 필요하다. 고가용성 측면에서 클러스터 구축시의 주의점은, 어딘가 문제가 발생했을 때 복구하는데까지 오랜 시간이 걸리지 않도록 해야한다는 점이다. 

- 병렬처리 (Analytical)

데이터의 크기가 상당하거나 사용하는 SQL문이 복잡할 경우, 하나의 SQL문 실행에 막대한 시간이 걸린다. 이럴 경우 데이터베이스를 복수 개가 단위별로 각각 병렬처리하여 결과를 통합하는 것 같은 방법을 사용할 수 있다. 이중화로 구성된 DB는 항상 같은 데이터를 가지고 있기 때문에 업무 특성(DML 과 SELECT 등)을 고려하여 어플리케이션을 분산시키면 전체적인 성능 향상으로 이어질 수 있다.


- 성능향상 (Online)

데이터베이스의 유저수가 막대하게 많아 질 경우(WEB 계 APPLICATION에서 자주 발생하는 상황), 데이터베이스의 복제본을 만들어서 참조 처리는 복제 DB를 사용하게 하는 방법으로 유저수가 많아지는 것을 대비할 수 있다. Goldilocks의 경우 서버 운영중에도 Scale Out이 가능하여, 무한 복제 및 참조가 가능하다.

/* 위 세가지 분류 방법은 오픈소스 관계형 DB시스템(RDBMS)의 하나인 Postgres의 코어 멤버인 Josh Berkus씨가 제안한 것이다.*/
/* 의견일 뿐이다. 골디락스는 내용의 요구를 모두 충족하기에, 이 의견을 선택하여 작성하였다. */
/* 이 내용에 따르면 Shared Disk인 Oracle의 RAC은 cluster라고 보기 힘들 수 있다. (1. 고가용성 측면에서, disk 파괴되면 끝이므로. RAC 자체에서 master disk를 복제해서 보관하는 기능이 있다면 몰라도) */

[출처]


'IT Engineer > Database' 카테고리의 다른 글

coordinator 위치에 따른 성능테스트  (0) 2019.02.13
coordinator 위치에 따른 성능테스트 결과메모  (0) 2019.02.13
Shared Nothing Disk  (0) 2019.02.13
goldilocks process  (0) 2019.02.13
goldilocks cluster network location  (0) 2019.02.13

+ Recent posts