Eventstream에 PostgreSQL 데이터베이스 CDC 원본 추가

이 문서에서는 PostgreSQL 데이터베이스 CDC(변경 데이터 캡처) 원본을 Eventstream에 추가하는 방법을 보여줍니다.

CDC(변경 데이터 캡처)를 사용하면 폴링 없이 데이터베이스 변경 내용(삽입, 업데이트 및 삭제)을 실시간으로 스트리밍할 수 있습니다. PostgreSQL을 CDC 원본으로 연결하면 실시간 분석 파이프라인을 빌드하고 다운스트림 시스템을 원본 데이터와 동기화된 상태로 유지할 수 있습니다.

Microsoft Fabric 이벤트 스트림에 대한 POSTgreSQL CDC(데이터베이스 변경 데이터 캡처) 원본 커넥터를 사용하면 PostgreSQL 데이터베이스에서 현재 데이터의 스냅샷을 캡처할 수 있습니다. 현재 PostgreSQL CDC(데이터베이스 변경 데이터 캡처)는 데이터베이스에 공개적으로 액세스할 수 있는 다음 서비스에서 지원됩니다.

  • PostgreSQL용 Azure 데이터베이스
  • PostgreSQL용 Amazon RDS
  • Amazon Aurora PostgreSQL
  • PostgreSQL용 Google Cloud SQL

PostgreSQL 데이터베이스 CDC 원본이 이벤트 스트림에 추가되면 지정된 테이블에 대한 행 수준 변경 내용을 캡처합니다. 그런 다음 이러한 변경 내용을 실시간으로 처리하고 추가 분석을 위해 다른 대상으로 보낼 수 있습니다.

비고

DeltaFlow(미리 보기)를 사용하면 원시 Debezium CDC 이벤트를 원본 테이블 구조를 미러링하는 분석 준비 스트림으로 변환할 수 있습니다. DeltaFlow는 스키마 등록, 대상 테이블 관리 및 스키마 진화 처리를 자동화합니다. DeltaFlow를 사용하려면 스키마 처리 단계 중에 분석 준비 이벤트 및 자동으로 업데이트된 스키마 를 선택합니다.

필수 조건

PostgreSQL 데이터베이스에서 CDC 사용

이 섹션에서는 예제로 Azure Database for PostgreSQL 사용합니다.

Azure Database for PostgreSQL 유연한 서버 CDC를 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. Azure 포털의 Azure Database for PostgreSQL 유연한 서버 페이지에서 탐색 메뉴에서 Server 매개 변수를 선택합니다.

  2. 서버 매개 변수 페이지에서 다음을 수행합니다.

    • wal_levellogical로 설정합니다.
    • max_worker_processes16 이상으로 업데이트합니다.

    유연한 서버 배포에 CDC를 사용하는 스크린샷.

  3. 변경 내용을 저장하고 서버를 다시 시작합니다.

  4. Azure Database for PostgreSQL 유연한 서버 인스턴스가 공용 네트워크 트래픽을 허용하는지 확인합니다.

  5. 다음 SQL 문을 실행하여 관리 사용자 복제 권한을 부여합니다. 다른 사용자 계정을 사용하여 PostgreSQL 데이터베이스(DB)를 연결하여 CDC를 가져오려면 사용자가 테이블 소유자인지 확인합니다.

    ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
    

데이터 원본 선택 마법사 시작

아직 Eventstream에 원본을 추가하지 않은 경우 데이터 원본 연결 타일을 선택합니다. 리본에서 원본>연결 데이터 원본 추가를 선택할 수도 있습니다.

외부 원본을 사용하기 위한 타일의 선택을 보여 주는 스크린샷.

이미 게시된 이벤트 스트림에 원본을 추가하는 경우 편집 모드로 전환합니다. 리본에서 원본 추가>연결 데이터 원본을 선택합니다.

외부 원본을 추가하기 위한 선택 항목을 보여 주는 스크린샷

데이터 원본 선택 페이지에서 PostgreSQL DB(CDC) 타일에 있는 Connect를 검색하고 선택합니다.

 이벤트 가져오기 마법사에서 CDC(Azure Database)를 원본 유형으로 선택하는 것을 보여 주는 스크린샷입니다.

PostgreSQL 데이터베이스 CDC 구성 및 연결

CDC를 통해 자동 테이블 스키마 등록을 사용하여 PostgreSQL 데이터베이스에서 Eventstream으로 변경 데이터를 수집합니다.

비고

