일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 결정계수
- cross validation
- T-검정
- SQL on 하둡
- 병렬 쿼리 시스템
- SPLIT
- 가설검정
- 딕셔너리
- 분산분석
- 밀도기반
- DBSCAN
- 교차검증
- 다중공선성
- p-value
- k-means
- distribution
- list
- merge
- pca
- join
- hive
- 분포
- Sawzall
- 유사도
- dict
- pig
- Python
- 하둡
- 데이터프레임
- DataFrame
- Today
- Total
one of a kind scene
4-2 데이터 처리 기술_분산 데이터 저장 기술 part2_데이터베이스 클러스터 본문
분산 데이터 저장 기술 part2_데이터베이스 클러스터
데이터베이스 클러스터
1. 개념
① 데이터베이스 클러스터는 하나의 데이터베이스를 여러 개의 서버(또는 가상 서버) 상에 구축하는 것을 의미
② 데이터베이스 파티셔닝은 데이터베이스를 여러 부분으로 분할하는 것을 의미. 분할된 각 요소는 파티션이라고 함.
③ 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션을 수행
2. 데이터베이스 파티셔닝 구현의 효과
① 병렬처리 : 파티션 사이의 병렬처리를 통해 빠른 데이터 검색 및 처리 성능을 얻을 수 있음
② 고가용성 : 특정 파티션에서 장애가 발생하더라도 서비스가 중단되지 않는다
③ 성능향상 : 성능의 선형적인 증가 효과를 볼 수 있다.
3. 데이터베이스 클러스터의 구분
<데이터베이스 시스템을 구성하는 형태>
① 단일 서버 내의 파티셔닝
② 다중 서버 사이의 파티셔닝
<리소스 공유 관점>
① 무공유 디스크
• 각 데이터베이스 인스턴스(=노드)는 자신이 관리하는 데이터 파일을 자신의 로컬 디스크에 저장
• 파일들은 노드간에 공유하지 않는다
• 각 인스턴스나 노드는 완전히 분리된 데이터의 서브 집합에 대한 소유권을 가지고 있음
• 대부분의 데이터베이스 클러스터가 무공유 방식을 채택
<장점>
• 노드 확장에 제한이 없다
<단점>
• 각 노드에 장애가 발생할 경우 별도의 폴트톨러런스(fault-tolerance)를 구성해야함
※ 폴트톨러런스 : 시스템에 고장이 발생하더라도 모든 기능 혹은 기능의 일부를 기존과 같이 유지하는 기술
② 공유 디스크 : Oracle RAC 데이터베이스 서버 꼭! 기억!!!
• 공유 디스크 (데이터베이스) 클러스터에서 모든 (데이터베이스) 인스턴스(=노드)들은 데이터 파일을 논리적으로 공유하며, 각 인스턴스는 모든 데이터에 접근 가능
• 데이터를 공유하려면 SAN(Storage Area Network)과 같은 네트워크가 반드시 필요
• 모든 노드가 데이터 수정 가능
• 노드간의 동기화 작업 수행을 위한 별도의 커뮤니케이션 채널 필요
<장점>
• 높은 수준의 폴트톨러런스(fault-tolerance)를 제공
• 클러스터를 구성하는 노드 중 하나만 살아있어도 서비스 가능
<단점>
• 클러스터가 커지면 디스크 영역에서 병목현상 발생
4. 데이터베이스 클러스터의 종류
① Oracle RAC 데이터베이스 서버 : ★공유 디스크 방식★
• Oracle RAC는 공유 클러스터이기 때문에, 데이터는 공유 스토리지에 저장
• 클러스터의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 엑세스
• 특정 노드가 데이터를 '소유'하는 개념이 없다
• 공유 디스크 방식이기 때문에 데이터를 파티셔닝할 필요가 없지만, 성능 향상을 위해 파티셔닝되는 경우가 빈번
• 도입 비용 때문에 확장성이 중요한 데이터보다는 고가용성을 요구하는 데이터에 많이 사용
<장점>
• 가용성 : 높은 수준의 폴트톨러런스(fault-tolerance)를 제공, 노드 중 하나만 살아있어도 서비스 가능
• 확장성 : 추가 처리 성능 필요시 application이나 데이터베이스를 수정할 필요 없이 새 노드를 클러스터에 쉽게 추가
• 비용절감 : 저가형 상용 하드웨어의 클러스터로도 고가의 SMP 시스템만큼 효율이 남
ex) 4CPU의 16노드 클러스터를 사용하면 동급 성능의 64CPU SMP 시스템 정도의 성능이 남
<단점>
• 클러스터가 커지면 디스크 영역에서 병목현상 발생
② IBM DB2 ICE(Integrated Cluster Environment)
• DB2는 CPU/메모리/디스크를 파티션별로 독립적으로 운영하는 무공유 방식의 클러스터링
• 애플리케이션은 여러 파티션에 분산된 데이터베이스를 하나의 데이터베이스(Single View Database)로 보게됨
• 따라서, 데이터가 어느 파티션에 존재하고 있는지 알 필요가 없음(하나의 데이터베이스로 보니깐)
• 사용자가 증가하면 기존 시스템에 노드를 추가하고 데이터를 재분배함으로써 시스템의 성능과 용량을 일정하게 유지 가능
• 하나의 노드에 장애가 발생할 경우 해당 노드에서 서비스하는 데이터에 대한 별도의 페일오버(failover)메커니즘 필요
※ 페일오버 : 데이터베이스의 최신 버전을 백업해두어, 1차 시스템에 장애가 발생하였을 경우 대체 시스템을 작동시켜 장애를 극복하는 기능
• 장애 상황이 발생하게 되면 다른 노드가 해당 데이터에 대한 서비스를 처리하는 방식으로 가용성을 보장
③ 마이크로소프트 SQL Server
• SQL Server는 무공유 방식이며 연합(Federated) 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능 제공
• 연합 데이터베이스는 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터베이스들 간의 논리적 결합이며, 네트워크를 이용하여 연결
• 각 노드의 데이터베이스 인스턴스 사이에 링크를 구성한 후 모든 파티션에 대해 UNION ALL을 이용해 논리적인 뷰(VIEW)를 구성하는 방식으로 분산된 환경의 데이터에 대한 싱글 뷰를 제공 SQL Server에서는 이런 뷰를 DPV(Distirbuted Partitioned View)라고 한다
<마이크로소프트 SQL Server 구성의 문제점>
• DBA나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야 하고, 전역 스키마(Global schema) 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스 해야함
• 노드의 개수가 작으면 간단하게 구성할 수 있지만, 노드가 많아지거나 노드의 추가/삭제가 발생하는 경우 파티션을 새로 구성해야함
• 페일오버에 대해서는 별도로 구성해야함