다음을 통해 공유


PostgreSQL 커넥터 제한 사항

중요합니다

Lakeflow Connect용 PostgreSQL 커넥터는 공개 미리 보기로 제공됩니다. 공개 미리 보기에 등록하려면 Databricks 계정 팀에 문의하세요.

이 페이지에는 Databricks Lakeflow Connect를 사용한 PostgreSQL 수집에 대한 제한 사항 및 고려 사항이 나열되어 있습니다.

일반 데이터베이스 커넥터 제한 사항

이 섹션의 제한 사항은 Lakeflow Connect의 모든 데이터베이스 커넥터에 적용됩니다. 커넥터 관련 제한 사항을 계속 읽어 보세요.

  • 예약된 파이프라인을 실행하면 경고가 즉시 트리거되지 않습니다. 대신 다음 업데이트가 실행되면 트리거됩니다.
  • 원본 테이블이 삭제되면 대상 테이블이 자동으로 삭제되지 않습니다. 대상 테이블을 수동으로 삭제해야 합니다. 이 동작은 Lakeflow Spark 선언적 파이프라인 동작과 일치하지 않습니다.
  • 원본 유지 관리 기간 동안 Databricks가 데이터에 액세스하지 못할 수 있습니다.
  • 원본 테이블 이름이 기존 대상 테이블 이름과 충돌하는 경우 파이프라인 업데이트가 실패합니다.
  • 다중 목적지 파이프라인 지원은 API 전용입니다.
  • 옵션으로 수집하는 테이블의 이름을 변경할 수 있습니다. 파이프라인에서 테이블의 이름을 변경하면, 해당 파이프라인은 API 전용 파이프라인이 되며 UI에서 더 이상 파이프라인을 편집할 수 없습니다.
  • 파이프라인이 이미 시작된 후에 열을 선택하면, 커넥터는 새 열에 대한 데이터를 자동으로 백필하지 않습니다. 역사적 데이터를 수집하려면 테이블에서 전체 새로 고침을 수동으로 실행하세요.
  • Databricks는 다른 원본 스키마에서 온 경우에도 동일한 파이프라인에서 동일한 이름의 테이블을 둘 이상 수집할 수 없습니다.
  • 원본 시스템은 커서 열이 단조로 증가한다고 가정합니다.
  • 관리되는 수집 파이프라인은 Azure GovCloud 지역의 작업 영역에 대해 지원되지 않습니다.
  • SCD 유형 1을 사용하도록 설정하면 삭제는 변경 데이터 피드에서 명시적 delete 이벤트를 생성하지 않습니다. 감사 가능한 삭제의 경우 커넥터에서 지원하는 경우 SCD 형식 2를 사용합니다. 자세한 내용은 예제: CDF 원본 데이터를 사용한 SCD 형식 1 및 SCD 형식 2 처리를 참조하세요.
  • 커넥터는 변환 없이 원시 데이터를 수집합니다. 변환을 위해 Lakeflow Spark의 다운스트림 선언적 파이프라인을 사용합니다.
  • 커넥터는 기본 PostgreSQL 인스턴스에서만 복제를 지원합니다.

Authentication

  • 커넥터는 사용자 이름 및 암호 인증만 지원합니다.

데이터베이스 변형

  • 커넥터는 PostgreSQL 13 이상을 지원합니다.
  • 커넥터는 AWS RDS PostgreSQL, Aurora PostgreSQL, Amazon EC2, Azure Database for PostgreSQL, Azure Virtual Machines 및 GCP Cloud SQL for PostgreSQL을 지원합니다. 또한 커넥터는 Azure ExpressRoute, AWS Direct Connect 및 VPN 네트워킹을 사용하여 온-프레미스 PostgreSQL을 지원합니다.

파이프라인

  • 각 수집 파이프라인은 정확히 하나의 수집 게이트웨이와 연결되어야 합니다.
  • 수집 파이프라인은 서버리스 컴퓨팅에서 실행되지만 수집 게이트웨이는 클래식 컴퓨팅에서 실행되어야 합니다.
  • 수집 게이트웨이는 Write-Ahead Log(WAL) bloat 및 복제 슬롯 누적을 방지하기 위해 지속 모드로 실행되어야 합니다.

복제

  • 논리 복제를 수행하려면 PostgreSQL 13 이상이 필요하며, wal_level 매개 변수를 logical로 설정해야 합니다.
  • 복제하는 각 테이블에는 복제본 ID가 FULL 또는 DEFAULT로 설정되어야 합니다. Databricks는 기본 키가 없거나 TOASTable 열이 있는 테이블에 '복제본 ID'를 사용하는 것이 좋습니다.
  • 파이프라인을 삭제하면 복제 슬롯이 자동으로 제거되지 않습니다. WAL 누적을 방지하려면 복제 슬롯을 수동으로 정리해야 합니다. 복제 슬롯 정리를 참조하세요.

