Azure Data Factory 또는 Synapse Analytics를 사용하여 Azure Cosmos DB for MongoDB에서/로 데이터 복사

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 Azure Cosmos DB for MongoDB 간에 데이터를 복사하는 방법을 간략하게 설명합니다. 이 문서는 복사 작업에 대한 일반적인 개요를 제공하는 복사 작업을 기준으로 합니다.

참고 항목

이 커넥터는 Azure Cosmos DB for MongoDB에서/로 데이터를 복사하는 작업만 지원합니다. Azure Cosmos DB for NoSQL의 경우 Azure Cosmos DB for NoSQL 커넥터를 참조하세요. 다른 API 유형은 현재 지원되지 않습니다.

지원되는 기능

이 Azure Cosmos DB for MongoDB 커넥터는 다음 기능에 대해 지원됩니다.

지원되는 기능 IR 관리형 프라이빗 엔드포인트
복사 작업(원본/싱크) ① ②

① Azure 통합 런타임 ② 자체 호스팅 통합 런타임

Azure Cosmos DB for MongoDB에서 지원되는 싱크 데이터 저장소로 데이터를 복사할 수도 있고, 지원되는 원본 데이터 저장소에서 Azure Cosmos DB for MongoDB로 데이터를 복사할 수도 있습니다. 복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소의 목록은 지원되는 데이터 저장소 및 형식을 참조하세요.

Azure Cosmos DB for MongoDB 커넥터를 사용하여 다음을 수행할 수 있습니다.

  • Azure Cosmos DB for MongoDB 간에 데이터를 복사합니다.
  • insert 또는 upsert로 Azure Cosmos DB에 씁니다.
  • JSON 문서를 있는 그대로 가져오고 내보내거나 데이터를 테이블 형식 데이터 세트 간에 복사합니다. 예로는 SQL 데이터베이스 및 CSV 파일이 있습니다. JSON 파일 간 또는 다른 Azure Cosmos DB 컬렉션 간에 문서를 있는 그대로 복사하려면 JSON 문서 가져오기 또는 내보내기를 참조하세요.

시작하기

파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.

UI를 사용하여 Azure Cosmos DB for MongoDB에 연결된 서비스 만들기

다음 단계를 사용하여 Azure Portal UI에서 Azure Cosmos DB for MongoDB에 연결된 서비스를 만듭니다.

  1. Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.

  2. Azure Cosmos DB for MongoDB를 검색하고 해당 커넥터를 선택합니다.

    Select the Azure Cosmos DB for MongoDB connector.

  3. 서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.

    Configure a linked service to Azure Cosmos DB for MongoDB.

커넥터 구성 세부 정보

다음 섹션에서는 Azure Cosmos DB for MongoDB에 한정된 Data Factory 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.

연결된 서비스 속성

Azure Cosmos DB for MongoDB 연결된 서비스에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type type 속성을 CosmosDbMongoDbApi로 설정해야 합니다.
connectionString Azure Cosmos DB for MongoDB에 대한 연결 문자열을 지정합니다. Azure Portal -> Azure Cosmos DB 블레이드 -> 기본 또는 보조 연결 문자열에서 찾을 수 있습니다.
3.2 서버 버전의 경우 문자열 패턴은 mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb입니다.
3.6 + 서버 버전의 경우 문자열 패턴은 mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@입니다.

Azure Key Vault에 암호를 넣고 연결 문자열에서 password 구성을 끌어올 수도 있습니다. 자세한 내용은 Azure Key Vault의 자격 증명 저장을 참조하세요.
database 액세스하려는 데이터베이스 이름입니다.
isServerVersionAbove32 서버 버전이 3.2 이상인지 여부를 지정합니다. 허용되는 값은 truefalse(기본값)입니다. 이를 통해 서비스에서 사용할 드라이버를 결정합니다.
connectVia 데이터 저장소에 연결하는 데 사용할 통합 런타임입니다. Azure Integration Runtime 또는 데이터 저장소가 프라이빗 네트워크에 있는 경우, 자체 호스팅 통합 런타임을 사용할 수 있습니다. 이 속성을 지정하지 않으면 기본 Azure Integration Runtime이 사용됩니다. 아니요

예제

