Копирование данных в Azure Cosmos DB или из MongoDB с помощью Фабрика данных Azure или Synapse Analytics

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается, как использовать действие копирования в конвейерах Фабрика данных Azure и Synapse Analytics для копирования данных из Azure Cosmos DB для MongoDB. Это продолжение статьи о действии копирования в Фабрике данных Azure, в которой представлены общие сведения о действии копирования.

Примечание.

Этот соединитель поддерживает копирование данных только из Azure Cosmos DB для MongoDB. Для Azure Cosmos DB для NoSQL см . соединитель Azure Cosmos DB для NoSQL. В настоящее время другие типы API не поддерживаются.

Поддерживаемые возможности

Этот соединитель Azure Cosmos DB для MongoDB поддерживается для следующих возможностей:

Поддерживаемые возможности IR Управляемая частная конечная точка
Действие копирования (источник/приемник) ① ②

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Вы можете скопировать данные из Azure Cosmos DB для MongoDB в любое поддерживаемую хранилище данных приемника или скопировать данные из любого поддерживаемого исходного хранилища данных в Azure Cosmos DB для MongoDB. Список хранилищ данных, поддерживаемых действием копирования в качестве источников и приемников, приведен в разделе Поддерживаемые хранилища данных и форматы.

Соединитель Azure Cosmos DB для MongoDB можно использовать для:

  • Скопируйте данные из Azure Cosmos DB и в MongoDB.
  • Запись данных в Azure Cosmos DB с помощью операции INSERT или UPSERT.
  • Импорт и экспорт документов JSON "как есть" либо копирование данных из набора табличных данных или в него. К примерам можно отнести базу данных SQL и CSV-файл. Сведения о копировании документов "как есть" в JSON-файлы или другую коллекцию Azure Cosmos DB либо из них см. в разделе "Импорт и экспорт документов JSON".

Начать

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы в Azure Cosmos DB для MongoDB с помощью пользовательского интерфейса

Выполните следующие действия, чтобы создать связанную службу с Azure Cosmos DB для MongoDB в пользовательском интерфейсе портал Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Найдите Azure Cosmos DB для MongoDB и выберите этот соединитель.

    Select the Azure Cosmos DB for MongoDB connector.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Configure a linked service to Azure Cosmos DB for MongoDB.

Сведения о конфигурации соединителя

В следующих разделах содержатся сведения о свойствах, которые можно использовать для определения сущностей фабрики данных, относящихся к Azure Cosmos DB для MongoDB.

Свойства связанной службы

Следующие свойства поддерживаются для связанной службы Azure Cosmos DB для MongoDB:

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение CosmosDbMongoDbApi. Да
connectionString Укажите строка подключения для Azure Cosmos DB для MongoDB. Его можно найти в колонке портал Azure —> колонке 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. Допустимые значения: true и false (по умолчанию). Это определит драйвер, который будет использоваться в службе. Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать Azure Integration Runtime или локальную среду IR (если хранилище данных расположено в частной сети). Если это свойство не задано, используется Azure Integration Runtime по умолчанию. No

Пример

{
    "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. Следующие свойства поддерживаются для набора данных Azure Cosmos DB для 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 для MongoDB.

Полный список разделов и свойств, доступных для определения действий, см. в статье, посвященной конвейерам и действиям в Фабрике данных Azure.

Azure Cosmos DB для MongoDB в качестве источника

В разделе source действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type действия копирования должно иметь значение CosmosDbMongoDbApiSource. Да
Фильтр Задает фильтр выбора с помощью операторов запросов. Чтобы получить все документы в коллекции, не указывайте этот параметр или передайте пустой документ ({}). No
cursorMethods.project Определяет, какие поля в документах для проекции необходимо получить. Чтобы получить все поля в соответствующих документах, не указывайте этот параметр. No
cursorMethods.sort Определяет, в каком порядке запрос будет возвращать соответствующие документы. См. cursor.sort(). No
cursorMethods.limit Определяет максимальное количество документов, возвращаемых сервером. См. cursor.limit(). No
cursorMethods.skip Определяет, сколько документов нужно пропустить, прежде чем MongoDB начнет выдавать результаты. См. cursor.skip(). No
batchSize Определяет, сколько документов должно быть выдано в каждом пакете ответа от экземпляра MongoDB. В большинстве случаев изменение размера пакета не влияет на пользователя или приложение. Azure Cosmos DB ограничивает каждый пакет не может превышать 40 МБ размер, который является суммой размера пакетаSize размера документов, поэтому уменьшите это значение, если размер документа велик. No
(значение по умолчанию — 100)

Совет

ADF поддерживает прием документа BSON в строгом режиме. Убедитесь в том, что запрос фильтра находится в строгом режиме, а не в режиме оболочки. Дополнительные описания можно найти в руководстве 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 для MongoDB в качестве приемника

В разделе sink действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type приемника действия копирования должно иметь значение CosmosDbMongoDbApiSink. Да
writeBehavior Описывает способ записи данных в Azure Cosmos DB. Допустимые значения: insert и upsert.

Поведение upsert — замена документа, если документ с таким значением _id уже существует. В противном случае выполняется вставка документа.

Примечание. Служба автоматически создает _id для документа, если _id не указан в исходном документе или при сопоставлении столбцов. Это означает, что для правильной работы upsert у документа должен быть идентификатор.
No
(По умолчанию используется insert.)
writeBatchSize Свойство writeBatchSize определяет размер документов для записи в каждом пакете. Вы можете увеличить значение writeBatchSize для повышения производительности или уменьшить значение, если документ большого размера. No
(Значение по умолчанию — 10 000.)
writeBatchTimeout Время ожидания до выполнения операции пакетной вставки, пока не истечет срок ее действия. Разрешенным значением является временной диапазон. No
(по умолчанию используется 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 "как есть".
  • импортировать документы JSON из различных источников в Azure Cosmos DB, включая MongoDB, Хранилище BLOB-объектов Azure, Azure Data Lake Store и другие файловые хранилища, поддерживаемые службой;
  • экспортировать документы JSON из коллекции Azure Cosmos DB в различные файловые хранилища;

Чтоб обеспечить копирование без использования схем, сделайте следующее.

  • При использовании средства копирования данных выберите "Экспорт как есть" в JSON-файлы или коллекцию Azure Cosmos DB.
  • При разработке действий выберите формат JSON с соответствующим хранилищем файлов для источника или приемника.

Сопоставление схемы

Чтобы скопировать данные из Azure Cosmos DB для MongoDB в табличный приемник или обратно, см . в разделе сопоставления схем.

Специально для записи в Azure Cosmos DB, чтобы убедиться, что вы заполняете Azure Cosmos DB правильным идентификатором объекта из исходных данных, например, у вас есть столбец "id" в таблице базы данных SQL и хотите использовать это значение в качестве идентификатора документа в MongoDB для вставки и upsert, необходимо задать правильное сопоставление схем в соответствии с определением строгого режима MongoDB (_id.$oid) следующим образом:

Map ID in MongoDB sink

После выполнения действия копирования следующий ObjectId BSON создается в качестве приемника.

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

Список хранилищ данных, поддерживаемых действием копирования в качестве источников и приемников, приведен в разделе Поддерживаемые хранилища данных.