Azure Cosmos DB용 Azure Synapse Link 구성 및 사용

적용 대상: NoSQL MongoDB Gremlin

Azure Cosmos DB용 Azure Synapse Link는 클라우드 네이티브 HTAP(하이브리드 트랜잭션 및 분석 처리) 기능으로, 이를 통해 Microsoft Azure Cosmos DB의 작동 데이터에 대해 근 실시간 분석을 실행할 수 있습니다. Synapse Link를 통해 Microsoft Azure Cosmos DB와 Azure Synapse Analytics가 긴밀하게 통합됩니다.

Azure Synapse Link는 Azure Cosmos DB SQL API 또는 Azure Cosmos DB API for Mongo DB 계정에 사용할 수 있습니다. 또한 CLI 명령을 통해 활성화되는 Gremlin API용 미리 보기입니다. Azure Cosmos DB용 Azure Synapse Link를 사용하여 분석 쿼리를 실행하려면 다음 단계를 수행합니다.

Azure Cosmos DB용 Azure Synapse Link를 구성하는 방법에 대한 학습 모듈을 확인할 수도 있습니다.

Synapse Link를 사용하는 첫 번째 단계는 Azure Cosmos DB 데이터베이스 계정에 대해 사용하도록 설정하는 것입니다.

참고 항목

Azure Synapse Link에서 고객 관리형 키를 사용하려면 계정에서 Synapse Link를 사용하기 전에 Azure Key Vault 액세스 정책에서 계정의 관리 ID를 구성해야 합니다. 자세한 내용은 Azure Cosmos DB 계정의 관리 ID를 사용하여 고객 관리형 키 구성 문서를 참조하세요.

참고 항목

API for NoSQL 계정에 Full Fidelity Schema를 사용하려는 경우 Azure Portal을 사용하여 Synapse Link를 사용하도록 설정할 수 없습니다. 계정에서 Synapse Link가 사용하도록 설정된 후에는 이 옵션을 변경할 수 없으며 이를 설정하려면 Azure CLI 또는 PowerShell을 사용해야 합니다. 자세한 내용은 분석 저장소 스키마 표현 문서를 확인하세요.

참고 항목

계정 수준에서 Synapse Link 사용하도록 설정하려면 기여자 역할이 필요합니다. 컨테이너 또는 컬렉션에서 Synapse Link 사용하도록 설정하려면 최소한 운영자 역할이 필요합니다.

Azure Portal

  1. Azure Portal에 로그인합니다.

  2. 새 Azure 계정을 만들거나 기존 Azure Cosmos DB 계정을 선택합니다.

  3. Azure Cosmos DB 계정으로 이동하여 왼쪽 창의 통합 아래에서 Azure Synapse Link를 엽니다.

  4. 사용을 선택합니다. 이 프로세스는 완료하는 데 1-5분 정도 걸릴 수 있습니다.

    Screenshot showing how to enable Synapse Link feature.

  5. 이제 계정이 Synapse Link를 사용하도록 설정되었습니다. 다음으로 트랜잭션 저장소에서 분석 저장소로 작업 데이터 복제를 자동으로 시작하도록 분석 저장소 사용 컨테이너를 만드는 방법을 참조하세요.

참고 항목

Synapse Link를 켜도 분석 저장소가 자동으로 켜지지 않습니다. Cosmos DB 계정에서 Synapse Link를 사용하도록 설정하면 컨테이너의 분석 저장소를 통해 Synapse Link를 사용하기 시작합니다.

참고 항목

왼쪽 탐색 메뉴의 통합 섹션에 있는 Power BISynapse Link 창을 사용하여 계정에 Synapse Link를 사용하도록 설정할 수도 있습니다.

명령줄 도구

Azure CLI 또는 PowerShell을 사용하여 Azure Cosmos DB API for NoSQL 또는 MongoDB 계정에서 Synapse Link를 사용하도록 설정합니다.

Azure CLI

만들기 또는 업데이트 작업 모두에 대해 --enable-analytical-storage true를 사용합니다. 또한 표현 스키마 유형을 선택해야 합니다. API for NoSQL 계정의 경우 FullFidelity 또는 WellDefined 값과 함께 --analytical-storage-schema-type을 사용할 수 있습니다. API for MongoDB 계정의 경우 항상 --analytical-storage-schema-type FullFidelity를 사용합니다.

Gremlin API용 Synapse Link가 현재 미리 보기로 제공됩니다. Azure CLI를 사용하여 새 그래프 또는 기존 그래프에서 Synapse Link를 사용하도록 설정할 수 있습니다. 아래 CLI 명령을 사용하여 Gremlin API 계정에 대해 Synapse Link를 사용하도록 설정합니다.