{
    "name": "CosmosDbMongoDBAPILinkedService",
    "properties": {
        "type": "CosmosDbMongoDbApi",
        "typeProperties": {
            "connectionString": "mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb",
            "database": "myDatabase",
            "isServerVersionAbove32": "false"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

데이터 세트 속성

데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트 및 연결된 서비스를 참조하세요. Azure Cosmos DB for MongoDB 데이터 세트에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type 데이터 세트의 type 속성을 CosmosDbMongoDbApiCollection으로 설정해야 합니다.
collectionName Azure Cosmos DB 컬렉션의 이름입니다.

예제

{
    "name": "CosmosDbMongoDBAPIDataset",
    "properties": {
        "type": "CosmosDbMongoDbApiCollection",
        "typeProperties": {
            "collectionName": "<collection name>"
        },
        "schema": [],
        "linkedServiceName":{
            "referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

복사 활동 속성

이 섹션에서는 Azure Cosmos DB for MongoDB 원본 및 싱크에서 지원하는 속성 목록을 제공합니다.

작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인을 참조하세요.

Azure Cosmos DB for MongoDB를 원본으로 사용

복사 작업 source 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type 복사 작업 원본의 type 속성을 CosmosDbMongoDbApiSource로 설정해야 합니다.
필터링 쿼리 연산자를 사용하여 선택 영역 필터를 지정합니다. 컬렉션의 모든 문서를 반환하려면 이 매개 변수를 생략하거나 빈 문서({})를 전달합니다. 아니요
cursorMethods.project 프로젝션에 대한 문서에서 반환할 필드를 지정합니다. 일치하는 문서에서 모든 필드를 반환하려면 이 매개 변수를 생략합니다. 아니요
cursorMethods.sort 쿼리가 일치하는 문서를 반환하는 순서를 지정합니다. cursor.sort()를 참조하세요. 아니요
cursorMethods.limit 서버에서 반환하는 문서의 최대 수를 지정합니다. cursor.limit()를 참조하세요. 아니요
cursorMethods.skip MongoDB가 결과를 반환하기 시작하는 위치에서 건너뛸 문서 수를 지정합니다. cursor.skip()을 참조하세요. 아니요
batchSize MongoDB 인스턴스의 응답을 각각 일괄 처리로 반환할 문서 수를 지정합니다. 대부분의 경우 일괄 처리 크기를 수정해도 사용자 또는 애플리케이션에 영향이 없습니다. Azure Cosmos DB는 각 일괄 처리가 문서 크기의 batchSize 수의 합인 40MB를 초과할 수 없도록 제한하므로 문서 크기가 대규모인 경우 이 값을 줄입니다. 아니요
(기본값은 100)

ADF는 Strict 모드로 BSON 문서를 사용하는 것을 지원합니다. 필터 쿼리가 Shell 모드가 아닌 Strict 모드에 있는지 확인합니다. 자세한 설명은 MongoDB 설명서에서 찾을 수 있습니다.

예제

"activities":[
    {
        "name": "CopyFromCosmosDBMongoDBAPI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Cosmos DB for MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "CosmosDbMongoDbApiSource",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Cosmos DB for MongoDB를 싱크로 사용

복사 작업 sink 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type 복사 작업 싱크의 type 속성은 CosmosDbMongoDbApiSink로 설정해야 합니다.
writeBehavior Azure Cosmos DB에 데이터를 쓰는 방법을 설명합니다. 허용되는 값은 insertupsert입니다.

upsert 동작은 동일한 _id의 문서가 이미 존재하는 경우 문서를 바꾸는 것으로, 존재하지 않는 경우 문서를 삽입하는 것입니다.

참고: _id가 원래 문서 또는 열 매핑에 지정되지 않은 경우 이 서비스는 문서에 대한 _id를 자동으로 생성합니다. 즉, upsert가 예상대로 작동하려면 문서에 ID가 있는지 확인해야 합니다.
아니요
(기본값: insert)
writeBatchSize writeBatchSize 속성은 각 일괄 처리에서 작성할 문서의 크기를 제어합니다. 성능을 개선하기 위해 writeBatchSize에 대한 값을 늘리고 문서 크기가 커지는 경우 값을 줄여 볼 수 있습니다. 아니요
(기본값: 10,000)
writeBatchTimeout 시간 초과되기 전에 배치 삽입 작업을 완료하기 위한 대기 시간입니다. 허용되는 값은 시간 범위입니다. 아니요
(기본값은 00:30:00 - 30분)

JSON 문서를 그대로 가져오려면 JSON 문서 가져오기 또는 내보내기 섹션을 참조하세요. 테이블 형식 데이터를 복사하려면 스키마 매핑을 참조하세요.

예제

"activities":[
    {
        "name": "CopyToCosmosDBMongoDBAPI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "CosmosDbMongoDbApiSink",
                "writeBehavior": "upsert"
            }
        }
    }
]

JSON 문서 가져오기 및 내보내기

이 Azure Cosmos DB 커넥터를 사용하여 손쉽게 다음을 수행할 수 있습니다.

  • 두 Azure Cosmos DB 컬렉션 간에 문서를 있는 그대로 복사
  • MongoDB, Azure Blob Storage, Azure Data Lake Store 및 서비스에서 지원하는 기타 파일 기반 저장소 등 다양한 원본에서 Azure Cosmos DB로 JSON 문서 가져오기
  • Azure Cosmos DB 컬렉션에서 다양한 파일 기반 저장소로 JSON 문서 내보내기

스키마 중립적 복사를 수행하려면 다음을 수행합니다.

  • 데이터 복사 도구를 사용하는 경우 JSON 파일 또는 Azure Cosmos DB 컬렉션으로 있는 그대로 내보내기 옵션을 선택합니다.
  • 작업 작성을 사용하는 경우 원본 또는 싱크에 해당하는 파일 저장소를 가진 JSON 형식을 선택합니다.

스키마 매핑

Azure Cosmos DB for MongoDB에서 테이블 형식 싱크로 또는 역순으로 데이터를 복사하려면 스키마 매핑을 참조하세요.

Azure Cosmos DB에 대한 쓰기 작업을 위해 특별히 원본 데이터에서 올바른 개체 ID로 Azure Cosmos DB를 채울 수 있도록 하려면(예: SQL 데이터베이스 테이블에 "ID" 열이 있고 삽입/upsert하기 위해 MongoDB에서 문서 ID로 해당 값을 사용함) MongoDB strict 모드 정의(_id.$oid)에 따라 적절한 스키마 매핑을 다음과 같이 설정해야 합니다.

Map ID in MongoDB sink

복사 작업을 실행한 후에 싱크에 아래 BSON ObjectId 작업이 생성됩니다.

{
    "_id": ObjectId("592e07800000000000000000")
}

복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소의 목록은 지원되는 데이터 저장소를 참조하세요.