스키마 진화

커넥터는 새 열과 삭제된 열을 자동으로 처리합니다.

  • 원본에 새 열이 나타나면 Databricks는 다음 파이프라인 실행 시 자동으로 수집합니다.
  • 열이 원본에서 삭제되면 Databricks는 열을 자동으로 삭제하지 않습니다. 대신 커넥터는 테이블 속성을 사용하여 삭제된 열을 inactive 대상에 설정합니다. 나중에 inactive 열과 이름이 충돌하는 다른 열이 나타나면, 파이프라인이 실패합니다. 이 경우 테이블을 완전히 새로 고치거나 비활성 열을 수동으로 삭제합니다.

커넥터는 아래에 언급된 DDL(예: 열 이름 바꾸기)을 처리할 수 있지만 대상 테이블을 완전히 새로 고쳐야 합니다.

DDL의 전체 새로 고침 필요

  • 열의 데이터 형식 변경
  • 열 이름 바꾸기
  • 테이블의 기본 키 변경
  • 테이블을 기록되지 않음에서 로깅됨으로 또는 그 반대로 변환
  • 파티션 추가 또는 제거(분할된 테이블의 경우)

Staging

스테이징 카탈로그는 외부 카탈로그일 수 없습니다.

Tables

  • Databricks는 파이프라인당 250개 이하의 테이블을 수집하여 처리하는 것이 권장됩니다. 그러나 이러한 테이블 내에서 지원되는 행 또는 열의 수는 제한되지 않습니다.
  • Databricks는 이름이 대소문자만 다른 두 개의 테이블 (예: mytableMyTable)을 하나의 파이프라인으로 가져올 수 없습니다. 이러한 경우를 지원하려면 서로 다른 대상 스키마에 게시하는 두 개의 게이트웨이 수집 파이프라인 쌍을 만듭니다.
  • source_catalog, source_schemasource_table 이름은 데이터베이스 이름에 대/소문자를 구분하지만 스키마 및 테이블 이름에 대해 대/소문자를 구분하지 않습니다(PostgreSQL 기본 동작 다음). 예를 들어, 원본 데이터베이스가 MyDatabase라는 이름일 경우, MyDatabase에서 ingestion_definition으로 지정해야 합니다.
  • 하나의 파이프라인에서 여러 원본 데이터베이스 또는 스키마에서 수집할 수 있지만 동일한 이름의 두 테이블을 수집할 수는 없습니다. 예를 들어 동일한 파이프라인에서 schema1.ordersschema2.orders를 둘 다 처리할 수 없습니다.
  • objects의 필드에 ingestion_definition 여러 테이블 또는 스키마 사양을 포함할 수 있습니다. 그러나 다른 원본 스키마의 원본 테이블 이름은 겹칠 수 없습니다. 이름이 겹치면 수집 파이프라인 오류가 발생합니다.

데이터 형식

  • 사용자 정의 형식 및 타사 확장 형식은 문자열로 수집됩니다.
  • TIMETIMETZ 데이터 형식은 문자열로 수집됩니다.
  • 자동 데이터 변환 테이블에 나열되지 않은 PostgreSQL 기본 제공 데이터 형식은 문자열로 수집됩니다.
  • 숫자 데이터 형식의 경우: NaN이 null로 변환됩니다.
  • 날짜 및 타임스탬프의 경우: 9999AD 이후의 BC 날짜 또는 날짜는 지원되지 않습니다.
  • 무한대는 날짜, 타임스탬프 또는 간격에 대해 지원되지 않습니다.

분할된 테이블

  • PostgreSQL 분할 테이블이 지원됩니다.
  • 각 파티션은 복제를 위해 별도의 테이블로 처리됩니다.
  • 파티션을 추가하거나 제거하려면 테이블을 완전히 새로 고쳐야 합니다.

특정 PostgreSQL 변형에 대한 제한 사항

아마존 RDS 및 오로라

  • 매개 변수를 rds.logical_replication1로 설정해야 합니다.

PostgreSQL용 Azure 데이터베이스

  • 서버 매개 변수에서 논리 복제를 사용하도록 설정해야 합니다.
  • 단일 서버 배포의 경우 논리 복제는 범용 및 메모리 최적화 계층에서만 사용할 수 있습니다.
  • 유연한 서버 배포의 경우 모든 계층에서 논리 복제가 지원됩니다.
  • max_wal_slot_keep_size parameter 은 읽기 전용이며, -1(무한)에 고정되어 있으며 구성할 수 없습니다.

PostgreSQL용 Google Cloud SQL

  • 플래그를 cloudsql.logical_decoding 사용하도록 설정해야 합니다.
  • 클라우드 SQL은 max_wal_slot_keep_size 구성할 수 없습니다. 기본적으로 -1(무한)로 고정됩니다.