728x90
분산데이터 저장기술
- 분산파일시스템
- 클러스터
- 데이터베이스
- NoSQL
1. 데이터베이스 클러스터
- 하나의 데이터베이스를 여러개의 서버상에 구축하는 것
- 데이터를 통합할 때, 성능과 가용성의 향상을 위해 데이터베이스 차원의 파티셔닝 또틑 클러스터링을 이용
- 데이터베이스 파티셔닝: 데이터베이스를 여러부분으로 분할하는 것을 의미
- 파티션: 분할된 각 요소. 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션을 수행할 수 있음
1) 효과
- 병렬처리: 파티션 사이의 병렬처리를 통한 빠른 데이터 검색 및 처리 성능을 얻을 수 있음
- 고가용성: 특정 파티션에서 장애가 발생하더라도 서비스가 중단되지 않음
- 성능향상: 성능의 선형적인 증가 효과를 볼 수 있음
2) 데이터베이스 클러스터 구분
- 구성형태에 따라 단일서버 내의 파티셔닝/ 다중서버 사이의 파티셔닝으로 구분
- 리소스 공유관점에서 공유디스크(shared Disk)/무공유(shared Nothing)로 구분
i) 무공유 디스크
- 무공유 클러스터에서 각 데이터베이스 인스턴스는 자신이 관리하는 데이터 파일을 자신의 로컬 디스크에 저장하며, 이 파일들은 노드간 공유하지 않음
- 각 인스턴스나 노드는 완전히 분리된 데이터의 서브집합에 대한 소유권을 가지고 있음
- 각 데이터는 소유권을 갖고 있는 인스턴스가 처리함
- 한 노드가 데이터 처리 요청을 받으면 해당 노드는 처리할 데이터를 갖고 있는 노드에 신호를 보내 데이터 처리를 요청
- Oracle RAC(Real Application Cluster)를 제외한 대부분의 데이터베이스 클러스터가 무공유 방식을 채택함
- 노드 확장에 제한이 없음
- 각 노드에 장애가 발생할 경우를 대비해 별도의 Fault-Tolerance를 구성해야 함
* Fault-Tolerance: 시스템 고장이 발생하더라도 모든 기능 혹은 기능의 일부를 기존과 같이 유지하는 기술
ii) 공유 디스크
- 공유디스크 클러스터에서 데이터 파일은 논리적으로 모든 데이터베이스 인스턴스 노드들은 데이터 파일을 논리적으로 공유
- 각 인스턴스는 모든 데이터에 접근할 수 있음
- 데이터를 공유하려면 SAN(Storage Area Network)와 같은 네트워크가 반드시 있어야 함
- 모든 노드가 데이터를 수정할 수 있기 때문에 노드간 동기화 작업수행을 위한 별도의 커뮤니케이션 채널이 필요
- 높은 수준의 Fault-Tolerance를 제공하므로 클러스터를 구성하는 노드 중 하나의 노드만 살아 있어도 서비스가 가능
- 클러스터가 커지면 디스크 영역에서 병목현상 발생
2. 데이터 베이스 클러스터 종류
1) Oracle RAC (Real Application Cluster) 데이터베이스 서버
- 공유 클러스터로 클러스터의 모든 노드에서 실행되며 데이터는 공유 스토리지에 저장
- 클러스터의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 엑세스
- 특정 노드가 데이터를 '소유'하는 개념이 없음
- 데이터를 파티셔닝할 필요가 없지만 성능향상을 위해 파티셔닝 할 수 있음
- 가용성: 높은 수준의 fault tolerance를 제공하므로 클러스터를 구성하는 노드 중 하나의 노드만 살아있어도 서비스가 가능
- 확장성: 추가 처리 성능이 필요하면 응용 프러그램이나 데이터베이스를 수정할 필요 없이 새 노드를 클러스터에 쉽게 추가 가능
클러스터의 모든 노드간에 균형이 유지되도록 로드가 다시 분산됨 - 비용 절감: 표준화된 소규모 저가형 상용 하드웨어의 클러스터에서도 고가의 SMP 시스템 만큼 효율적으로 응용 프로그램을 실행함으로써 하드웨어 비용 절감
- 도입비용 때문에 확장성이 중요한 데이터보다 고가용성을 요구하는 데이터에 많이 사용
2) IBM DB2 ICE(Integrated Cluster Environment)
- CPU, Memory, Disk를 파티션별로 독립적으로 운영하는 무공유방식 클러스터링 지원
- 데이터와 사용자가 증가하면 애플리케이션의 수정없이 기존 시스템에 노드를 추가하고 데이터를 재분배함으로써 시스템의 성능과 용량을 일정하게 유지가능
- 하나의 노드에 장애가 발생할 경우 해당 노드에서 서비스하는 데이터에 대한 별도의 failover 메커니즘이 필요하므로, DB2로 클러스터링을 구성할 때는 공유디스크 방식을 사용하여 가용성 보장
* Failover: 데이터베이스의 최신 버전을 백업해두어, 1차 시스템에 장애가 발생하였을 경우 대체 시스템을 작동시켜 장애를 극복하는 기능
3) 마이크로소프트 SQL Server
- 연합(Federated) 데이터 베이스형태로 여러 노드로 확장할 수 있는 기능을 제공
- 연합 데이터베이스는 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터 베이스들의 논리적인 결합이며, 네트워크를 이용하여 연결됨
- 데이터는 관련된 서버들로 수평 분할되며 테이블을 논리적으로 분리해 물리적으로는 분산된 각 노드에 생성
- Failover 메커니즘을 제공하지만 Active-Active가 아닌 Active-Stanby 방법 사용
i) 서버구성 문제점
- DBA나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야하고 전역 스키마 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스해야 함
- 노드의 개수가 작으면 간단하게 구성할 수 있지만, 노드가 많아지거나 노드의 추가/삭제가 발생하는 경우 파티션을 새로 구성해야 함
- Failover에 대해서 별도 구성해야 함
4) MySQL
- 비공유형
- 메모리(최근에는 디스크도 제공)기반 데이터베이스의 클러스터링 지원
- 특성 하드웨어 및 소프트 웨어를 요구하지 않고 병렬 서버구조로 확장이 가능
- 관리노드, 데이터노드, MySQL 노드로 구성됨
- 관리노드: 클러스러를 관리하는 노드. 클러스터 시작과 재구성시에만 관여
- 데이터노드: 클러스터의 데이터를 저장하는 노드
- MySQL 노드: 클러스터 데이터에 접근을 지원하는 노드
- 데이터 가용성을 높이기 위해 데이터를 다른 노드에 복제시키며, 특정 노드에 장애가 발생하더라도 지속적인 데이터 서비스가 가능
- 데이터는 동기화 방식으로 복제되며 이런 작업을 위해 일반적으로 데이터 노드간에는 별도의 네트워크가 구성됨
i) 제한사항
- 파티셔닝은 LINEAR KEY 파티셔닝만 사용가능
- 클러스터에 참여하는 노드(SQL노드, 데이터노드 등) 255로 제한. 데이터 노드는 최대 48개 까지만 가능
- 트랜잭션 수행 중에 롤백을 지원하지 않으므로 작업 수행 중 문제가 발생했다면 전체 트랜잭션 이전으로 롤백해야 함
- 하나의 트랜잭션에 많은 데이터를 처리하는 경우 메모리 부족 문제가 발생할 수 있음
- 칼럼명 길이는 31자, 데이터베이스의 테이블 길이는 122자까지 제한. 메타 데이터는 2만 320개까지 가능
- 모든 클러스터의 기종은 동일해야 함. 기종에 따른 비트 저장방식이 다르면 문제 발생가능성 있음
- 운영중 노드를 추가/삭제 불가
728x90
'통계학 > ADP' 카테고리의 다른 글
[ADP] 분산데이터 저장기술 - 분산파일시스템 (0) | 2025.02.20 |
---|---|
[ADP] 빅데이터 처리기법 (0) | 2025.01.17 |
[ADP] 데이터 처리 프로세스 (1) | 2025.01.16 |
[ADP] DBMS와 SQL (1) | 2025.01.15 |
[ADP] 빅데이터의 이해 (0) | 2025.01.14 |