PostgreSQL 분산 아키텍처 - Citus의 원리와 개념

분산 PostgreSQL - Citus 아키텍처 및개념

1. Citus 소개

`Citus`는 PostgreSQL 확장 모듈로, 데이터베이스 서버(노드)들을 "공유없는 아키텍처(shared nothing)"로 연결시켜주는 합니다. 이 노드들은 클러스터를 형성하며, 단일 머신보다 더 많은 데이터를 저장하고 더 많은 CPU 코어를 활용할 수 있도록 합니다. 또한, 클러스터에 새 노드를 추가하는 것으로 데이터베이스 성능을 확장할 수 있습니다.

2. 조정기 노드와 작업기 노드

`Citus` 클러스터는 하나의 특수한 노드인 조정기 노드(coordinator node)와 다른 노드들인 작업기 노드(worker nodes)로 구성됩니다. 애플리케이션은 조정기 노드에 연결하여 쿼리를 보내고, 조정기 노드는 해당 쿼리를 관련 작업기 노드에게 전달하며 결과를 집계합니다.

  • 조정기 노드는 각 쿼리에 대해:
    • 데이터가 한 작업기 노드에만 존재하는 경우 해당 노드로 전달
    • 데이터가 여러 작업기 노드에 분산存在的 경우 병렬로 실행
  • 조정기 노드는 메타데이터 테이블을 통해 작업기 노드의 상태와 데이터 분포 정보를 관리합니다.

3. 분산 데이터 관리

3.1 테이블 유형

`Citus` 클러스터에서는 세 가지 유형의 테이블을 관리합니다.

  • 분산 테이블(distributed tables): 가장 일반적인 유형으로, 데이터가 작업기 노드간에 수평적으로 분할됩니다.
  • 참조 테이블(reference tables): 모든 데이터가 단일 분할에 저장되며, 각 작업기 노드에서 복제됩니다.
  • 로컬 테이블(local tables): 조정기 노드에만 저장되는 테이블로, 분산되지 않습니다.

3.2 분할과 분리

`Citus`는 테이블을 분할(shard)하는 방법으로 데이터를 분산 관리합니다. 분할은 테이블의 특정 열(분배 열, distribution column)을 기반으로 해시화한 후 분할합니다.


SELECT * FROM pg_dist_shard;
 logicalrelid  | shardid | shardstorage | shardminvalue | shardmaxvalue
---------------+---------+--------------+---------------+---------------
 events        |  102026 | t            | 268435456     | 402653183
 events        |  102027 | t            | 402653184     | 536870911
 events        |  102028 | t            | 536870912     | 671088639
 events        |  102029 | t            | 671088640     | 805306367
 (4 rows)

3.3 분할 배치 및 동시성

`Citus`는 분할을 작업기 노드에 배치하며, 이를 통해 연결된 테이블의 쿼리 성능을 최적화합니다. 또한, 분산 쿼리 실행을 통해:

  • 병렬 처리량 증가
  • 처리속도 대폭 개선
  • 장시간 작업 대기 줄어듦

4. 쿼리 실행 및 커넥션 관리

`Citus`는 다음과 같이 쿼리 자원을 관리합니다:

  • 작업 대역폭: 하나의 세션당 작업기 노드당 최대 동시 연결을 제어합니다.
  • 느린 시작: 초기 단일 연결 사용 후 점차 동시 연결을 증가시킵니다.
  • 커넥션 캐시: 작업기 노드와의 연결을 재사용합니다.

SET citus.max_adaptive_executor_pool_size = 10;
SET citus.executor_slow_start_interval = 5000;
SET citus.max_cached_conns_per_worker = 20;
SET citus.max_shared_pool_size = 50;

태그: PostgreSQL Distributed Database citus Database Sharding Horizontal Scaling

6월 7일 17:21에 게시됨