DeltaFlow(미리 보기): 스키마 처리 단계에서 분석 준비 이벤트 및 자동 업데이트된 스키마 를 선택하면 DeltaFlow는 원시 Debezium CDC 이벤트를 원본 테이블 구조를 미러링하는 분석 지원 스트림으로 변환합니다. DeltaFlow는 대상 테이블 만들기 및 스키마 진화 처리도 자동화합니다.

  1. 연결 페이지에서 새 연결을 선택합니다.

    새 연결 링크가 강조 표시된 PostgreSQL 데이터베이스의 연결 페이지를 보여 주는 스크린샷

  2. 연결 설정 섹션에서 다음 정보를 입력합니다.

    • 서버: PostgreSQL 데이터베이스의 서버 주소(예: my-pgsql-server.postgres.database.azure.com).

    • 데이터베이스: 데이터베이스 이름(예: my_database).

      PostgreSQL 데이터베이스 커넥터의 연결 설정 섹션을 보여 주는 스크린샷

    • 연결 이름: 연결의 이름을 입력합니다.

    • 인증 종류, 기본 을 선택하고 데이터베이스의 사용자 이름암호를 입력합니다.

      비고

      현재 Fabric 이벤트 스트림은 Basic 인증만 지원합니다.

    • 연결을 선택하여 연결 설정을 완료합니다. PostgreSQL 데이터베이스 커넥터의 연결 자격 증명 섹션을 보여 주는 스크린샷

  3. 포트: 서버의 포트 번호를 입력합니다. 기본값은 5432입니다. 선택한 클라우드 연결이 연결 관리 및 게이트웨이에서 구성된 경우, 포트 번호가 거기에 설정된 것과 일치하는지 확인하세요. 일치하지 않는 경우 연결 및 게이트웨이 관리에서 클라우드 연결의 포트 번호가 우선적으로.

  4. 데이터베이스 테이블에서 변경 내용을 캡처할 때 다음 두 가지 옵션 중에서 선택할 수 있습니다.

    • 모든 테이블: 데이터베이스의 모든 테이블에서 변경 내용을 캡처합니다.
    • 테이블 이름 입력: 쉼표로 구분된 목록을 사용하여 테이블의 하위 집합을 지정할 수 있습니다. 형식 schemaName.tableName 의 전체 테이블 식별자 또는 유효한 정규식을 사용할 수 있습니다. 예제:
    • dbo.test.*: test 스키마에서 이름이 dbo으로 시작하는 모든 테이블을 선택합니다.
    • dbo\.(test1|test2): 선택 dbo.test1dbo.test2.

    목록에서 두 형식을 결합할 수 있습니다. 전체 항목의 총 문자 제한은 102,400 자입니다.

  5. 슬롯 이름(선택 사항): 특정 데이터베이스/스키마의 특정 플러그 인에서 변경 내용을 스트리밍하기 위해 만든 PostgreSQL 논리 디코딩 슬롯의 이름을 입력합니다. 서버는 이 슬롯을 사용하여 Eventstream 스트리밍 커넥터로 이벤트를 스트리밍합니다. 소문자, 숫자 및 밑줄만 포함해야 합니다.

    • 지정하지 않으면 적절한 데이터베이스 권한이 필요한 슬롯을 만드는 데 GUID가 사용됩니다.
    • 지정된 슬롯 이름이 있는 경우 커넥터는 이를 직접 사용합니다.
  6. 고급 설정을 확장하여 PostgreSQL 데이터베이스 CDC 원본에 대한 추가 구성 옵션에 액세스합니다.

    • 게시 이름: 사용할 PostgreSQL 논리 복제 게시의 이름을 지정합니다. 이 값은 데이터베이스의 기존 게시와 일치해야 하며 자동 생성 모드에 따라 자동으로 만들어집니다. 기본값은 dbz_publication입니다.

      비고

      커넥터 사용자에게 게시를 만들 수 있는 슈퍼 사용자 권한이 있어야 합니다. 사용 권한 관련 문제를 방지하려면 커넥터를 처음 시작하기 전에 게시를 수동으로 만드는 것이 좋습니다.

    • 게시 자동 만들기 모드: 게시가 자동으로 만들어지는지 여부와 방법을 제어합니다. 옵션은 다음과 같습니다.

      • Filtered (기본값): 지정된 게시가 없으면 커넥터는 선택한 테이블만 포함하는 테이블을 만듭니다(테이블 포함 목록에 지정된 대로).
      • AllTables: 지정된 게시물이 있는 경우 커넥터는 그것을 사용합니다. 존재하지 않는 경우 커넥터는 데이터베이스의 모든 테이블을 포함하는 테이블을 만듭니다.
      • Disabled: 커넥터가 게시물을 만들지 않습니다. 지정한 게시물이 없으면 커넥터가 예외를 발생시키고 중지합니다. 이 경우 데이터베이스에서 게시를 수동으로 만들어야 합니다.

      자세한 내용은 게시 자동 생성 모드에 대한 Debezium 설명서를 참조하세요.

    • 10진수 처리 모드: 커넥터가 PostgreSQL DECIMALNUMERIC 열 값을 처리하는 방법을 지정합니다.

      • Precise: 정확한 10진수 형식(예: Java BigDecimal)을 사용하여 데이터 표현의 전체 정밀도 및 정확도를 보장하는 값을 나타냅니다.
      • Double: 값을 배정밀도 부동 소수점 숫자로 변환합니다. 이 옵션은 유용성 및 성능을 향상하지만 정밀도가 손실될 수 있습니다.
      • String: 값을 형식이 지정된 문자열로 인코딩합니다. 이 옵션을 사용하면 다운스트림 시스템에서 쉽게 사용할 수 있지만 원래 숫자 형식에 대한 의미 체계 정보가 손실됩니다.
    • 스냅샷 모드: 커넥터가 시작될 때 스냅샷을 수행하기 위한 조건을 지정합니다.

      • Initial: 커넥터는 논리 서버 이름에 대한 오프셋이 기록되지 않거나 이전 스냅샷이 완료되지 않은 것을 감지하는 경우에만 스냅샷을 실행합니다. 스냅샷이 완료되면 커넥터는 후속 데이터베이스 변경에 대한 이벤트 레코드를 스트리밍하기 시작합니다.
      • InitialOnly: 커넥터는 논리 서버 이름에 대한 오프셋이 기록되지 않은 경우에만 스냅샷을 실행합니다. 스냅샷이 완료되면 커넥터가 중지됩니다. Binlog에서 변경 이벤트를 읽기 위해 스트리밍으로 전환되지 않습니다.
      • NoData: 커넥터는 스키마만 캡처하지만 테이블 데이터는 캡처하지 않는 스냅샷을 실행합니다. 데이터의 일관된 스냅샷이 필요하지 않지만 커넥터가 시작된 후에 변경 내용만 필요한 경우 이 옵션을 설정합니다.
    • 하트비트 작업 쿼리: 커넥터가 하트비트 메시지를 보낼 때 커넥터가 원본 데이터베이스에서 실행되는 쿼리를 지정합니다.

    • 스냅샷 선택 문 재정의: 스냅샷에 포함할 테이블 행을 지정합니다. 스냅샷이 테이블에 행의 하위 집합만 포함하도록 하려면 이 속성을 사용합니다. 이 속성은 스냅샷에만 영향을 줍니다. 커넥터가 로그에서 읽는 이벤트에는 적용되지 않습니다.

