Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Azure BLOB ストレージ

項目一覧

  • Azure BLOB ストレージ データストアの構成例
  • 構成フォーマット
  • stores
  • databases

Atlas Data Federation は、フェデレーティッドデータベースインスタンス ストアとして Azure Blob Storage コンテナをサポートします。 データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで Azure Blog ストレージ コンテナへのマッピングを定義する必要があります。

注意

このページでは、ブロブをファイルとして、区切り文字で区切られたプレフィックスをディレクトリとして扱いますが、これらのブロブ ストレージ サービスは実際にはファイルシステムではなく、すべての場合にハードドライブ上のファイルと同じ動作をするわけではありません。

データセンターから収集されたデータを含む Azure Blob Storage コンテナ 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 コンテナ内のデータを分析できます。

フェデレーティッドデータベースインスタンス構成の形式は次のとおりです。

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
stores
storesオブジェクトは、フェデレーティッドデータベースインスタンスに関連付けられた各データ ストアを定義します。 フェデレーティッドデータベースインスタンスは、 Amazon Web Services S3バケットまたはAzure Blob Storage コンテナ内のファイル、 Atlasクラスター内のドキュメント、または一般にアクセス可能なURLに保存されているファイルを取得します。 Data Federation は、 storesオブジェクトで定義されたデータ ストアにのみアクセスできます。
databases
databases オブジェクトは、stores で定義された各フェデレーティッドデータベースインスタンス ストアとデータベース内の MongoDB コレクションの間のマッピングを定義します。
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

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

stores.[n].provider

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

stores.[n].region

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

stores.[n].serviceURL

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

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

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

stores.[n].containerName

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

stores.[n].prefix

任意。 プレフィックス「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

任意。 フェデレーティッドデータベースインスタンス ストア内の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 になります。

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

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

databases.[n].collections

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

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

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

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

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

Atlas Data Federation がstoreName <collection>マッピングする方法を制御します。 Atlas Data Federation は、 stores.[n].prefixの先頭にpathを付加して、検索するための完全パスを構築します。 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

任意。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

注意

ファイル形式が CSV または TSV の場合、データにヘッダー行を含める必要があります。詳細については、「CSV および TSV」を参照してください。

省略した場合、Atlas Data Federation はファイルの数バイトを処理することでファイル タイプの検出を試みます。

Tip

以下も参照してください。

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

結果にドキュメントの出所が含まれるフィールドの名前。ストレージ構成でこの設定を指定すると、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 は属性を追加します。

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

databases.[n].maxWildcardCollections

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

databases.[n].views

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

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

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

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

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

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

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

戻る

制限