Docs Menu
Docs Home
/ /

Azure BLOB ストレージ

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オブジェクトは、 フェデレーティッドデータベースインスタンスに関連付けられた各データ ストアを定義します。フェデレーティッドデータベースインスタンスストアは、 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 ]

次の表は、店舗オブジェクトのフィールドを説明しています。

フィールド
タイプ
必要性
説明
stores

配列

必須

各オブジェクトがフェデレーティッドデータベースインスタンスに関連付けるデータ ストアを表すオブジェクトの配列。 フェデレーティッドデータベースインスタンス ストアは以下をキャプチャします。

  • Azure BLOB ストレージ コンテナ内のファイル

  • Atlas クラスター内のドキュメント

  • 一般にアクセス可能なURLに保存されているファイル。

Atlas Data Federation は、 storesオブジェクトで定義されたデータ ストアにのみアクセスできます。

stores.[n].name

string

必須

フェデレーティッドデータベースインスタンスストアの名前。databases.[n].collections.[n].dataSources.[n].storeNameフィールドは、マッピング構成の一部としてこの値を参照します。

stores.[n].provider

string

必須

データを保存する場所を定義します。 Azure Blob Storage コンテナの場合、値はazureである必要があります。

stores.[n].region

string

必須

データが保存されるAzureリージョンの名前。

stores.[n].serviceURL

string

必須

Blob コンテナを含む Azure Blog ストレージ アカウントの URL。 serviceURLは次の形式である必要があります。

https://<storage-account-name>.blob.core.windows.net/

上記で、 storage-account-nameは Azure Blog ストレージ アカウントの名前です。

stores.[n].containerName

string

必須

ファイルを含む Azure Blog ストレージ コンテナの名前。

stores.[n].prefix

string

任意

プレフィックス「Atlas Data Federation」は、 Azure Blog ストレージ内のファイルを検索するときに適用されます。

たとえば、次の構造を持つ Azure Blog Storage コンテナmetricsを考えてみましょう。

metrics
|--hardware
|--software
|--computed

フェデレーティッドデータベースインスタンスストアは、prefix の値を databases.[n].collections.[n].dataSources.[n].path の先頭に追加して、取り込むファイルの完全パスを作成します。prefix/software に設定すると、フェデレーティッドデータベースインスタンスストアを使用するすべての databases オブジェクトがサブパス /software のみに制限されます。

省略した場合、Atlas Data Federation は Azure Blog ストレージ コンテナのルートからすべてのファイルを検索します。

stores.[n].delimiter

string

任意

フェデレーティッドデータベースインスタンスストア内の databases.[n].collections.[n].dataSources.[n].path セグメントを区切る区切り文字。Data Federation は区切り文字を使用して、階層的なディレクトリ構造のAzure Blog ストレージ コンテナを効率的に走査します。

省略した場合、デフォルトは "/" になります。

stores.[n].public

ブール値

任意

Azure Blog ストレージコンテナがパブリックかどうかを指定します。

trueに設定すると、Atlas Data Federation は Azure Blog ストレージにアクセスするために、構成されたAzure Service Principal を使用しません。 falseに設定されている場合、Blob コンテナが公開されていれも、設定されたサービス プリンシパルに、Blob コンテナにアクセスするための権限が含まれている必要があります。

省略した場合、デフォルトは false になります。

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]

以下の表は、データベースオブジェクトのフィールドを説明したものです。

フィールド
タイプ
必要性
説明
databases

配列

必須

各オブジェクトがデータベース、そのコレクション、および任意でコレクション上のビューを表すオブジェクトの配列。各データベースには複数の collections および views オブジェクトを保持できます。

databases.[n].name

string

必須

Atlas Data Federation がデータ ストアに含まれるデータをマッピングするデータベースの名前。

databases.[n].collections

配列

必須

各オブジェクトが stores フェデレーティッドデータベースインスタンスストアにマッピングするコレクションとデータソースを表すオブジェクトの配列。

databases.[n].collections.[n].name

string

必須

Atlas Data Federation が各 databases.[n].collections.[n].dataSources.[n].storeName に含まれるデータをマッピングするコレクションの名前。配列内の各オブジェクトは、コレクションと stores 配列内のオブジェクトとの間のマッピングを表します。

コレクション名に * を指定し、pathフィールドに collectionName() 関数を指定することで、ファイルパスからコレクション名を動的に生成できます。

databases.[n].collections.[n].dataSources

配列

必須

各オブジェクトがコレクションでマッピングするstoresフェデレーティッドデータベースインスタンスストアを表すオブジェクトの配列。

databases.[n].collections.[n].dataSources.[n].storeName

string

必須

<collection> にマッピングするフェデレーティッドデータベースインスタンスストアの名前。namestores配列内のオブジェクトの と一致する必要があります。

databases.[n].collections.[n].dataSources.[n].path

string

必須

Atlas Data Federation が storeName 内のファイルを検索して解析し、その後にファイルを <collection> にマッピングする方法を制御します。Atlas Data Federation は、path の先頭に stores.[n].prefix を付加して、検索するための完全パスを構築します。prefix パスからすべてのファイルとディレクトリを取得するには、/ を指定します。

