분산 데이터 저장기술 - 클러스터

duri·2024년 2월 7일
0

ADP

목록 보기
8/18

분산 데이터 저장 기술은 1. 분산파일시스템, 2. 클러스터, 3. 데이터베이스, 4. NoSQL로 구분된다. 각각의 기술 모두 알아야 할 게 많은 덩어리다.

어떤 기술이던간에 분산된 데이터를 저장하는 기술은 대용량의 저장공간, 빠른 처리성능, 확장성, 신뢰성, 가용성을 보장해야 한다.

클러스터

하나의 데이터베이스를 여러개의 서버상에 구축하는 것을 말한다.
통합 시 성능, 가용성의 향상을 위해 데이터베이스 차원의 파티셔닝, 클러스터링을 이용한다

** 파티셔닝 : 데이터베이스를 여러 부분(파티션)으로 분할하는것. 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션을 수행할 수 있다.

파티셔닝 구현의 효과

  • 병렬처리 : 각 파티션에서 병렬처리를 통해 성능을 올림
  • 고가용성 : 하나의 파티션에서 장애가 발생해도 다른 파티션에서 작업 가능
  • 성능향성 : 성능이 선형적으로 향상됨

클러스터의 구분

단일서버 클러스터, 다중서버 클러스터 // 공유 클러스터, 무공유 클러스터로 구분할 수 있다.

무공유 디스크

  • 각 데이터베이스 인스턴스는 자신이 관리하는 데이터 파일을 자신의 로컬디스크에 저장
  • 각 파일을 노드간에 공유하지 않음
  • 완전히 분리된 데이터의 서브집합에 대한 소유권을 각 인스턴스, 클러스터가 온전히 가지고 처리함
  • 다른 노드에 데이터 처리를 요청하면 그 노드가 처리하는 방식으로 구현
  • 오라클 RAC를 제외한 대부분의 클러스터가 무공유방식을 채택함

😇:노드 확장에 제한이 없음
😈:각 노드에 장애가 발생할 경우를 대비해 별도의 fault-tolerance를 구성해야함

** fault-tolerance : 고장감내성. 고장이 발생하더라도 기능의 일부를 유지하는 기술

공유 디스크

  • 데이터 파일은 논리적으로 모든 데이터베이스 인스턴스 노드에 공유됨
  • 각 인스턴스는 모든 데이터에 접근 가능
  • SAN과 같은 네트워크가 반드시 필요
  • 모든 노드가 데이터를 수정할 수 있으므로 동기화작업을 수행할 커뮤니케이션 채널 필요

😇:높은 수준의 fault-tolerance를 제공
😈:클러스터가 커지면 디스크 영역에서 병목현상 발생

클러스터의 종류

1. 오라클 RAC

특징

  • 공유 클러스터. (모든 노드에서 실행되고 데이터는 한군데에)
  • 특정 노드가 데이터를 소유하지 않음
  • 성능향상을 위해 파티셔닝될 수 있음
  • 응용프로그램은 노드가 아니라 RAC클러스터에 연결하며 RAC는 클러스터의 모든 노드에 로드를 고르게 분산

2. IBM DB2 ICE(integrated cluster environment)

특징

  • 무공유클러스터
  • 응용프로그램은 여러 파티션에 분산된 데이터베이스를 하나의 데이터베이스로 봄(= 어떤 데이터가 어디 있는지 몰라도 됨)
  • 데이터, 사용자가 증가하면 애플리케이션의 수정 없이 기존 시스템에 노드를 추가하고 데이터를 재분배하여 성능, 용량 유지
  • 각 노드로 분산되는 파티셔닝의 구성에 따라 성능 차이 발생
  • 하나의 노드에 장애 발생시 다른 노드가 처리할 수 있도록 하는 fail over 메커니즘 필요 -> 공유디스크 방식을 사용하여 가용성 보장
  • 공유디스크에 저장된 데이터 파일에 대해 특정 시점에서는 특정 노드에 의해 서비스가 이루어지고 장애 상황이 발생하면 다른 노드가 해당 서비스 처리.

3. 마이크로소프트 SQL server

특징

  • 연합(federated) 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능을 제공함
    ** 연합데이터베이스 : 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터베이스들간의 논리적인 결합. 네트워크를 이용해 연결됨
  • 데이터는 관련 서버들로 수평분할됨.
  • 각 노드의 데이터베이스 인스턴스 사이에 링크를 구성한 후 모든 파티션에 대해 union all 을 이용해 논리적인 뷰를 구성하는 방식으로 분산된 환경의 데이터에 대한 싱글 뷰를 제공함. (=DPV, distributed partitioned view)
  • failover 메커니즘 : active-standby

😈

  • dba 나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야 하고, 전역 스키마 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스해야함
  • 노드 개수가 작으면 간단하게 구성할 수 있지만, 노드가 많아지거나 노드의 추가, 삭제가 발생하는 경우 파티션을 새로 구성해야함. 페일오버에 대해서는 별도

4. MySQL

특징

  • 비공유 클러스터. 메모리 기반 데이터베이스의 클러스터링 지원
  • 특정한 하드웨어, 소프트웨어 없이 병렬 서버구조로 확장 가능
  • 관리노드, 데이터노드, mysql 노드로 구성됨
    * 관리노드 : 클러스터를 관리. 클러스터 시작과 재구성시에만 관여
    • 데이터노드 : 클러스터의 데이터를 저장
    • mysql 노드 : 클러스터 데이터에 접근을 지원
  • 가용성을 위해 데이터를 다른 노드에 복제 -> 장애발생시 활용
  • 장애가 발생했던 노드가 복구되면 -> 동기화 자동수행
  • 데이터는 동기화 방식으로 복제되며 이 작업을 위해 노드간 별도의 네트워크 구성

😈

  • 파티셔닝은 linear key 파티셔닝만 가능
  • 클러스터에 참여하는 노드수는 255로 제한됨
  • 데이터 노드는 최대 48개
  • 트랜잭션 수행중 롤백 지원 안함 -> 수행이전으로 롤백만 가능
  • 하나의 트랜잭션에 많은 데이터를 처리하는 경우 메모리 부족 문제 발생가능
  • 운영 중 노드 추가 삭제 불가
profile
배우는중인 두리

0개의 댓글