스트림 또는 원본 세부 정보

  1. 연결 페이지에서 Eventstream 또는 Real-Time 허브를 사용하는지 여부에 따라 다음 단계 중 하나를 수행합니다.

    • Eventstream:

      오른쪽의 원본 세부 정보 창에서 다음 단계를 수행합니다.

      1. 원본 이름의 경우 연필 단추를 선택하여 이름을 변경합니다.

      2. Eventstream 이름스트림 이름은 읽기 전용입니다.

    • Real-Time 허브:

      오른쪽의 스트림 세부 정보 섹션에서 다음 단계를 수행합니다.

      1. eventstream을 만들 Fabric 작업 영역 선택합니다.

      2. Eventstream 이름의 경우 연필 단추를 선택하고 eventstream의 이름을 입력합니다.

      3. Stream 이름 값은 이벤트 스트림의 이름에 -stream을 추가하여 자동으로 생성됩니다. 이 스트림은 마법사가 완료되면 실시간 허브의 모든 데이터 스트림 페이지에 표시됩니다.

  2. 구성 페이지의 맨 아래에서 다음을 선택합니다.

검토 및 연결

검토 + 연결 화면에서 요약을 검토하고 추가(Eventstream) 또는 연결(Real-Time 허브)을 선택합니다.

스키마 처리 페이지

  1. 스키마 처리 단계에서 다음 옵션 중 하나를 선택합니다.

    • 분석 준비 이벤트 및 자동 업데이트된 스키마(DeltaFlow 미리 보기): 커넥터는 원시 CDC 이벤트를 원본 테이블 구조를 미러링하는 분석 지원 스트림으로 변환합니다. DeltaFlow는 변경 유형(삽입, 업데이트 또는 삭제) 및 타임스탬프와 같은 메타데이터를 사용하여 이벤트를 보강하고 대상 테이블 및 스키마 진화를 자동으로 관리합니다.
    • 원시 CDC 이벤트: 커넥터는 원시 CDC 이벤트를 수집하고 사용할 수 있도록 합니다. 필요에 따라 커넥터는 테이블 스키마를 자동으로 검색하고 스키마 레지스트리에 등록할 수 있습니다. DeltaFlow 변환 없이 스키마 인식을 원하는 경우 이 옵션을 사용합니다.

    비고

    다음 스크린샷은 Azure SQL Database CDC를 보여줍니다. 스키마 처리 옵션은 지원되는 모든 CDC 원본 커넥터에 대해 동일합니다.

    CDC 원본 커넥터에 대한 DeltaFlow 및 원시 CDC 이벤트 옵션이 있는 스키마 처리 단계를 보여 주는 스크린샷.

  2. 이벤트 스키마 연결을 사용하도록 설정합니다.

  3. Workspace 스키마 집합에 대한 Fabric 작업 영역을 선택합니다.

  4. 스키마 집합의 경우 + 만들기가 기본적으로 선택되어 새 스키마 집합을 만듭니다. 기존 이벤트 스키마 집합을 선택하도록 변경할 수 있습니다.

  5. 이전 단계에서 + 만들기 옵션을 선택한 경우 스키마 집합의 이름을 입력합니다.

  6. 검토 + 연결 페이지에서 요약을 검토한 다음 추가(Eventstream) 또는 연결(Real-Time 허브)을 선택합니다.

    확장 기능이 있는 PostgreSQL 데이터베이스 커넥터에 대한 검토 및 만들기 페이지를 보여 주는 스크린샷

    PostgreSQL 데이터베이스의 모든 테이블 또는 선택한 테이블의 경우 커넥터는 스키마를 자동으로 검색하고 만들고 스키마 레지스트리에 등록합니다.