az cosmosdb create --capabilities EnableGremlin --name MyCosmosDBGremlinDatabaseAccount --resource-group MyResourceGroup --enable-analytical-storage true

기존 Gremlin API 계정의 경우 createupdate로 바꿉니다.

PowerShell

만들기 또는 업데이트 작업 모두에 대해 EnableAnalyticalStorage true를 사용합니다. 또한 표현 스키마 유형을 선택해야 합니다. API for NoSQL 계정의 경우 FullFidelity 또는 WellDefined 값과 함께 --analytical-storage-schema-type을 사용할 수 있습니다. API for MongoDB 계정의 경우 항상 -AnalyticalStorageSchemaType FullFidelity를 사용합니다.

Azure Resource Manager 템플릿

Azure Resource Manager 템플릿은 SQL API용 Synapse Link 사용 Azure Cosmos DB 계정을 만듭니다. 이 템플릿은 분석 TTL이 설정된 컨테이너와 수동 또는 자동 크기 조정 처리량을 사용하는 옵션을 통해 한 지역에 Core(SQL) API 계정을 만듭니다. 이 템플릿을 배포하려면 추가 정보 페이지에서 Azure에 배포를 클릭합니다.

컨테이너에 대해 Azure Synapse Link 사용

두 번째 단계는 컨테이너 또는 컬렉션에 대해 Synapse Link를 사용하도록 설정하는 것입니다. 이는 무한 보존을 위해 analytical TTL 속성을 -1로 설정하거나 분석 저장소에 보관하려는 시간(초)인 양의 정수로 설정하여 수행됩니다. 이 설정은 나중에 변경할 수 있습니다. 자세한 내용은 분석 TTL 지원 값 문서를 참조하세요.

기존 SQL API 컨테이너에서 Azure Synapse Link를 사용하도록 설정할 때 다음 세부 정보에 유의하세요.

  • 분석 저장소 자동 동기화 프로세스의 동일한 성능 격리는 초기 동기화에 적용되며 OLTP 워크로드에 성능에 영향을 미치지 않습니다.
  • 분석 저장소와의 컨테이너 초기 동기화 총 시간은 데이터 볼륨 및 문서 복잡성에 따라 달라집니다. 이 프로세스는 몇 초에서 며칠까지 걸릴 수 있습니다. Azure Portal을 사용하여 마이그레이션 진행률을 모니터링하세요.
  • 컨테이너 또는 데이터베이스 계정의 처리량 또한 초기 동기화 시간에 영향을 미칩니다. 이 마이그레이션에서는 RU/s가 사용되지 않지만 사용 가능한 총 RU/s는 프로세스의 성능에 영향을 미칩니다. 프로세스 속도를 높이기 위해 환경에서 사용 가능한 RU를 일시적으로 늘일 수 있습니다.
  • 해당 컨테이너에서 Synapse Link를 사용하도록 설정하는 동안 기존 컨테이너의 분석 저장소를 쿼리할 수 없습니다. OLTP 워크로드는 영향을 미치지 않으며 정상적으로 데이터를 읽을 수 있습니다. 초기 동기화가 시작된 후 수집된 데이터는 일반 분석 저장소 자동 동기화 프로세스에 의해 분석 저장소로 병합됩니다.

참고 항목

이제 Azure CLI 또는 PowerShell을 사용하여 기존 MongoDB API 컬렉션에서 Synapse Link를 활성화할 수 있습니다.

Azure Portal

새 컨테이너

  1. Azure Portal 또는 Azure Cosmos DB 탐색기에 로그인합니다.

  2. Azure Cosmos DB 계정으로 이동하여 데이터 탐색기 탭을 엽니다.

  3. 새 컨테이너를 선택하고 데이터베이스, 컨테이너, 파티션 키 및 처리량 정보에 대한 이름을 입력합니다. 분석 저장소 옵션을 설정합니다. 분석 저장소를 사용하도록 설정하면 analytical TTL 속성이 기본값 -1(무한 보존)로 설정된 컨테이너가 만들어집니다. 이는 레코드의 모든 기록 버전을 유지하는 분석 저장소로, 나중에 변경할 수 있습니다.

    Turn on analytical store for Azure Cosmos DB container

  4. 이 계정에 대해 이전에 Synapse Link를 사용하도록 설정하지 않은 경우 분석 저장소를 사용하도록 설정된 컨테이너를 만들기 위한 필수 구성 요소이므로 그렇게 하라는 메시지가 표시됩니다. 메시지가 표시되면 Synapse Link 사용을 선택합니다. 이 프로세스는 완료하는 데 1-5분 정도 걸릴 수 있습니다.

  5. 확인을 선택하여 Azure Cosmos DB 컨테이너를 사용하도록 설정된 분석 저장소를 만듭니다.

  6. 컨테이너를 만든 다음, 데이터 탐색기의 문서 바로 아래에 있는 설정을 클릭하여 분석 저장소가 사용되었는지 확인하고 분석 저장소 TTL(Time To Live) 옵션이 켜져 있는지 확인합니다.

