Microsoft Dataverse에서 데이터 스트리밍

Datastream은 Microsoft Dataverse 인스턴스에서 변경 이벤트 복제를 지원합니다. Dataverse는 비즈니스 애플리케이션에서 사용하는 데이터를 안전하게 저장하고 관리할 수 있는 클라우드 기반 데이터 플랫폼입니다.

이 페이지에는 다음 정보가 포함되어 있습니다.

  • Dataverse에서 복제할 때 이해해야 하는 주요 용어
  • 소스 Dataverse 환경에서 가져오는 데이터가 Datastream에서 처리되는 방법
  • Datastream에서 지원되는 Dataverse 버전
  • Dataverse를 소스로 사용할 경우의 알려진 제한사항

핵심 용어

Dataverse는 다음 개념을 사용하여 작동합니다.

  • 이전에는 항목이었던 테이블은 관계형 데이터베이스의 테이블과 유사합니다. Dataverse에는 기본적으로 표준 테이블이 포함되어 있지만 커스텀 테이블을 만들 수도 있습니다.
  • 이전에는 필드였던 은 테이블의 속성이며 관계형 데이터베이스의 열과 유사합니다.
  • 은 테이블의 특정 레코드이며 관계형 데이터베이스의 행과 유사합니다.

행동

Datastream의 Dataverse 소스 지원은 Open Data Protocol (OData)을 사용하는 Dataverse Web API를 기반으로 합니다. Datastream은 설정한 간격을 기준으로 소스 변경사항을 폴링합니다.

Dataverse 소스에서 데이터를 복제할 때 다음과 같은 동작이 관찰됩니다.

  • API 상호작용: Datastream은 RESTful 요청을 사용하여 Dataverse Web API와 상호작용합니다. 기본 환경 URL은 https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/입니다. 표준 헤더 (Accept: application/json, OData-MaxVersion: 4.0, OData-Version: 4.0)가 사용됩니다.
  • 인증: Datastream은 클라이언트 사용자 인증 정보 부여 유형으로 OAuth 2.0을 사용하여 인증을 처리합니다. Datastream은 Microsoft Identity Platform에서 토큰을 가져옵니다.
  • 스키마 검색: Dataverse 스키마는 동적입니다. Datastream은 /EntityDefinitions 엔드포인트를 쿼리하여 객체 이름과 스키마를 검색합니다.

    • 객체 이름: Datastream은 $filter=TableType ne 'Virtual' and IsPrivate eq false 필터와 $select=EntitySetName 매개변수를 사용하여 /EntityDefinitions 항목 집합 경로에 GET 요청을 전송하여 객체 이름을 가져옵니다.
    • 객체 스키마: Datastream은 GET 요청을 /EntityDefinitions 항목 집합 경로에 전송하여 항목별 객체 스키마를 가져옵니다. 매개변수는 $expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName)이고 필터는 $filter=EntitySetName eq '[objectName]'입니다.
  • 데이터 복제:

    • Datastream은 표준 및 커스텀 Dataverse 테이블을 복제합니다. 가상 테이블과 비공개 테이블은 제외됩니다.
    • 이전 백필: 스트림에 대해 구성된 경우 Datastream 은 포함된 테이블의 모든 이전 데이터를 복제합니다. 이는 항목 집합에 초기 GET 요청을 전송하고 API 응답에 제공된 @odata.nextLink 속성을 사용하여 모든 페이지를 반복함으로써 이루어집니다. Prefer: odata.maxpagesize=5000 헤더가 사용됩니다.
    • 증분 동기화: Datastream은 삽입 및 업데이트 이벤트를 복제합니다. 이는 타임스탬프 기반 동기화를 사용하고, modifiedon 필드가 마지막 동기화 시간 ($filter=modifiedon gt [last_sync_timestamp])보다 큰 레코드를 필터링하여 이루어집니다. Datastream은 삭제 이벤트를 캡처하지 않습니다.
  • 폴링 간격: Datastream은 스트림을 만들 때 설정한 폴링 간격에 따라 변경사항을 폴링합니다. 간격은 스트림의 데이터 기록 빈도 측정항목에 반영됩니다.

복제된 모든 객체는 modifiedon 필드를 사용하는 증분 동기화와 전체 백필을 모두 지원합니다.

버전

Datastream은 Dataverse Web API 버전 v9.1을 사용합니다.

알려진 제한사항

Dataverse를 소스로 사용할 경우의 알려진 제한사항은 다음과 같습니다.

  • modifiedon 타임스탬프를 기반으로 하는 증분 동기화 메서드는 삭제 이벤트를 캡처하지 않습니다.
  • Datastream은 델타 링크 (@odata.deltaLink)를 사용하는 Dataverse 권장 변경사항 추적 기능을 지원하지 않습니다. 이는 후속 증분 가져오기에 필요한 델타 링크 URL 저장이 지원되지 않기 때문입니다.
  • 복제는 표준 테이블과 커스텀 테이블로 제한됩니다. 가상 테이블과 비공개 테이블은 지원되지 않습니다.
  • 증분 동기화가 예상대로 작동하도록 하려면 소스 테이블에서 modifiedon 필드를 정확하게 업데이트하는 것이 중요합니다.
  • Picklist 필드의 라벨을 가져오려면 데이터 요청에 정수 값뿐만 아니라 Prefer: data.include-annotations="*" 헤더도 포함해야 합니다.

다음 단계

  • Datastream에 사용할 Dataverse 소스 구성 방법 알아보기