Поделиться через


Копирование данных из MongoDB с помощью Фабрики данных Azure или Synapse Analytics (устаревшая версия)

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

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

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

Внимание

Служба выпускает новый соединитель MongoDB, который обеспечивает лучшую собственную поддержку MongoDB по сравнению с этой реализацией на основе ODBC. Дополнительные сведения см. в статье Соединитель MongoDB.

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

Данные из базы данных MongoDB можно скопировать в любое хранилище данных, поддерживаемое в качестве приемника. Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.

В частности, этот соединитель MongoDB поддерживает:

  • MongoDB версий 2.4, 2.6, 3.0, 3.2, 3.4 и 3.6.
  • Копирование данных с использованием базовой или анонимной проверки подлинности.

Необходимые компоненты

Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.

Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.

Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.

Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.

Среда выполнения интеграции предоставляет встроенный драйвер MongoDB, поэтому при копировании данных из MongoDB вам не потребуется устанавливать драйвер вручную.

Начало работы

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

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

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

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

  2. Выполните поиск по ключевому слову “Mongo” и выберите соединитель MongoDB.

    Снимок экрана: соединитель MongoDB.

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

    Снимок экрана: конфигурация связанной службы для MongoDB.

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

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

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

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

Свойство Описание: Обязательное поле
type Для свойства type необходимо задать значение MongoDB Да
server IP-адрес или имя узла сервера MongoDB Да
port TCP-порт, используемый сервером MongoDB для прослушивания клиентских подключений Нет (значение по умолчанию — 27017)
databaseName Имя базы данных MongoDB, к которой необходимо получить доступ Да
authenticationType Тип проверки подлинности, используемый для подключения к базе данных MongoDB.
Допустимые значения: Базовый, Анонимный.
Да
username Учетная запись пользователя для доступа к MongoDB Да (если используется обычная проверка подлинности)
password Пароль для пользователя Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да (если используется обычная проверка подлинности)
authSource Имя базы данных MongoDB, которое будет использоваться для проверки учетных данных при проверке подлинности № Для обычной проверки подлинности по умолчанию используется учетная запись администратора и база данных, указанная с помощью свойства databaseName
enableSsl Указывает, шифруются ли подключения к серверу с помощью протокола TLS. По умолчанию используется значение false. No
allowSelfSignedServerCert Указывает, следует ли разрешить использование самозаверяющих сертификатов с сервера. По умолчанию используется значение false. No
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No

Пример:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDb",
        "typeProperties": {
            "server": "<server name>",
            "databaseName": "<database name>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

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

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение MongoDbCollection. Да
collectionName Имя коллекции в базе данных MongoDB Да

Пример:

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

Свойства действия копирования

Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником MongoDB.

MongoDB в качестве источника

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

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение MongoDbSource. Да
query Используйте пользовательский запрос SQL-92 для чтения данных. Например, select * from MyTable. Нет (если в наборе данных указано значение collectionName).

Пример:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Совет

При указании запроса SQL обратите внимание на формат даты и времени. например SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02', или используйте параметр SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'

Схема фабрики данных

Служба фабрики данных Azure определяет схему для коллекции MongoDB, используя последние 100 документов в коллекции. Если эти 100 документов не содержат полной схемы, во время копирования некоторые столбцы могут игнорироваться.

Сопоставление типов данных для MongoDB

При копировании данных из MongoDB используются следующие сопоставления типов данных MongoDB с промежуточными типами данных, используемыми службой для внутренних целей. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.

Тип данных MongoDB Промежуточный тип данных службы
Binary Byte[]
Логический Логическое
Дата Дата/время
NumberDouble Двойной
NumberInt Int32
NumberLong Int64
ObjectID Строка
Строка Строка
UUID GUID
Object Преобразованный в плоские столбцы с "_" в качестве вложенного разделителя

Примечание.

Дополнительные сведения о поддержке массивов с помощью виртуальных таблиц см. в разделе Поддержка сложных типов с помощью виртуальных таблиц.

В настоящее время не поддерживаются следующие типы MongoDB: DBPointer, JavaScript, мин. и макс. значение ключей, регулярное выражение, символ, метка времени, не определенный.

Поддержка сложных типов с помощью виртуальных таблиц

В службе используется встроенный драйвер ODBC, который позволяет подключаться к базе данных MongoDB и копировать из нее данные. Для сложных типов, таких как массивы или объекты с различными типами данных в документах, драйвер ренормализует данные в соответствующие виртуальные таблицы. В частности, если таблица содержит такие столбцы, драйвер создает следующие виртуальные таблицы.

  • Базовая таблица, в которой содержатся те же данные, что и в исходной таблице, кроме столбцов сложного типа. Имена базовой таблицы и таблицы, которую она представляет, совпадают.
  • Виртуальная таблица для каждого столбца сложного типа, в которой представлены вложенные данные в развернутом виде. Виртуальным таблицам присваиваются имена в следующем формате: имя исходной таблицы, разделитель "_", имя массива или объекта.

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

Пример

Например, ExampleTable здесь — таблица MongoDB с одним столбцом с массивом объектов в каждой ячейке — Счета и один столбец с массивом скалярных типов — Рейтинги.

_id Название клиента Счета Уровень обслуживания Рейтинги
1111 ABC [{счет_№: "123", товар: "тостер", цена: "456", скидка: "0,2"}, {счет_№: "124", товар: "печь", цена: "1235", скидка: "0,2"}] Серебряная [5,6]
2222 XYZ [{счет_№: "135", товар: "холодильник", цена: "12543", скидка: "0,0"}] Золотая [1,2]

Для представления такой одной таблицы драйвер создает несколько виртуальных таблиц. В примере приведена первая базовая виртуальная таблица ExampleTable. Базовая таблица содержит все данные из исходной таблицы, но данные массивов опущены и развернуты в виртуальных таблицах.

_id Название клиента Уровень обслуживания
1111 ABC Серебряная
2222 XYZ Золотая

В следующих таблицах представлены виртуальные таблицы, соответствующие исходным массивам в примере. Каждая из этих таблиц содержит следующее:

  • обратную ссылку на исходный ключевой столбец, соответствующий строке исходного массива (с помощью столбца _№);
  • указание на позицию данных в исходном массиве;
  • развернутые данные для каждого элемента в массиве.

Таблица ExampleTable_Invoices:

_id ExampleTable_Invoices_dim1_idx счет_№ элемент цена Discount
1111 0 123 тостер 456 0,2
1111 1 124 печь 1235 0,2
2222 0 135 холодильник 12543 0,0

Таблица ExampleTable_Ratings:

_id ExampleTable_Ratings_dim1_idx ExampleTable_Ratings
1111 0 5
1111 1 6
2222 0 1
2222 1 2

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