Azure BLOB ストレージ
Atlas Data Federation は、フェデレーティッドデータベースインスタンス ストアとして Azure Blob Storage コンテナをサポートします。 データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで Azure Blog ストレージ コンテナへのマッピングを定義する必要があります。
注意
このページでは、ブロブをファイルとして、区切り文字で区切られたプレフィックスをディレクトリとして扱いますが、これらのブロブ ストレージ サービスは実際にはファイルシステムではなく、すべての場合にハードドライブ上のファイルと同じ動作をするわけではありません。
Azure BLOB ストレージ データストアの構成例
例
データセンターから収集されたデータを含む 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 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 コンテナ内のデータを分析できます。
構成フォーマット
フェデレーティッドデータベースインスタンス構成の形式は次のとおりです。
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 コレクションの間のマッピングを定義します。
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
フェデレーティッドデータベースインスタンス ストアの名前。
databases.[n].collections.[n].dataSources.[n].storeName
フィールドは、マッピング構成の一部としてこの値を参照します。
stores.[n].serviceURL
Blob コンテナを含む Azure Blog ストレージ アカウントの URL。
serviceURL
は次の形式である必要があります。https://<storage-account-name>.blob.core.windows.net/ 上記で、
storage-account-name
は 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 ストレージ コンテナを効率的に走査します。省略した場合、デフォルトは
"/"
になります。
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].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 は、取り込むファイルのパスのみを検索します。prefix
がsoftware
の場合、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 はファイルの数バイトを処理することでファイル タイプの検出を試みます。
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
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
という名前のファイルについて考えてみましょう。omitAttributes
をfalse
に設定すると、Atlas Data Federation はドキュメントに属性phone: 949-555-0195
を追加します。omitAttributes
をtrue
に設定すると、Atlas Data Federation は仮想コレクション内のドキュメントにこの属性を追加しません。
databases.[n].maxWildcardCollections
任意。データベース内のワイルドカード
*
コレクションの最大数。各ワイルドカード コレクションには、データソースを 1 つだけ含めることができます。値は、両端を含む1
から1000
までです。省略した場合、デフォルトは100
になります。
databases.[n].views.[n].source
ビューのソース コレクションの名前。
$sql
ステージでビューを作成する場合は、SQL ステートメントでソース コレクションが指定されるため、このフィールドを省略する必要があります。
databases.[n].views.[n].pipeline
source
コレクションに適用する 集計パイプラインステージ。$sql
ステージを使用してビューを作成することもできます。