다음을 통해 공유


분할 모델

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

분할은 데이터베이스 시스템과 분산 컴퓨팅에서 여러 서버나 노드에 데이터를 수평으로 분할하는 데 사용되는 기술입니다. 여기에는 대규모 데이터베이스나 데이터 세트를 분할이라고 하는 더 작고 관리하기 쉬운 부분으로 나누는 작업이 포함됩니다. 분할에는 데이터의 하위 집합이 포함되어 있으며 분할이 함께 전체 데이터 세트를 형성합니다.

Azure Cosmos DB for PostgreSQL은 행 기반과 스키마 기반이라는 두 가지 형식의 데이터 분할을 제공합니다. 각 옵션에는 고유한 분할 장단점이 있으므로 애플리케이션 요구 사항에 가장 적합한 방식을 선택할 수 있습니다.

행 기반 분할

Azure Cosmos DB for PostgreSQL 분할 테이블이 단일 데이터베이스인 공유 스키마 모델인 행 기반 분할이라고도 하는 기존 방식에서는 테넌트가 동일한 테이블 내의 행으로 공존합니다. 테넌트는 테이블을 수평으로 분할할 수 있는 배포 열을 정의하여 결정됩니다.

행 기반은 가장 하드웨어 효율적인 분할 방법입니다. 테넌트는 클러스터의 노드 간에 조밀하게 구성되어 분산됩니다. 그러나 이 방식을 사용하려면 스키마의 모든 테이블에 배포 열이 있고 애플리케이션의 모든 쿼리가 이를 기준으로 필터링되는지 확인해야 합니다. 행 기반 분할은 IoT 워크로드와 하드웨어 사용에서 최고의 이익을 달성하는 데 효과적입니다.

혜택:

  • 최고 성능
  • 노드당 최고의 테넌트 밀도

단점:

  • 스키마 수정 필요
  • 애플리케이션 쿼리 수정 필요
  • 모든 테넌트는 동일한 스키마를 공유해야 합니다.

스키마 기반 분할

Azure Cosmos DB for PostgreSQL의 Citus 12.0에서 사용할 수 있는 스키마 기반 분할은 공유 데이터베이스, 별도의 스키마 모델이며 스키마는 데이터베이스 내의 논리적 분할이 됩니다. 다중 테넌트 앱은 테넌트별 스키마를 사용하여 테넌트 차원에 따라 쉽게 분할할 수 있습니다. 쿼리 변경은 필요하지 않으며 테넌트를 전환할 때 적절한 search_path를 설정하려면 애플리케이션에 약간의 수정만 필요합니다. 스키마 기반 분할은 마이크로 서비스 및 온보딩 행 기반 분할에 필요한 변경 내용을 겪을 수 없는 애플리케이션을 배포하는 ISV에 이상적인 솔루션입니다.

혜택:

  • 테넌트는 이기종 스키마를 가질 수 있습니다.
  • 스키마 수정이 필요하지 않습니다.
  • 애플리케이션 쿼리 수정이 필요하지 않습니다.
  • 스키마 기반 분할 SQL 호환성은 행 기반 분할에 비해 우수합니다.

단점:

  • 행 기반 분할에 비해 노드당 테넌트 수가 적습니다.

분할 장단점

스키마 기반 분할 행 기반 분할
다중 테넌트 모델 테넌트당 별도의 스키마 테넌트 ID 열이 있는 공유 테이블
Citus 버전 12.0+ 모든 버전
Vanilla PostgreSQL과 비교한 추가 단계 없음, 구성만 변경됨 각 테이블에서 create_distributed_table을 사용하여 테넌트 ID별로 테이블을 배포하고 배치합니다.
테넌트의 수 1-10k 1-1 M+
데이터 모델링 요구 사항 분산 스키마 전체에 외래 키가 없음 각 테이블에 테넌트 ID 열(분산 열, 분할 키라고도 함)을 포함하고 기본 키, 외래 키에 포함해야 함
단일 노드 쿼리에 대한 SQL 요구 사항 쿼리당 단일 분산 스키마 사용 조인 및 WHERE 절에는tenant_id 열이 포함되어야 합니다.
병렬 테넌트 간 쿼리
테넌트별 사용자 지정 테이블 정의 아니요
액세스 제어 스키마 권한 스키마 권한
테넌트 간 데이터 공유 예, 참조 테이블을 사용합니다(별도의 스키마에서). 예, 참조 테이블을 사용합니다.
분할 격리에 대한 테넌트 모든 테넌트는 정의에 따라 자체 분할 그룹을 갖습니다. isolate_tenant_to_new_shard를 통해 특정 테넌트 ID에 자체 분할 그룹을 제공할 수 있습니다.