0Pricing
SQL Academy · 강의

Citus와 분산 Postgres

Citus를 사용해 Postgres를 분산 데이터베이스로 전환하고, 같은 위치에 배치된 테이블과 참조 테이블을 활용해보세요.

Citus와 분산 Postgres은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Citus란 무엇인가

Citus는 PG 서버 클러스터를 분산 데이터베이스로 바꾸는 PostgreSQL 확장 기능입니다. 코디네이터에 SELECT/INSERT를 실행하면 Citus가 올바른 워커 샤드로 투명하게 라우팅합니다.

아키텍처

두 가지 역할이 있습니다:

  • 코디네이터 — query를 받고, 클러스터의 메타데이터를 보유하며, 라우팅과 집계를 수행합니다.
  • 워커 — 샤드 데이터를 보유하고 실제 query를 실행합니다.

설정

코디네이터와 워커에 확장 기능을 설치한 다음 워커를 등록합니다:

CREATE EXTENSION citus;

-- On the coordinator, add worker nodes:
SELECT * FROM master_add_node('worker1', 5432);
SELECT * FROM master_add_node('worker2', 5432);

분산 테이블

열을 기준으로 테이블을 분산 테이블로 지정합니다:

CREATE TABLE orders (
  id BIGSERIAL,
  user_id BIGINT NOT NULL,
  total NUMERIC(10,2),
  ...
);

SELECT create_distributed_table('orders', 'user_id');
-- Citus splits orders into shards by hash(user_id).

참조 테이블

모든 워커에 복제되는 작은 테이블입니다. JOIN이 로컬에서 처리됩니다:

CREATE TABLE countries (id INT, name TEXT);
SELECT create_reference_table('countries');
-- Every worker has a full copy of countries.

동일 위치 배치

같은 분산 열을 사용하는 테이블은 동일 위치에 배치됩니다. 특정 user_id의 행은 항상 같은 워커에 저장됩니다. user_id를 기준으로 하는 JOIN은 로컬에서 처리됩니다:

SELECT create_distributed_table('orders', 'user_id');
SELECT create_distributed_table('events', 'user_id', colocate_with => 'orders');

단일 테넌트 query

Citus는 user_id로 필터링된 query를 올바른 워커로 라우팅하므로 빠릅니다:

SELECT * FROM orders WHERE user_id = 42;
-- Goes to one worker shard, returns in milliseconds.

분산 집계

Citus는 워커 전체에서 COUNT/SUM을 병렬로 실행합니다:

SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Each worker computes locally; coordinator concatenates.

재분산

워커를 추가하고 샤드를 재분산합니다:

SELECT * FROM citus_add_node('worker3', 5432);
SELECT * FROM rebalance_table_shards('orders');
-- Citus moves some shards onto the new worker.

제한 사항

  • 동일 위치에 배치되지 않은 테이블 간 트랜잭션은 제한됩니다.
  • 일부 PostgreSQL 기능은 분산 테이블에 적용되지 않습니다.
  • 스키마 변경 사항은 전파되지만 조정이 필요합니다.

Citus Cloud / Azure

Citus는 Microsoft에 인수되어 현재 Azure Database for PostgreSQL — Hyperscale (Citus)의 일부입니다. 또한 여전히 오픈 소스입니다.

대안

  • YugabyteDB — 분산 PG 호환 데이터베이스
  • CockroachDB — Postgres wire 호환 분산 데이터베이스
  • Pgvector / TimescaleDB — 단일 노드 특화 제품

Citus가 적합한 경우

각 테넌트의 query가 격리되는 멀티 테넌트 SaaS에 적합합니다. 테넌트와 시간을 기준으로 파티셔닝하는 시계열 데이터에도 적합합니다. 병렬 집계를 사용하는 분석에도 적합합니다.

요약

Citus는 Postgres를 분산 데이터베이스로 만듭니다.

  • 코디네이터 + 워커
  • 열을 기준으로 분산하고, 로컬 JOIN을 위해 동일 위치에 배치합니다.
  • 공유 차원에는 참조 테이블을 사용합니다.
  • 가장 적합한 대상: 멀티 테넌트 SaaS

빠른 확인

Citus에서 두 분산 테이블을 같은 키를 기준으로 “동일 위치에 배치”할 때의 이점은 무엇입니까?

자주 묻는 질문

“Citus와 분산 Postgres” 강의는 무료인가요?

네 — “Citus와 분산 Postgres” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Citus와 분산 Postgres”에서 뭘 배우나요?

Citus를 사용해 Postgres를 분산 데이터베이스로 전환하고, 같은 위치에 배치된 테이블과 참조 테이블을 활용해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“Citus와 분산 Postgres” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 샤딩 전략: 범위, 해시, 디렉터리
  2. 샤드 간 쿼리: 가장 어려운 문제
  3. Citus와 분산 Postgres
  4. 샤딩하지 말아야 하는 경우
← SQL Academy(으)로 돌아가기