프로젝트 소개

Citus는 단일 Postgres 데이터베이스를 분산 데이터베이스로 변환하는 PostgreSQL 확장으로, 표준 PostgreSQL 도구와 확장을 계속 사용하면서 여러 노드로 스케일아웃할 수 있게 해줍니다. README에 설명된 핵심 기능: - 분산 테이블: 테이블이 PostgreSQL 노드 클러스터 전반에 샤딩되어 CPU, 메모리, 스토리지, I/O 용량을 결합합니다. create_distributed_table 함수는 로컬 또는 워커 노드 전반에 테이블을 샤딩합니다. - 참조 테이블: 분산 컬럼을 포함하지 않는 조인과 외래 키를 지원하고 읽기 성능을 향상시키기 위해 모든 노드에 복제됩니다. - 분산 쿼리 엔진: SELECT, DML 및 기타 작업을 클러스터 전반에 라우팅하고 병렬화합니다. 분산 컬럼으로 필터링된 쿼리는 단일 워커로 라우팅되고, 다른 쿼리는 샤드 전반에 병렬화됩니다. - 컬럼형 스토리지: USING columnar 테이블 접근 방식으로 데이터를 압축하고, 스캔 속도를 높이며, 빠른 프로젝션을 지원하며, 일반 테이블이나 분산 테이블에서 사용할 수 있습니다. 컬럼형 테이블에서는 업데이트, 삭제, 외래 키가 지원되지 않으며 COPY 또는 INSERT..SELECT를 통한 배치 로딩이 권장됩니다. - 모든 노드에서 쿼리: 분산 쿼리는 클러스터의 모든 노드에서 실행할 수 있으며, 스키마 변경과 클러스터 관리는 여전히 코디네이터를 통해 이루어집니다. - 스키마 기반 샤딩(Citus 12.0 이후): 각 스키마가 논리적 샤드 역할을 하는 공유 데이터베이스, 별도 스키마 모델로, 쿼리 변경 없이 멀티테넌트 앱과 마이크로서비스에 유용합니다. - create_distributed_table_concurrently: 읽기와 쓰기를 차단하지 않고 기존 테이블을 분산 테이블로 변환합니다. - 동일 위치 배치: 분산 컬럼을 공유하는 분산 테이블을 동일 위치에 배치하여 효율적인 분산 조인, 외래 키, INSERT..SELECT, 저장 프로시저, 분산 트랜잭션을 가능하게 합니다. 배포 옵션으로는 Azure 관리형 서비스(Azure Database for PostgreSQL Flexible Server의 Elastic Clusters), Docker 이미지(citusdata/citus), Ubuntu/Debian 및 Red Hat용 로컬 패키지가 있습니다. 멀티노드 클러스터는 워커 노드를 추가하고 샤드를 재조정하여 구축합니다. 고가용성은 일급 Citus 지원을 갖춘 Patroni 3.0을 통해 지원됩니다. README는 Citus를 단일 PostgreSQL 노드의 한계를 넘어서는 애플리케이션과 멀티테넌트 SaaS, 실시간 분석 대시보드, 시계열 및 IoT 데이터와 같이 PostgreSQL 기능을 대규모로 필요로 하는 워크로드를 위한 솔루션으로 소개합니다. 자세한 내용은 문서, 사용 사례 가이드, SIGMOD '21 논문이 참조되어 있습니다.