使用 Azure Data Factory 或 Synapse Analytics 從 MongoDB 複製數據(舊版)

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有項目。 了解如何免費啟動新的試用版

本文概述如何使用 Azure Data Factory 或 Synapse Analytics 管線中的複製活動,從 MongoDB 資料庫複製數據。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。

重要

此服務已發行新的 MongoDB 連接器,相較於此 ODBC 型實作,提供更佳的原生 MongoDB 支援,請參閱 MongoDB 連接器 一文的詳細數據。

支援的功能

您可以將資料從 MongoDB 資料庫複製到任何支援的接收資料存放區。 如需複製活動所支援作為來源/接收器的資料存放區清單,請參閱支援的資料存放區表格。

具體而言,此 MongoDB 連接器支援:

  • MongoDB 2.4、2.6、3.0、3.2、3.4 和 3.6 版。
  • 使用 基本匿名 驗證來複製數據。

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。

如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略

Integration Runtime 提供內建的 MongoDB 驅動程式,因此您不需要在從 MongoDB 複製數據時手動安裝任何驅動程式。

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立 MongoDB 的連結服務

使用下列步驟,在 Azure 入口網站 UI 中建立至 MongoDB 的連結服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 Mongo,然後選取 MongoDB 連接器。

    Screenshot of the MongoDB connector.

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    Screenshot of linked service configuration for MongoDB.

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 MongoDB 連接器專屬的 Data Factory 實體。

連結服務屬性

以下是針對 MongoDB 已連結服務支援的屬性:

屬性 描述 必要
type type 屬性必須設定為: MongoDb Yes
伺服器 MongoDB 伺服器的IP位址或主機名。 Yes
port MongoDB 伺服器用來接聽用戶端連線的 TCP 連接埠。 否 (預設值為 27017)
databaseName 您想要存取的 MongoDB 資料庫名稱。 Yes
authenticationType 用來連線到 MongoDB 資料庫的驗證類型。
允許的值為: BasicAnonymous
Yes
username 用來存取 MongoDB 的用戶帳戶。 是(如果使用基本身份驗證)。
password 使用者的密碼。 將此欄位標記為 SecureString 以便安全儲存,或參考 Azure Key Vault 中儲存的祕密 是(如果使用基本身份驗證)。
authSource 您要用來檢查認證以進行驗證的 MongoDB 資料庫名稱。 否。 針對基本身份驗證,預設值是使用使用 databaseName 屬性所指定的系統管理員帳戶和資料庫。
enableSsl 指定是否使用 TLS 加密伺服器連線。 預設值為 false。 No
allowSelfSignedServerCert 指定是否允許來自伺服器的自我簽署憑證。 預設值為 false。 No
connectVia 用於連線到資料存放區的 Integration Runtime。 深入了解必要條件一節。 如果未指定,就會使用預設的 Azure Integration Runtime。 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"
        }
    }
}

資料集屬性

如需定義資料集的區段和屬性完整清單,請參閱資料集和連結服務。 以下是針對 MongoDB 資料集支援的屬性:

屬性 描述 必要
type 數據集的類型屬性必須設定為: MongoDbCollection Yes
collectionName MongoDB 資料庫中集合的名稱。 Yes

範例:

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

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 MongoDB 來源所支持的屬性清單。

MongoDB 作為來源

複製活動的 source 區段支援下列屬性:

屬性 描述 必要
type 複製活動來源的類型屬性必須設定為: MongoDbSource Yes
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 查詢時,請注意 DateTime 格式。 例如: 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')}'

Data factory 的結構描述

Azure Data Factory 服務會使用 集合中最新的 100 份檔 ,從 MongoDB 集合推斷架構。 如果這 100 份檔未包含完整的架構,則複製作業期間可能會忽略某些數據行。

MongoDB 的數據類型對應

從 MongoDB 複製數據時,下列對應會從 MongoDB 資料類型使用到內部服務中使用的過渡數據類型。 請參閱 架構和數據類型對應 ,以瞭解複製活動如何將來源架構和數據類型對應至接收。

MongoDB 數據類型 過渡期服務資料類型
二進位 Byte[]
Boolean Boolean
Date Datetime
NumberDouble Double
NumberInt Int32
NumberLong Int64
ObjectID String
String String
UUID GUID
Object 以 「_」 作為巢狀分隔符,重新正規化為扁平化數據行

注意

若要瞭解使用虛擬數據表的數位的支援,請參閱 使用虛擬數據表 支援複雜類型一節。

目前不支援下列 MongoDB 數據類型:DBPointer、JavaScript、Max/Min 索引鍵、正則表達式、符號、時間戳、未定義。

使用虛擬數據表支援複雜類型

此服務會使用內建 ODBC 驅動程式,從 MongoDB 資料庫連線和複製數據。 對於跨檔具有不同類型之數位或物件等複雜類型,驅動程式會將數據重新正規化為對應的虛擬數據表。 具體而言,如果數據表包含這類數據行,驅動程式會產生下列虛擬數據表:

  • ,其中包含與實際數據表相同的數據,但複雜類型數據行除外。 基表會使用與它所代表之實際數據表相同的名稱。
  • 每個複雜類型數據行的虛擬數據表,其會展開巢狀數據。 虛擬數據表是使用實際數據表的名稱、分隔符 「_」 和陣列或物件的名稱來命名。

虛擬數據表會參考實際數據表中的數據,讓驅動程式能夠存取已取消正規化的數據。 您可以藉由查詢和聯結虛擬資料表來存取 MongoDB 陣列的內容。

範例

例如,此處的ExampleTable是 MongoDB 數據表,其中具有一個數據行,其中每個數據格中都有一個物件數位 - 發票,以及一個具有純量類型數位的數據行 - 評等。

_id 客戶名稱 發票 服務等級 分級
1111 ABC [{invoice_id:“123”, item:“toaster”, price:“456”, discount:“0.2”}, {invoice_id:“124”, item:“oven”, price: “1235”, discount: “0.2”}] 銀色 [5,6]
2222 XYZ [{invoice_id:“135”, item:“fridge”, price: “12543”, discount: “0.0”}] 金卡 [1,2]

驅動程式會產生多個虛擬數據表來表示這個單一數據表。 第一個虛擬數據表是名為 「ExampleTable」 的基表,如範例所示。 基表包含原始數據表的所有數據,但已省略數位中的數據,並在虛擬數據表中展開。

_id 客戶名稱 服務等級
1111 ABC 銀色
2222 XYZ 金卡

下表顯示代表範例中原始數位的虛擬數據表。 這些資料表包含下列各項:

  • 原始主鍵資料列的參考,對應至原始數位資料列(透過_id資料列)
  • 指出數據在原始數位中的位置
  • 數位每個元素的展開數據

資料表 「ExampleTable_Invoices」:

_id ExampleTable_Invoices_dim1_idx invoice_id 項目 price 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

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區