기존 컨테이너

  1. Azure Portal 또는 Azure Cosmos DB 탐색기에 로그인합니다.

  2. Azure Cosmos DB 계정으로 이동하여 Azure Synapse Link 탭을 엽니다.

  3. 컨테이너에 Azure Synapse 링크 사용 섹션에서 컨테이너를 선택합니다.

    Screenshot showing how to turn on analytical store for an Azure Cosmos DB existing container.

  4. 컨테이너를 사용 설정한 다음, 데이터 탐색기의 문서 바로 아래에 있는 설정을 클릭하여 분석 저장소가 사용되었는지 확인하고 분석 저장소 TTL(Time To Live) 옵션이 켜져 있는지 확인합니다.

참고 항목

왼쪽 탐색 메뉴의 통합 섹션에 있는 Power BISynapse Link 창을 사용하여 계정에 Synapse Link를 사용하도록 설정할 수도 있습니다.

명령줄 도구

Azure CLI

다음 옵션은 Azure CLI를 사용해 --analytical-storage-ttl 속성을 설정하여 컨테이너에서 Synapse Link를 사용하도록 설정합니다.

Gremlin API용 Synapse Link가 현재 미리 보기로 제공됩니다. Azure CLI를 사용하여 새 그래프 또는 기존 그래프에서 Synapse Link를 사용하도록 설정할 수 있습니다. 아래 CLI 명령을 사용하여 Gremlin API 그래프에 대해 Synapse Link를 사용하도록 설정합니다.

az cosmosdb gremlin graph create --g MyResourceGroup --a MyCosmosDBGremlinDatabaseAccount --d MyGremlinDB --n MyGraph --analytical-storage-ttl –1

기존 그래프의 경우 createupdate로 바꿉니다.

PowerShell

다음 옵션은 Azure CLI를 사용해 -AnalyticalStorageTtl 속성을 설정하여 컨테이너에서 Synapse Link를 사용하도록 설정합니다.

Azure Cosmos DB SDK - SQL API 전용

.NET SDK

다음 .NET 코드는 AnalyticalStoreTimeToLiveInSeconds 속성을 설정하여 Synapse Link 지원 컨테이너를 만듭니다. 기존 컨테이너를 업데이트하려면 Container.ReplaceContainerAsync 메서드를 사용합니다.

// Create a container with a partition key, and analytical TTL configured to -1 (infinite retention)
ContainerProperties properties = new ContainerProperties()
{
    Id = "myContainerId",
    PartitionKeyPath = "/id",
    AnalyticalStoreTimeToLiveInSeconds = -1,
};
CosmosClient cosmosClient = new CosmosClient("myConnectionString");
await cosmosClient.GetDatabase("myDatabase").CreateContainerAsync(properties);

Java V4 SDK

다음 Java 코드는 setAnalyticalStoreTimeToLiveInSeconds 속성을 설정하여 Synapse Link 지원 컨테이너를 만듭니다. 기존 컨테이너를 업데이트하려면 container.replace 클래스를 사용합니다.

// Create a container with a partition key and  analytical TTL configured to  -1 (infinite retention) 
CosmosContainerProperties containerProperties = new CosmosContainerProperties("myContainer", "/myPartitionKey");

containerProperties.setAnalyticalStoreTimeToLiveInSeconds(-1);

container = database.createContainerIfNotExists(containerProperties, 400).block().getContainer();

Python V4 SDK

다음 Python 코드는 analytical_storage_ttl 속성을 설정하여 Synapse Link 지원 컨테이너를 만듭니다. 기존 컨테이너를 업데이트하려면 replace_container 메서드를 사용합니다.

# Client
client = cosmos_client.CosmosClient(HOST,  KEY )

# Database client
try:
    db = client.create_database(DATABASE)

except exceptions.CosmosResourceExistsError:
    db = client.get_database_client(DATABASE)

