Overview
Atlas Data Federation は、フェデレーティッドデータベースインスタンスストアとして AWS S3 バケットをサポートします。データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスでAWS S3 バケットへのマッピングを定義する必要があります。
構成ファイル形式
AWS S3 バケットのフェデレーティッドデータベースインスタンスストアを定義するには、 JSONで構成パラメータを指定できます。構成にはAWSデータストアが含まれており、それがクエリ可能な仮想コレクションにマッピングされています。
AWS S3 バケット内のデータのJSON構成では、次のフィールドが使用されます。
1 { 2 "stores" : [ 3 { 4 "name" : "<string>", 5 "provider": "<string>", 6 "region" : "<string>", 7 "bucket" : "<string>", 8 "additionalStorageClasses" : ["<string>"], 9 "prefix" : "<string>", 10 "includeTags": <boolean>, 11 "delimiter": "<string>", 12 "public": <boolean> 13 } 14 ], 15 "databases" : [ 16 { 17 "name" : "<string>", 18 "collections" : [ 19 { 20 "name" : "<string>", 21 "dataSources" : [ 22 { 23 "storeName" : "<string>", 24 "path" : "<string>", 25 "defaultFormat" : "<string>", 26 "provenanceFieldName": "<string>", 27 "omitAttributes": true | false 28 } 29 ] 30 } 31 ], 32 "maxWildcardCollections" : <integer>, 33 "views" : [ 34 { 35 "name" : "<string>", 36 "source" : "<string>", 37 "pipeline" : "<string>" 38 } 39 ] 40 } 41 ] 42 }
Amazon Web Services S3 データストアのJSON構成には、 と のstores
databases
2 つの最上位オブジェクトが含まれています。
stores
stores
オブジェクトは、 フェデレーティッドデータベースインスタンスに関連付けられた各データ ストアを定義します。このストアは、 AWS S3 バケット内のファイルを取得します。 Data Federation は、stores
オブジェクト内で定義されたデータ ストアにのみアクセスできます。
stores
オブジェクトには次のフィールドが含まれています。
1 "stores" : [ 2 { 3 "name" : "<string>", 4 "provider" : "<string>", 5 "region" : "<string>", 6 "bucket" : "<string>", 7 "additionalStorageClasses" : ["<string>"], 8 "prefix" : "<string>", 9 "delimiter" : "<string>", 10 "includeTags": <boolean>, 11 "public": <boolean> 12 } 13 ]
以下の表は、stores
オブジェクトのフィールドを説明したものです。
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
配列 | 必須 | 各オブジェクトがフェデレーティッドデータベースインスタンスに関連付けるデータ ストアを表すオブジェクトの配列。ストアは、 AWS S3 バケット内のファイルを取得します。 Atlas Data Federation は、 オブジェクトで定義されたデータ | |
string | 必須 | フェデレーティッドデータベースインスタンスストアの名前。 | |
string | 必須 | データを保存する場所を定義します。AWS S3 バケットの場合、値は | |
string | 必須 | AWS S3 バケットがホストされているAWSリージョンの名前。有効なリージョン名のリストについては、 「 Amazon Web Services (AWS) 」を参照してください。 | |
string | 必須 | AWS S3 バケットの名前。構成されたAWS IAM 認証情報を使用して Atlas Data Federation がアクセスできるAWS S バケットの名前と完全に一致する必要があります。3 | |
配列 | 任意 | Amazon Web Services S3 ストレージクラス の配列。Atlas Data Federation は、これらのストレージクラスのファイルをクエリ結果に含めます。有効な値は以下のとおりです。
重要: 標準 ストレージクラス内のファイルはデフォルトでサポートされています。 | |
string | 任意 | AWS S3 バケット内のファイルのパスを検索するためにプレフィックスを追加します。 Atlas Data Federation は、 の値を 省略した場合、Atlas Data Federation はAWS S3 バケットのルートからすべてのファイルを検索します。 | |
string | 任意 | フェデレーティッドデータベースインスタンスインスタンス内のパス セグメントを区切る区切り文字を設定します。Data Federation は区切り文字を使用して、階層的なディレクトリ構造のAmazon Web Services S3 バケットを効率的に走査します。Amazon Web Services S3 オブジェクトキーでサポートされている任意の文字を区切り文字として指定できます。例、区切り文字としてアンダースコア( 省略した場合、デフォルトは | |
ブール値 | 任意 | 指定されたパス内のファイルのAWS S3 タグを追加のパーティション属性として使用するかどうかを決定します。有効な値は 省略した場合、デフォルトは
警告: | |
ブール値 | 任意 | バケットがパブリックかどうかを指定します。
省略した場合、デフォルトは |
databases
databases
オブジェクトは、stores
で定義された各フェデレーティッドデータベースインスタンス ストアとデータベース内の MongoDB コレクションの間のマッピングを定義します。
database
オブジェクトには次のフィールドが含まれています。
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 ]
以下の表は、database
オブジェクトのフィールドを説明したものです。
フィールド | タイプ | 必要性 | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
配列 | 必須 | 各オブジェクトがデータベース、そのコレクション、および任意でコレクション上のビューを表すオブジェクトの配列。各データベースには複数の | |||||||||||||
string | 必須 | Atlas Data Federation がデータ ストアに含まれるデータをマッピングするデータベースの名前。 | |||||||||||||
配列 | 必須 | 各オブジェクトが | |||||||||||||
string | 必須 | Atlas Data Federation が各 コレクション名に | |||||||||||||
配列 | 必須 | 各オブジェクトがコレクションでマッピングする | |||||||||||||
string | 必須 | ||||||||||||||
string | 必須 | Atlas Data Federation 以下の構造を持つ S3 バケット
パスに
詳細については、「S3 データのパスの定義」を参照してください。
同じ型の属性を指定する場合は、以下のいずれかを行います。
重要:ファイル形式が 省略した場合、Atlas Data Federation はファイルの数バイトを処理することでファイル タイプの検出を試みます。 | |||||||||||||
string | 任意 | 結果にドキュメントの出所が含まれるフィールドの名前。ストレージ構成でこの設定を指定すると、Atlas Data Federation は結果の各ドキュメントに対して次のフィールドを返します。
Atlas UI のビジュアル エディターを使用してこの設定を構成することはできません。 | |||||||||||||
ブール値 | 任意 | Atlas Data Federation がコレクション内のドキュメントに追加する属性(キーと値のペア)を省略するかどうかを指定するフラグ。次のいずれかの値を指定できます。
省略した場合、デフォルトは 以下に例を挙げます。
| |||||||||||||
integer | 任意 | 任意。データベース内のワイルドカード | |||||||||||||
配列 | 任意 | ||||||||||||||
string | 必須 | ビューの名前。 | |||||||||||||
string | 必須 | ビューのソースコレクションの名前。$sql ステージでビューを作成する場合は、 SQLステートメントでソースコレクションが指定されるため、このフィールドを省略する必要があります。 | |||||||||||||
配列 | 任意 |
|
S3 データストアの構成例
例
データセンターから収集されたデータを含む S3 バケット datacenter-alpha
を例に考えてみましょう。
|--metrics |--hardware
/metrics/hardware
パスには、データセンターのハードウェアから取得したメトリクスを含む JSON ファイルが格納されます。各ファイル名は、以下のようにそのファイルがカバーする 24 時間の期間の UNIX タイムスタンプ(ミリ秒単位)です。
/hardware/1564671291998.json
以下は次のように構成されます。
us-east-1
AWS リージョンのdatacenter-alpha
S3 バケットにフェデレーティッドデータベースインスタンス ストアを定義します。フェデレーティッドデータベースインスタンス ストアは、metrics
フォルダーパス内にあるデータファイルのみに明確に制限されています。hardware
フォルダーのファイルを MongoDB データベースdatacenter-alpha-metrics
とコレクションhardware
にマッピングします。構成マッピングには、ファイル名に含まれるタイムスタンプを取得するための解析ロジックが含まれています。
{ "stores" : [ { "name" : "datacenter-alpha", "provider" : "s3", "region" : "us-east-1", "bucket" : "datacenter-alpha", "additionalStorageClasses" : [ "STANDARD_IA" ], "prefix" : "/metrics", "delimiter" : "/" } ], "databases" : [ { "name" : "datacenter-alpha-metrics", "collections" : [ { "name" : "hardware", "dataSources" : [ { "storeName" : "datacenter-alpha", "path" : "/hardware/{date date}" } ] } ] } ] }
Atlas Data Federation は S3 バケットdatacenter-alpha
を解析し、/metrics/hardware/
配下にあるすべてのファイルを処理します。collections
はパス解析構文を使用して、ファイル名を各ドキュメントの date
フィールド(ISO-8601 日付)にマッピングします。一致する date
フィールドがドキュメント内に存在しない場合は、追加されます。
フェデレーティッドデータベースインスタンスに接続したユーザーは、 MongoDBクエリ言語とサポートされている集計を使用し、 コレクションを通じてAWS S3 datacenter-alpha-metrics.hardware
バケット内のデータを分析できます。