분산 데이터의 이해

Alan·2023년 3월 30일
0

여러 장비 간 분산된 데이터베이스를 필요로 하는 이유

  • 확장성
    • 데이터 볼륨, 읽기 부하, 쓰기 부하가 단일 장비에서 다룰 수 있는 양보다 커지면 부하를 여러 장비로 분배할 수 있음
  • 내결함성/고가용성(HA)
    • 장비 하나(또는 여러 장비나 네트워크, 전체 데이터센터)가 죽더라도 애플리케이션이 계속 동작해야 한다면 여러 장비를 사용해 중복성을 제공할 수 있음
  • 지연 시간
    • 전 세계에 사용자가 있다면 사용자와 지리적으로 가까운 곳의 데이터센터에서 서비스를 제공하기 위해 전 세계 다양한 곳에 서버를 둘 수 있음

고부하 확장 아키텍처

  • 공유 메모리 아키텍쳐

    • 흔히 말하는 수직확장

    • 장비를 더 좋은 장비로 업그레이드 하는 방식

    • 많은 CPU, 많은 메몰 칩, 많은 디스크를 하나의 운영체제로 결합

    • 빠른 상호연결로 모든 CPU가 메모리나 디스크에 direct로 접근 가능

    • 단점

      • 비용이 선형적으로 증가하지 않음

      • 두 배 크기의 장비가 두 배의 부하를 처리할 수 없음(병목현상)

      • 제한적인 내결함성 제공(하이엔드 장비는 핫 스왑이 가능. 핫 스왑이란 장비를 중단시키지 않고 디스크, 메모리 모듈, CPU를 교체할 수 있는 것을 말함)

  • 공유 디스크 아키텍처

    • 독립적인 CPU와 RAM을 탑재한 여러 장비를 사용하며, 데이터 저장은 장비 간 공유하는 디스크 배열에 하는 방식

    • 여러 장비는 고속 네트워크(NAS)로 연결

    • 일부 데이터 웨어하우스에서 사용하는 방식이지만, 잠금 경합과 오버헤드가 공유 디스크 접근 방식의 확장성을 제한

  • 비공유 아키텍처

    • 흔히 말하는 수평확장

    • 각 노드는 CPU, RAM, DISK를 독립적으로 사용하며, 노드 간 코디네이션은 네트워크를 사용해 소프트웨어 수준에서 수행

    • 특별한 하드웨어가 필요하지 않으므로 가격 대비 성능이 가장 좋음

    • 지리적인 영역에 제한이 없으므로 데이터를 분산해서 저장할 수 있으며, 지리적으로 가까운 사용자의 응답에 활용할 수 있어 지연시간을 줄이고, 전체 데이터 센터의 손실을 줄일 수 있음

    • 단점

      • 비공유 아키텍처가 모든 면에서 좋은 것은 아님

      • 대개 부가적인 애플리케이션 복잡도를 야기하며, 때로는 사용할 수 있는 데이터 모델의 표현을 제한

      • 경우에 따라 단일 스레드 프로그램이 100개 이상의 CPU 코어를 사용하는 클러스터보다 훨씬 효율적으로 수행될 수 있음

복제 대 파티셔닝

  • 여러 노드에 데이터를 분산하는 방법은 일반적으로 두 가지로 구분

  • 복제

    • 같은 데이터의 복사본을 잠재적으로 다른 위치에 있는 여러 노드에 유지

    • 중복성을 제공

    • 일부 노드가 사용 불가능 상태라면 해당 데이터는 남은 다른 노드를 통해 여전히 제공

  • 파티셔닝

    • 큰 데이터베이스를 파티션이라는 작은 서브셋으로 나누고 각 파티션은 각기 다른 노드에 할당(샤딩)

0개의 댓글