Azure Data Factory 또는 Synapse Analytics 사용하여 MongoDB에서 또는 MongoDB로 데이터 복사

적용할 내용: Azure Data Factory Azure Synapse Analytics

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

중요

새 MongoDB 커넥터는 향상된 네이티브 MongoDB 지원을 제공합니다. 이전 버전과의 호환성을 위해서만 지원되는 솔루션에서 레거시 MongoDB 커넥터를 사용하는 경우 MongoDB 커넥터(레거시) 문서를 참조하세요.

지원되는 기능

MongoDB 데이터베이스에서 지원되는 싱크 데이터 저장소로 데이터를 복사하거나 지원되는 원본 데이터 저장소에서 MongoDB 데이터베이스로 데이터를 복사할 수 있습니다. 복사 작업의 원본/싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 표를 참조하세요.

특히 이 MongoDB 커넥터는 버전 4.2까지 지원합니다.

사전 요구 사항

데이터 저장소가 온-프레미스 네트워크, Azure 가상 네트워크 또는 Amazon Virtual Private Cloud 내에 있는 경우 자체 호스팅된 통합 런타임을 구성하여 연결해야 합니다.

데이터 저장소가 관리형 클라우드 데이터 서비스인 경우 Azure Integration Runtime을 사용할 수 있습니다. 액세스가 방화벽 규칙에서 승인된 IP로 제한되는 경우 허용 목록에 Azure Integration Runtime IP를 추가할 수 있습니다.

또한 Azure Data Factory의 관리형 가상 네트워크 통합 런타임 기능을 사용하면 자체 호스팅 통합 런타임을 설치하고 구성하지 않고도 온-프레미스 네트워크에 액세스할 수 있습니다.

Data Factory에서 지원하는 네트워크 보안 메커니즘 및 옵션에 대한 자세한 내용은 데이터 액세스 전략을 참조하세요.

시작

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

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

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

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

  2. MongoDB를 검색하고 MongoDB 커넥터를 선택합니다.

    Select the MongoDB connector.

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

    Configure a linked service to MongoDB.

커넥터 구성 세부 정보

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

연결된 서비스 속성

MongoDB 연결된 서비스에 다음 속성이 지원됩니다.

속성 설명 필수
type 형식 속성은 MongoDbV2로 설정해야 합니다.
connectionString MongoDB 연결 문자열을 지정합니다(예: mongodb://[username:password@]host[:port][/[database][?options]]). 자세한 내용은 연결 문자열에 대한 MongoDB 설명서를 참조하세요.

Azure Key Vault에 연결 문자열을 넣을 수도 있습니다. 자세한 내용은 Azure Key Vault의 자격 증명 저장을 참조하세요.
데이터베이스 액세스하려는 데이터베이스 이름입니다.
connectVia 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 조건 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다.

예:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

데이터 세트 속성

데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트 및 연결된 서비스를 참조하세요. MongoDB 데이터 세트에 대해 다음 속성을 지원합니다.

속성 설명 필수
type 데이터 세트의 형식 속성을 MongoDbV2Collection으로 설정해야 합니다.
collectionName MongoDB 데이터베이스에 있는 컬렉션의 이름입니다.

예:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbV2Collection",
        "typeProperties": {
            "collectionName": "<Collection name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

복사 작업 속성

작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인 문서를 참조하세요. 이 섹션에서는 MongoDB 원본 및 싱크에서 지원하는 속성의 목록을 제공합니다.

MongoDB를 원본으로

복사 작업 source 섹션에서 다음 속성이 지원됩니다.

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

서비스는 Strict 모드에서BSON 문서 사용 을 지원합니다. 필터 쿼리가 Shell 모드가 아닌 Strict 모드에 있는지 확인합니다. 자세한 설명은 MongoDB 설명서를 참조하세요.

예:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "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>"
            }
        }
    }
]

MongoDB를 싱크로

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

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

upsert의 동작은 동일한 문서가 이미 있는 경우 문서를 바꾸는 것입니다. 그렇지 않으면 문서를 삽입합니다.

참고:이 원래 문서 또는 열 매핑에 의해 지정되지 않은 경우 서비스에서 문서에 대한 를 자동으로 _id 생성합니다. 즉, upsert가 예상대로 작동하려면 문서에 ID가 있는지 확인해야 합니다.

(기본값: insert)
writeBatchSize writeBatchSize 속성은 각 일괄 처리에서 작성할 문서의 크기를 제어합니다. 성능을 개선하기 위해 writeBatchSize에 대한 값을 늘리고 문서 크기가 커지는 경우 값을 줄여 볼 수 있습니다.
(기본값: 10,000)
writeBatchTimeout 시간 초과 전 배치 삽입 작업을 완료하기 위한 대기 시간입니다. 허용된 값은 시간 범위입니다.
(기본값은 00:30:00 - 30분)

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

예제

"activities":[
    {
        "name": "CopyToMongoDB",
        "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": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

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

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

  • 두 MongoDB 컬렉션 간에 데이터를 있는 그대로 복사
  • Azure Cosmos DB, Azure Blob Storage, Azure Data Lake Store 및 기타 지원되는 파일 기반 저장소를 포함하여 다양한 원본에서 MongoDB로 JSON 문서를 가져옵니다.
  • MongoDB 컬렉션에서 다양한 파일 기반 저장소로 JSON 문서 내보내기

이러한 스키마 독립적 복사를 완수하려면 데이터 세트 및 복사 작업의 스키마 매핑에서 "구조"(스키마라고도 함) 섹션을 건너뛰세요.

스키마 매핑

데이터를 MongoDB에서 테이블 형식 싱크로 또는 그 반대로 복사하려면 스키마 매핑을 참조하세요.

다음 단계

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