2부. 분산 데이터
자연은 속일 수 없으므로 성공적인 기술을 위해서는 홍보보다 현실이 우선시되어야 합니다.
리처드 파인만, 로저스 위원회 보고서 (1986)
이 책의 1부에서는 데이터가 단일 머신에 저장될 때 적용되는 데이터 시스템의 측면에 대해 설명했습니다. 이제2부에서는 한 단계 더 나아가 여러 대의 컴퓨터가 데이터 저장 및 검색에 관여하는 경우 어떻게 될까요?
여러 컴퓨터에 데이터베이스를 배포하려는 이유는 여러 가지가 있을 수 있습니다:
- 확장성
-
데이터 볼륨, 읽기 부하 또는 쓰기 부하가 단일 시스템에서 처리할 수 있는 것보다 커지면 여러 시스템으로 부하를 분산할 수 있습니다.
- 내결함성/고가용성
-
하나의 머신(또는 여러 대의 머신, 네트워크, 전체 데이터센터)이 다운되더라도 애플리케이션이 계속 작동해야 하는 경우, 여러 대의 머신을 사용하여 이중화를 제공할 수 있습니다. 한 대가 고장 나면 다른 대가 이를 대신할 수 있습니다.
- 지연 시간
-
전 세계에 사용자가 있는 경우, 각 사용자가 지리적으로 가까운 데이터센터에서 서비스를 받을 수 있도록 전 세계 여러 위치에 서버를 두는 것이 좋습니다. 이렇게 하면 사용자가 네트워크 패킷이 지구 반 바퀴를 돌 때까지 기다릴 필요가 없습니다.
더 높은 부하로 확장
더 높은 부하로 확장해야 하는 경우 가장 간단한 방법은 더 강력한 컴퓨터를 구입하는 것입니다( 수직 확장 또는 스케일업이라고도 함). 많은 CPU, 많은 RAM 칩, 많은 디스크를 하나의 운영 체제에 결합할 수 있으며, 빠른 상호 연결을 통해 모든 CPU가 메모리 또는 디스크의 모든 부분에 액세스할 수 있습니다. 이러한 종류의 공유 메모리 아키텍처에서는 모든 구성 요소를 하나의 시스템으로 취급할 수 있습니다 [1].i
공유 메모리 접근 방식의 문제점은 비용이 선형적으로 증가하는 것보다 더 빠르게 증가한다는 것입니다. CPU가 두 배, RAM이 두 배, 디스크 용량이 두 배인 머신은 일반적으로 비용이 두 배 이상 더 많이 듭니다. 또한 병목현상으로 인해 크기가 두 배인 컴퓨터가 반드시 두 배의 부하를 처리할 수는 없습니다.
공유 메모리 아키텍처는 제한적인 내결함성을 제공할 수 있지만(하이엔드 머신에는 핫스왑이 가능한 구성 요소(머신을 종료하지 않고 디스크, 메모리 모듈, CPU까지 교체 가능)), 이는 확실히 단일 지리적 위치로 제한됩니다.
또 다른 접근 방식은 공유 디스크 아키텍처로, 독립적인 CPU와 RAM을 갖춘 여러 대의 컴퓨터를 사용하지만 고속 네트워크를 통해 연결된 컴퓨터 간에 공유되는 디스크 배열에 데이터를 저장하는 방식입니다.ii 이 아키텍처는 일부 데이터 웨어하우징 워크로드에 사용되지만 경합과 잠금 오버헤드로 인해 공유 디스크 접근 방식의 확장성이 제한됩니다[2].
공유-무공유 아키텍처
이와는 대조적으로 공유 아키텍처[3]( 수평 확장 또는 스케일 아웃이라고도 함)가 많은 인기를 얻고 있습니다. 이 접근 방식에서는 데이터베이스 소프트웨어를 실행하는 각 머신 또는 가상 머신을 노드라고 ...