適用対象:
Azure Data Factory
Azure Synapse Analytics
ヒント
Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。
この記事では、Azure Data FactoryのコピーアクティビティとSynapse Analyticsのパイプラインを使ってMongoDBデータベースとデータをコピーする方法を概説しています。 この記事は、コピー アクティビティの概要を示しているコピー アクティビティの概要に関する記事に基づいています。
Note
このコネクタは、Microsoft Fabricの Data Factory でも使用できます。 Fabric固有の構成と機能については、Fabric MongoDB コネクタのドキュメントを参照してください。
重要
新しい MongoDB コネクタでは、ネイティブ MongoDB サポートが強化されています。 もしあなたのソリューションでレガシーなMongoDBコネクタを使っているなら、後方互換性のみ as-is サポートされているなら、 MongoDBコネクタ(レガシー)を参照してください。 このコネクターを使って、Azure DocumentDB(MongoDB互換性)とデータをコピーできます。
サポートされる機能
このMongoDBコネクタは以下の機能をサポートしています:
| サポートされる機能 | IR |
|---|---|
| Copy アクティビティ (ソース/シンク) | (1) (2) |
(1) Azure統合ランタイム (2) セルフホステッド統合ランタイム
ソースおよびシンクとしてサポートされているデータストアの一覧については、「 サポートされたデータストア」 の表をご覧ください。
具体的には、この MongoDB コネクタでは 4.2 までのバージョンがサポートされます。 4.2 より新しいバージョンが必要な作業の場合は、さらに包括的なサポートと機能を提供する MongoDB Atlas と MongoDB Atlas コネクタの使用を検討してください。
前提条件
データ ストアがオンプレミス ネットワーク、Azure仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、自身がホストする統合ランタイム を構成して接続する必要があります。
データ ストアがマネージド クラウド データ サービスの場合は、Azure Integration Runtimeを使用できます。 アクセスがファイアウォール規則で承認されている IP に制限されている場合は、許可リストに Azure Integration Runtime IP を追加できます。
Azure Data Factoryの 管理された仮想ネットワーク統合ランタイム機能を使用して、セルフホステッド統合ランタイムをインストールして構成することなく、オンプレミス ネットワークにアクセスすることもできます。
Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。
作業の開始
パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。
- データのコピー ツール
- Azure Portal
- .NET SDK
- Python SDK
- Azure PowerShell
- REST API
- Azure Resource Manager テンプレート
UIを使ってMongoDBにリンクされたサービスを作成します
Azure ポータル UI で MongoDB へのリンクされたサービスを作成するには、次の手順に従います。
Azure Data FactoryまたはSynapseのワークスペース内の「管理」タブに行き、「リンクされたサービス」を選択してください。 次に 「新作」を選択します:
- Azureデータファクトリー
- Azure Synapse
MongoDB を検索し、MongoDB コネクタを選択します。
サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。
コネクタの構成の詳細
次のセクションでは、MongoDB コネクタに固有の Data Factory エンティティを定義するために使用されるプロパティについて詳しく説明します。
リンクされたサービスのプロパティ
以下の表は、MongoDBリンクサービスでサポートされているプロパティを一覧にしています。
| プロパティ | 説明 | 必須 |
|---|---|---|
| 型 | タイププロパティを MongoDbV2 に設定します | はい |
| connectionString | MongoDBの接続文字列、例えばmongodb://[username:password@]host[:port][/[database][?options]]を指定します。 詳細については、MongoDBの接続文字列マニュアルを参照してください。 |
Azure Key Vaultに接続文字列を配置することもできます。 詳細については、Azure Key Vaultの「Store credentials」をご覧ください。 |はい | |データベース |アクセスしたいデータベースの名前。 |はい | |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データセットに対応しているプロパティを示しています:
| プロパティ | 説明 | 必須 |
|---|---|---|
| 型 | データセットのタイププロパティを次のように設定します: MongoDbV2Collection | はい |
| collectionName | MongoDB データベースのコレクション名前。 | はい |
例:
{
"name": "MongoDbDataset",
"properties": {
"type": "MongoDbV2Collection",
"typeProperties": {
"collectionName": "<Collection name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<MongoDB linked service name>",
"type": "LinkedServiceReference"
}
}
}
Copy アクティビティ のプロパティ
アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、MongoDB ソースとシンクでサポートされるプロパティの一覧を示します。
ソースとしての MongoDB
コピー活動 のソース セクションは以下のプロパティをサポートしています:
| プロパティ | 説明 | 必須 |
|---|---|---|
| 型 | コピー活動ソースのタイププロパティを次のように設定します: MongoDbV2Source | はい |
| フィルタ | クエリ演算子を使用して選択フィルターを指定します。 コレクション内のすべてのドキュメントを返すには、このパラメーターを省略するか、空のドキュメント ({}) を渡します。 | いいえ |
| cursorMethods.project | プロジェクションのドキュメントで返されるフィールドを指定します。 一致するドキュメント内のすべてのフィールドを返すには、このパラメーターを省略します。 | いいえ |
| cursorMethods.sort | 一致するドキュメントがクエリによって返される順序を指定します。 「cursor.sort()」を参照してください。 | いいえ |
| cursorMethods.limit | サーバーが返すドキュメントの最大数を指定します。 「cursor.limit()」を参照してください。 | いいえ |
| cursorMethods.skip | スキップするドキュメントの数と、MongoDB が結果を返すときの開始位置を指定します。 「cursor.skip()」を参照してください。 | いいえ |
| batchSize | MongoDB インスタンスからの応答の各バッチで返されるドキュメントの数を指定します。 ほとんどの場合、バッチサイズの変更はユーザーやアプリケーションには影響しません。 Azure Cosmos DBでは、各バッチのサイズが40MBを超えてはならず、これはbatchサイズとドキュメント数の合計です。ドキュメントサイズが大きい場合はこの値を下げてください。 | いいえ (既定値は 100) |
ヒント
このサービスは、厳格モードでの BSON ドキュメントの利用をサポートしています。 フィルタークエリはシェルモードではなく厳格モードに設定してください。 詳細については、 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
コピー アクティビティの 処理セクションは以下のプロパティをサポートしています:
| プロパティ | 説明 | 必須 |
|---|---|---|
| 型 | コピーアクティビティシンクの タイプ プロパティを MongoDbV2Sinkに設定します。 | はい |
| writeBehavior | MongoDB データを書き込む方法について説明します。 使用可能な値は、Insert、Upsert です。 upsert の動作は、同じ _id を持つドキュメントが既に存在する場合、そのドキュメントを置き換えます。それ以外の場合は、ドキュメントを挿入します。注: 元のドキュメントまたは列マッピングで _id が指定されていない場合は、サービスによってドキュメントの _id が自動的に生成されます。 つまり、upsert が期待どおりに動作するには、ドキュメントに ID があることを確認する必要があります。 |
いいえ (既定値は insert です) |
| writeBatchSize | writeBatchSizeプロパティは、各バッチで書く文書数を制御します。 パフォーマンスを向上させるには、値を上げてみてください。 ドキュメントサイズが大きい場合は、値を小さくしてみてください。 | いいえ (既定値は 10,000) |
| writeBatchTimeout | タイムアウトするまでに一括挿入操作の完了を待つ時間です。許容される値は期間です。 | いいえ (既定値は 00:30:00 - 30 分) |
ヒント
JSON文書 as-isインポートするには、「 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コネクターを使って簡単に:
- 2 つの MongoDB コレクション間でドキュメントをそのままコピーします。
- Azure Cosmos DB、Azure Blob Storage、Azure Data Lake ストア、サポートされているその他のファイル ベースのストアなど、さまざまなソースから MongoDB に JSON ドキュメントをインポートします。
- JSON ドキュメントを MongoDB コレクションからさまざまなファイル ベースのストアにエクスポートします。
このようなスキーマに依存しないコピーを実現するには、データセットの "構造" ("スキーマ" とも呼ばれる) のセクションと、コピー アクティビティでのスキーマ マッピングをスキップします。
MongoDB のデータ型マッピング
MongoDBからデータをコピーすると、サービスはMongoDBのデータ型から中間データ型への以下のマッピングを使用します。 コピーアクティビティがソーススキーマとデータ型をシンクにマッピングする方法については、「 スキーマとデータ型マッピング」をご覧ください。
| MongoDB のデータ型 | 中間サービス データ型 |
|---|---|
| 日付 | Int64 |
| オブジェクト識別子 | String |
| Decimal128 | String |
| タイムスタンプ | 最も重要な 32 ビット -> Int64 最下位の 32 ビット -> Int64 |
| String | String |
| Double | String |
| Int32 | Int64 |
| Int64 | Int64 |
| ブール値 | ブール値 |
| Null | Null |
| JavaScript | String |
| 正規表現 | String |
| 最小キー | Int64 |
| 最大キー | Int64 |
| Binary | String |
MongoDB コネクタのライフサイクルとアップグレード
次の表は、MongoDB コネクタのさまざまなバージョンのリリース ステージと変更ログを示しています。
| Version | リリース段階 | 変更ログ |
|---|---|---|
| MongoDB (レガシ) | Removed | 適用されません。 |
| MongoDB | GA バージョンあり | • 同等の MongoDB クエリのみをサポートします。 • Double は文字列データ型として読み取られます。 |
• 文字列データ型としても読み込みます。 |
MongoDB リンク サービスをアップグレードする
新しい MongoDB リンク サービスを作成し、リンク サービス プロパティを参照してそれを構成します。
関連コンテンツ
Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。