DeltaFlow: 분석 준비 이벤트 변환(미리 보기)

분석 준비 이벤트 및 자동 업데이트 스키마(DeltaFlow)를 사용하도록 설정하면 커넥터는 다음 기능을 제공합니다.

  • 분석 준비 이벤트 셰이프: 원시 Debezium CDC 이벤트는 원본 테이블 구조를 미러링하는 테이블 형식으로 변환됩니다. 이벤트는 변경 형식(insertupdate또는delete) 및 이벤트 타임스탬프를 포함한 메타데이터 열로 보강됩니다.
  • 자동 대상 테이블 관리: DeltaFlow 지원 스트림을 eventhouse와 같은 지원되는 대상으로 라우팅하면 대상 테이블이 원본 테이블 스키마와 일치하도록 자동으로 만들어집니다. 대상 테이블을 수동으로 만들거나 구성할 필요가 없습니다.
  • 스키마 진화 처리: 원본 데이터베이스 테이블이 변경되면(예: 새 열이 추가되거나 테이블이 생성됨) DeltaFlow는 변경 내용을 자동으로 검색하고, 등록된 스키마를 업데이트하고, 그에 따라 대상 테이블을 조정합니다. 이 동작은 스키마 변경으로 인한 수동 개입을 최소화합니다.

비고

DeltaFlow(미리 보기)는 현재 Azure SQL Database CDC, Azure SQL Managed Instance CDC, 가상 머신 CDC의 SQL Server 및 PostgreSQL CDC 원본 커넥터에서 지원됩니다.

DeltaFlow가 작업 유형 및 메타데이터 열을 포함하여 원시 CDC 이벤트를 분석 준비 출력으로 변환하는 방법에 대한 자세한 내용은 DeltaFlow 출력 변환을 참조하세요.

업데이트된 eventstream 보기

  1. PostgreSQL 데이터베이스 CDC 원본은 편집 모드에서 이벤트 스트림에 나타납니다.

    확장 기능이 있는 편집 보기의 PostgreSQL DB CDC 원본 스크린샷.

  2. 새로 추가된 이 PostgreSQL DB CDC 원본을 구현하려면 게시를 선택합니다. 이러한 단계를 완료하면 PostgreSQL DB CDC 원본을 라이브 뷰에서 시각화할 수 있습니다.

    확장된 기능이 있는 라이브 보기의 PostgreSQL DB CDC 원본 스크린샷.

