Atlas Data Federation は、フェデレーティッドデータベースインスタンス ストアとして Azure Blob Storage コンテナをサポートします。 データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで Azure Blog ストレージ コンテナへのマッピングを定義する必要があります。
注意
このページでは、ブロブをファイルとして、区切り文字で区切られたプレフィックスをディレクトリとして扱いますが、これらのブロブ ストレージ サービスは実際にはファイルシステムではなく、すべての場合にハードドライブ上のファイルと同じ動作をするわけではありません。
構成ファイル形式
Azure Blob Storageコンテナのフェデレーティッドデータベースインスタンスストアを定義するには、 JSON形式で構成パラメータを指定できます。構成にはAzure Blob Storage データ ストアが含まれており、それがクエリ可能な仮想コレクションにマッピングされています。
Azure Blog Storage コンテナ内のデータのJSON構成では、次のフィールドが使用されます。
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "region" : "<string>", 7 "serviceURL" : "<string>", 8 "containerName" : "<string>", 9 "delimiter" : "<string>", 10 "prefix": "<string>", 11 "public": <boolean> 12 } 13 ], 14 "databases" : [ 15 { 16 "name" : "<string>", 17 "collections" : [ 18 { 19 "name" : "<string>", 20 "dataSources" : [ 21 { 22 "storeName" : "<string>", 23 "path" : "<string>", 24 "defaultFormat" : "<string>", 25 "provenanceFieldName": "<string>", 26 "omitAttributes": <boolean> 27 } 28 ] 29 } 30 ], 31 "maxWildcardCollections" : <integer>, 32 "views" : [ 33 { 34 "name" : "<string>", 35 "source" : "<string>", 36 "pipeline" : "<string>" 37 } 38 ] 39 } 40 ] 41 } 42
Azure BLOB ストレージのJSON構成には、 と のstoresdatabases 2 つの最上位オブジェクトが含まれています。
stores
storesオブジェクトは、 フェデレーティッドデータベースインスタンスに関連付けられた各データ ストアを定義します。フェデレーティッドデータベースインスタンスストアは、 Azure Blog ストレージコンテナ内のファイルをキャプチャします。Data Federation は、storesオブジェクトで定義されたデータ ストアにのみアクセスできます。
storesオブジェクトには次のフィールドが含まれています。
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "region" : "<string>", 6 "serviceURL" : "<string>", 7 "containerName" : "<string>", 8 "delimiter": "<string", 9 "prefix" : "<string>", 10 "public": <boolean> 11 } 12 ]
次の表は、店舗オブジェクトのフィールドを説明しています。
フィールド | タイプ | 必要性 | 説明 | ||||
|---|---|---|---|---|---|---|---|
配列 | 必須 | 各オブジェクトがフェデレーティッドデータベースインスタンスに関連付けるデータ ストアを表すオブジェクトの配列。 フェデレーティッドデータベースインスタンス ストアは以下をキャプチャします。
Atlas Data Federation は、 | |||||
string | 必須 | フェデレーティッドデータベースインスタンスストアの名前。 | |||||
string | 必須 | データを保存する場所を定義します。 Azure Blob Storage コンテナの場合、値は | |||||
string | 必須 | データが保存されるAzureリージョンの名前。 | |||||
string | 必須 | Blob コンテナを含む Azure Blog ストレージ アカウントの URL。 上記で、 | |||||
string | 必須 | ファイルを含む Azure Blog ストレージ コンテナの名前。 | |||||
string | 任意 | プレフィックス「Atlas Data Federation」は、 Azure Blog ストレージ内のファイルを検索するときに適用されます。 たとえば、次の構造を持つ Azure Blog Storage コンテナ フェデレーティッドデータベースインスタンスストアは、 省略した場合、Atlas Data Federation は Azure Blog ストレージ コンテナのルートからすべてのファイルを検索します。 | |||||
string | 任意 | フェデレーティッドデータベースインスタンスストア内の 省略した場合、デフォルトは | |||||
ブール値 | 任意 | Azure Blog ストレージコンテナがパブリックかどうかを指定します。
省略した場合、デフォルトは |
databases
databases オブジェクトは、stores で定義された各フェデレーティッドデータベースインスタンス ストアとデータベース内の MongoDB コレクションの間のマッピングを定義します。
databasesオブジェクトには次のフィールドが含まれています。
1 "databases" : [ 2 { 3 "name" : "<string>", 4 "collections" : [ 5 { 6 "name" : "<string>", 7 "dataSources" : [ 8 { 9 "storeName" : "<string>", 10 "defaultFormat" : "<string>", 11 "path" : "<string>", 12 "provenanceFieldName": "<string>", 13 "omitAttributes": <boolean> 14 } 15 ] 16 } 17 ], 18 "maxWildcardCollections" : <integer>, 19 "views" : [ 20 { 21 "name" : "<string>", 22 "source" : "<string>", 23 "pipeline" : "<string>" 24 } 25 ] 26 } 27 ]
以下の表は、データベースオブジェクトのフィールドを説明したものです。
フィールド | タイプ | 必要性 | 説明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
配列 | 必須 | 各オブジェクトがデータベース、そのコレクション、および任意でコレクション上のビューを表すオブジェクトの配列。各データベースには複数の | |||||||||||||
string | 必須 | Atlas Data Federation がデータ ストアに含まれるデータをマッピングするデータベースの名前。 | |||||||||||||
配列 | 必須 | 各オブジェクトが | |||||||||||||
string | 必須 | Atlas Data Federation が各 コレクション名に | |||||||||||||
配列 | 必須 | 各オブジェクトがコレクションでマッピングする | |||||||||||||
string | 必須 | ||||||||||||||
string | 必須 | Atlas Data Federation が たとえば、次の構造を持つ Azure Blog Storage コンテナ の
パスに
詳細については、「S3 データのパスの定義」を参照してください。
同じ型の属性を指定する場合は、以下のいずれかを行います。
| |||||||||||||
string | 任意 |
defaultFormatフィールドでは次の値が有効です。
詳細については、サポートされているデータ形式を参照してください | |||||||||||||
string | 必須 | 結果にドキュメントの出所が含まれるフィールドの名前。ストレージ構成でこの設定を指定すると、Atlas Data Federation は結果の各ドキュメントに対して次のフィールドを返します。
| |||||||||||||
ブール値 | 必須 | Atlas Data Federation がコレクションに追加する属性(キーと値のペア)を省略するかどうかを指定するフラグ。 次のいずれかの値を指定できます。
省略した場合、デフォルトは 例: | |||||||||||||
integer | 任意 | データベース内のワイルドカード * コレクションの最大数。各ワイルドカードコレクションには、データソース を1 つだけ含めることができます。値は、両端を含む 1 から 1000 までです。省略した場合、デフォルトは 100 になります。 | |||||||||||||
配列 | 必須 | ||||||||||||||
string | 必須 | ビューを識別するラベル。 | |||||||||||||
string | 必須 | ビューのソースコレクションの名前。$sql ステージでビューを作成する場合は、 SQLステートメントでソースコレクションが指定されるため、このフィールドを省略する必要があります。 | |||||||||||||
配列 | 任意 | コレクションに適用する |
Azure BLOB ストレージ データストアの構成例
例
データセンターから収集されたデータを含む Azure Blog ストレージ コンテナdatacenter-alphaを例に考えてみましょう。
|--metrics |--hardware
/metrics/hardware パスには、データセンターのハードウェアから取得したメトリクスを含む JSON ファイルが格納されます。各ファイル名は、以下のようにそのファイルがカバーする 24 時間の期間の UNIX タイムスタンプ(ミリ秒単位)です。
/hardware/1564671291998.json
以下は次のように構成されます。
eastus2Azureリージョンのdatacenter-alphaAzure Blob Storage コンテナにフェデレーティッドデータベースインスタンス ストアを定義します。 フェデレーティッドデータベースインスタンス ストアには、metricsディレクトリ パスにデータファイルのみを含めるように明確に制限されています。hardwareディレクトリのファイルを MongoDB databasedatacenter-alpha-metricsとコレクションhardwareにマッピングします。 構成マッピングには、ファイル名に含まれるタイムスタンプを取得するための解析ロジックが含まれています。
{ "stores" : [ { "name" : "datacenter", "provider" : "azure", "region" : "eastus2", "containerName" : "datacenter-alpha", "serviceURL" : "https://mystorageaccount.blob.core.windows.net/" } ], "databases" : [ { "name" : "datacenter-alpha-metrics", "collections" : [ { "name" : "hardware", "dataSources" : [ { "storeName" : "datacenter", "path" : "/hardware/{date date}" } ] } ] } ] }
Atlas Data Federation は Azure Blog Storage コンテナdatacenter-alphaを解析し、 /metrics/hardware/配下にあるすべてのファイルを処理します。 collectionsはパス解析構文を使用して、ファイル名を各ドキュメントのdateフィールド(ISO-8601 日付)にマッピングします。 一致するdateフィールドがドキュメント内に存在しない場合、Atlas Data Federation はそれを追加します。
フェデレーティッドデータベースインスタンスに接続したユーザーは、MongoDB クエリ言語とサポートされている集計を使用し、 datacenter-alpha-metrics.hardwareコレクションを通して Azure Blob Storage コンテナ内のデータを分析できます。