# Creating the container with analytical store enabled
try:
    container = db.create_container(
        id=CONTAINER,
        partition_key=PartitionKey(path='/id', kind='Hash'),analytical_storage_ttl=-1
    )
    properties = container.read()
    print('Container with id \'{0}\' created'.format(container.id))
    print('Partition Key - \'{0}\''.format(properties['partitionKey']))

except exceptions.CosmosResourceExistsError:
    print('A container with already exists')

Synapse 작업 영역에 연결

Azure Synapse Link를 사용하여 Azure Synapse Analytics Studio에서 Azure Cosmos DB 데이터베이스에 액세스하는 방법에 대해 Azure Synapse Link에 연결의 지침을 사용합니다.

Azure Synapse Analytics를 사용하여 쿼리 분석 저장소

Azure Synapse Analytics용 Apache Spark를 사용하여 분석 저장소 쿼리

Synapse Spark 3를 사용하여 쿼리하는 방법에 대해 Spark 3를 사용하여 Azure Cosmos DB 분석 저장소 쿼리 문서의 지침을 사용합니다. 이 문서에서는 Synapse 제스처에서 분석 저장소와 상호 작용하는 방법에 대한 몇 가지 예를 제공합니다. 컨테이너를 마우스 오른쪽 단추로 클릭하면 해당 제스처가 표시됩니다. 제스처를 사용하면 코드를 빠르게 생성하고 필요에 맞게 조정할 수 있습니다. 제스처는 한 번의 클릭으로 데이터를 검색하는 데에도 적합합니다.

Spark 2 통합의 경우 Spark 2를 사용하여 Azure Cosmos DB 분석 저장소 쿼리 문서에 있는 지침을 사용하세요.

Azure Synapse Analytics에서 서버리스 SQL 풀을 사용하여 분석 저장소 쿼리

서버리스 SQL 풀을 사용하면 Azure Synapse Link로 활성화된 Azure Cosmos DB 컨테이너의 데이터를 쿼리하고 분석할 수 있습니다. 트랜잭션 워크로드의 성능에 영향을 주지 않고 근 실시간으로 데이터를 분석할 수 있습니다. 분석 저장소에서 데이터를 쿼리하는 친숙한 T-SQL 구문을 제공하고 T-SQL 인터페이스를 통해 광범위한 BI 및 임시 쿼리 도구에 대한 통합 연결을 제공합니다. 자세한 내용은 서버리스 SQL 풀을 사용하여 분석 저장소 쿼리 문서를 참조하세요.

서버리스 SQL 풀을 사용하여 Power BI에서 데이터 분석 및 시각화

Azure Cosmos DB 포털의 통합 BI 환경을 사용하여 단 몇 번의 클릭으로 Synapse Link를 사용하여 BI 대시보드를 빌드할 수 있습니다. 자세한 내용은 Synapse Link를 사용하여 BI 대시보드를 빌드하는 방법을 참조하세요. 이 통합 환경은 Azure Cosmos DB 컨테이너에 대해 Synapse 서버리스 SQL 풀에서 간단한 T-SQL 보기를 만듭니다. 직접 쿼리를 사용하여 Azure Cosmos DB 컨테이너를 실시간으로 쿼리하는 이러한 보기를 통해 BI 대시보드를 빌드하면 데이터의 최신 변경 내용을 반영할 수 있습니다. 트랜잭션 워크로드에 대한 성능 또는 비용 영향은 없으며 ETL 파이프라인 관리의 복잡성도 없습니다.

컨테이너에 조인된 고급 T-SQL 뷰를 사용하거나 가져오기 모드에서 Power BI 대시보드를 빌드하려면 서버리스 SQL 풀을 사용하여 Synapse Link Azure Cosmos DB 데이터 분석을 참조하세요.

모범 사례로 성능 개선

사용자 지정 분할

사용자 지정 분할을 사용하면 분석 쿼리에서 일반적으로 필터로 사용되는 필드에서 분석 저장소 데이터를 분할할 수 있으므로 쿼리 성능이 개선됩니다. 자세한 내용은 사용자 지정 분할 소개사용자 지정 분할 구성 방법 문서를 참조하세요.

SQL 서버리스 쿼리에 대해 필수 모범 사례를 사용합니다.

GitHub에서 Azure Synapse Link를 시작하기 위한 샘플을 찾을 수 있습니다. 이 샘플은 IoT 및 소매 시나리오를 사용하여 엔드투엔드 솔루션을 보여 줍니다. 또한 MongoDB 폴더 아래의 동일한 리포지토리에서 Azure Cosmos DB for MongoDB에 해당하는 샘플을 찾을 수 있습니다.

다음 단계

자세히 알아보려면 다음 문서를 참조하세요