たとえば、次の構造を持つ Azure Blog Storage コンテナmetricsを考えてみましょう。

metrics
|--hardware
|--software
|--computed

path/は、Atlas Data Federation が バケット内のすべてのファイルとディレクトリを検索するように指示します。metrics

path/hardware の場合、Atlas Data Federation は、取り込むファイルのパスのみを検索します。

prefixsoftware の場合、Atlas Data Federation は、パス /software/computed 上にあるファイルのみを検索します。

パスに*ワイルドカード文字を追加すると、Atlas Data Federation はパスのそのポイントからのすべてのファイルとディレクトリを含めます。 たとえば、 /software/computed*/software/computed-detailed/software/computedArchive/software/computed/errorsなどのファイルと一致します。

path は、ファイル名を解析するために次のような追加構文をサポートします。

  • ファイル名からドキュメントフィールドの生成。

  • 正規表現を使用したフィールド生成の制御。

  • タイムスタンプでファイル名をバケット化するための境界の設定。

詳細については、「S3 データのパスの定義」を参照してください。

pathを指定する場合

同じ型の属性を指定する場合は、以下のいずれかを行います。

  • 属性の間に定数のセパレーターを追加します。

  • 正規表現を使用して、検索パターンを記述します。詳細については、「サポートされていない解析関数」を参照してください。

databases.[n].collections.[n].dataSources.[n].defaultFormat

string

任意

databases.[n].collections.[n].dataSources.[n].storeName を検索中に拡張子のないファイルを検出した場合に Atlas Data Federation が想定するデフォルトの形式。

defaultFormatフィールドでは次の値が有効です。

.json .json.gz .bson .bson.gz .avro .avro.gz .orc .tsv .tsv.gz .csv .csv.gz .parquet

詳細については、サポートされているデータ形式を参照してください

databases.[n].collections.[n].dataSources.[n].provenanceFieldName

string

必須

結果にドキュメントの出所が含まれるフィールドの名前。ストレージ構成でこの設定を指定すると、Atlas Data Federation は結果の各ドキュメントに対して次のフィールドを返します。

フィールド名
説明

provider

フェデレーティッドデータベースインスタンスストレージ構成のプロバイダー(stores.[n].provider )。

region

Azureリージョン(stores.[n].region )。

serviceURL

Blob コンテナを含むAzure Blog ストレージ アカウントのURL (stores.[n].serviceURL )。

containerName

Azure Blog Storageコンテナの名前(stores.[n].containerName

key

ファイルへのパス(databases.[n].collections.[n].dataSources.[n].path )。

重要: Atlas UIのビジュアル エディターを使用してこの設定を構成することはできません。

databases.[n].collections.[n].dataSources.[n].omitAttributes

ブール値

必須

Atlas Data Federation がコレクションに追加する属性(キーと値のペア)を省略するかどうかを指定するフラグ。 次のいずれかの値を指定できます。

  • false - 属性を追加する

  • true - 属性を省略する

省略した場合、デフォルトはfalseになり、Atlas Data Federation は属性を追加します。

例: /employees/949-555-0195.json という名前のファイルに path /employees/{phone string} を構成する という名前のファイルを考えてみましょう。omitAttributesfalse に設定すると、Atlas Data Federation は属性 phone: 949-555-0195 をドキュメントに追加します。omitAttributestrue に設定すると、Atlas Data Federation は仮想コレクション内のドキュメントにこの属性を追加しません。

databases.[n].maxWildcardCollections

integer

任意

データベース内のワイルドカード * コレクションの最大数。各ワイルドカードコレクションには、データソース を1 つだけ含めることができます。値は、両端を含む 1 から 1000 までです。省略した場合、デフォルトは 100 になります。

databases.[n].views

配列

必須

各オブジェクトがコレクション上の集計パイプラインを表すオブジェクトの配列。ビューの詳細については、「ビュー」を参照してください。

databases.[n].views.[n].name

string

必須

ビューを識別するラベル。

databases.[n].views.[n].source

string

必須

ビューのソースコレクションの名前。$sql ステージでビューを作成する場合は、 SQLステートメントでソースコレクションが指定されるため、このフィールドを省略する必要があります。

databases.[n].views.[n].pipeline

配列

任意

コレクションに適用する source集計パイプラインラインステージ 。$sql ステージを使用してビューを作成することもできます。

データセンターから収集されたデータを含む Azure Blog ストレージ コンテナdatacenter-alphaを例に考えてみましょう。

|--metrics
|--hardware

/metrics/hardware パスには、データセンターのハードウェアから取得したメトリクスを含む JSON ファイルが格納されます。各ファイル名は、以下のようにそのファイルがカバーする 24 時間の期間の UNIX タイムスタンプ(ミリ秒単位)です。

/hardware/1564671291998.json

以下は次のように構成されます。

  • eastus2 Azureリージョンのdatacenter-alpha Azure Blob Storage コンテナにフェデレーティッドデータベースインスタンス ストアを定義します。 フェデレーティッドデータベースインスタンス ストアには、 metricsディレクトリ パスにデータファイルのみを含めるように明確に制限されています。

  • hardwareディレクトリのファイルを MongoDB database datacenter-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 コンテナ内のデータを分析できます。

戻る

制限

項目一覧