스키마를 사용하도록 Eventstream 대상 구성

현재 Eventstream에 연결된 스키마가 있는 경우, Eventhouse, 사용자 지정 엔드포인트, 파생 스트림 위치만 지원됩니다. 이 섹션에서는 확장 기능(예: 스키마 지원)이 Eventstream에 사용하도록 설정된 경우 Eventhouse 대상을 추가하고 구성하는 방법을 보여 줍니다.

비고

지원되는 CDC(변경 데이터 캡처) 원본과 함께 DeltaFlow(미리 보기) 를 사용하면 Eventhouse의 대상 테이블이 자동으로 만들어지고 원본 테이블 구조와 일치하도록 관리됩니다. 대상 테이블 스키마를 수동으로 구성할 필요가 없습니다. 또한 DeltaFlow는 원본 테이블이 변경되면 스키마 진화를 자동으로 처리합니다.

사용자 지정 엔드포인트 대상에 대한 스키마 구성

  1. 이벤트 변환을 선택하거나 대상을 추가한 다음 CustomEndpoint를 선택합니다.

  2. 사용자 지정 엔드포인트 창에서 대상의 이름을 지정합니다.

  3. 입력 스키마의 경우 이벤트에 대한 스키마를 선택합니다. 이벤트 스트림에 대한 스키마 지원을 사용하도록 설정하면 이 상자에서 선택합니다.

사용자 지정 엔드포인트를 구성하기 위한 창을 보여 주는 스크린샷

사용자 지정 엔드포인트 대상을 구성하는 방법에 대한 자세한 단계는 이벤트 스트림에 사용자 지정 엔드포인트 또는 사용자 지정 앱 대상 추가를 참조하세요.

이벤트하우스 대상으로 스키마 구성

  1. 이벤트 변환을 선택하거나 대상을 추가한 다음, Eventhouse를 선택합니다.

  2. Eventhouse 창에서 다음 스키마 관련 설정을 구성합니다.

    1. 입력 스키마의 경우 드롭다운 목록에서 하나 이상의 스키마를 선택합니다.

      입력 스키마가 선택된 Eventhouse 구성 창을 보여 주는 스크린샷

      비고

      Event Hubs 원본을 구성할 때 헤더를 통해 동적 스키마 옵션을 선택한 경우 원본에 대해 여러 스키마를 구성하고 다양한 속성 및 해당 값에 매핑했을 수 있습니다.

    2. 테이블 만들기 방법의 경우 요구 사항에 따라 모든 스키마가 결합된 단일 테이블 또는 각 스키마에 대한 별도의 테이블을 선택합니다.

      테이블 생성 메서드가 있는 eventhouse 구성 창을 보여 주는 스크린샷

    3. 데이터 쓰기를 위해 다음 옵션 중 하나를 선택합니다.

      • 페이로드만: 추출한 페이로드 데이터를 테이블에 기록합니다. 여러 입력 스키마가 있는 경우 데이터는 여러 테이블로 전송됩니다.
      • 메타데이터 및 페이로드: 메타데이터 및 페이로드 데이터를 단일 테이블에 씁니다. 예제 열에는 source , subject, typedata.

      데이터 쓰기 옵션이 있는 Eventhouse 구성 창을 보여 주는 스크린샷

Eventhouse 대상을 구성하는 방법에 대한 자세한 단계는 이벤트 스트림에 이벤트 하우스 대상 추가를 참조하세요.

DeltaFlow 분석 준비 출력 보기(미리 보기)

Analytics 준비 이벤트 및 자동 업데이트 스키마(DeltaFlow)를 사용하도록 설정한 경우 대상 테이블은 원본 데이터베이스 테이블을 미러링하는 셰이프에 자동으로 만들어집니다. 각 테이블에는 변경 형식 및 타임스탬프에 대한 메타데이터 열과 함께 원래 열이 포함됩니다.

비고

다음 스크린샷은 Azure SQL Database CDC를 보여줍니다. DeltaFlow 대상 테이블 출력은 지원되는 모든 CDC 원본 커넥터에 대해 동일합니다.

분석 준비 셰이프에서 DeltaFlow에서 만든 Eventhouse 대상 테이블을 보여 주는 스크린샷.

원시 Debezium CDC 페이로드를 구문 분석할 필요 없이 KQL(Kusto Query Language) 또는 기타 분석 도구를 사용하여 이러한 테이블을 쿼리할 수 있습니다.

기타 커넥터: