데이터베이스에서의 클러스터 개념 정리

hyezuu·2025년 3월 15일

시작하며

데이터베이스를 공부하다 보면 '클러스터'라는 용어가 여러 맥락에서 다르게 사용되는 것을 발견했다. 특히 '클러스터링 인덱스'와 '데이터베이스 클러스터링'은 같은 '클러스터'라는 단어를 사용하지만 완전히 다른 개념이었다. 이 두 개념의 차이점을 명확히 이해해보자.

클러스터링 인덱스 (Clustered Index)

클러스터링 인덱스는 데이터의 물리적 저장 구조에 관한 개념이다. 이는 단순한 분류가 아니라 데이터가 실제로 저장되는 방식을 결정한다.

주요 특징:

  • 테이블의 데이터 행들이 인덱스 키 값을 기준으로 물리적으로 정렬되어 저장된다.
  • 하나의 테이블에는 단 하나의 클러스터링 인덱스만 가질 수 있다.
  • 인덱스의 리프 페이지가 실제 데이터 페이지다.
  • MySQL의 InnoDB 엔진에서는 기본키(Primary Key)가 자동으로 클러스터링 인덱스가 된다.

넌클러스터드 인덱스 (Non-Clustered Index)

클러스터링 인덱스와 비교해서 넌클러스터드 인덱스는 다음과 같은 차이가 있다.

주요 특징:

  • 데이터와 별도로 존재하는 인덱스 구조다.
  • 인덱스의 리프 노드는 실제 데이터가 아니라 데이터 위치를 가리키는 포인터다.
  • 테이블에 여러 개를 생성할 수 있다.
  • 데이터 접근 시 한 번 더 참조(룩업) 과정이 필요하다.

중요한 점:

  • 클러스터드 인덱스가 있는 테이블에서는 넌클러스터드 인덱스의 리프 노드가 해당 로우의 클러스터드 인덱스 키 값을 포함한다.
  • 클러스터드 인덱스가 없는 테이블(힙 테이블)에서는 넌클러스터드 인덱스의 리프 노드가 로우 식별자(RID)를 포함한다.

데이터베이스 클러스터링 (Database Clustering)

데이터베이스 클러스터링은 데이터 구조가 아닌 시스템 아키텍처에 관한 개념이다.

주요 특징:

  • 여러 서버나 노드를 하나의 논리적 시스템처럼 작동하게 구성하는 기술이다.
  • 주요 목적은 고가용성(High Availability), 부하 분산(Load Balancing), 확장성(Scalability)이다.
  • 단일 장애점(Single Point of Failure)을 제거한다.
  • 데이터 처리량과 저장 용량의 수평적 확장이 가능하다.

예시:

  • Redis Cluster: 여러 Redis 노드가 함께 동작하여 마치 하나의 Redis 서버처럼 보이게 한다. 데이터는 여러 노드에 분산(샤딩)되어 저장된다.
  • Oracle RAC, MariaDB Galera Cluster, PostgreSQL의 스트리밍 복제 등도 데이터베이스 클러스터링의 예다.

정리

두 개념 모두 "클러스터링"이라는 용어를 사용하지만 초점이 완전히 다르다:

  • 클러스터링 인덱스: 데이터 구조화와 물리적 저장 방식에 초점
  • 데이터베이스 클러스터링: 시스템 구성과 아키텍처에 초점

클러스터링 인덱스는 데이터를 특정 순서로 "구조화하여 저장"하는 것이고, 데이터베이스 클러스터링은 여러 서버를 "하나의 시스템처럼 동작"하게 하는 것이다. 둘 다 성능과 관련이 있지만, 접근 방식과 해결하려는 문제가 다르다.

profile
기록

0개의 댓글