Overview
Atlas Data Federation は、 AWS S3 バケットをフェデレーティッドデータベースインスタンスの保存としてサポートします。データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで AWS S3 バケットへのマッピングを定義する必要があります。
構成ファイル形式
AWS S3 バケット用のフェデレーティッドデータベースインスタンスストアを定義するには、JSON で構成パラメータを指定できます。構成には AWS データストアが含まれており、それをクエリ可能な仮想コレクションにマッピングします。
JSON 設定は、AWS S3 バケット内のデータに対して、以下のフィールドを使用します。
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構成には、 と のstoresdatabases 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 | 必須 | AWSS3 バケットがホストされているAWS リージョンの名前。有効なリージョン名のリストについては、Amazon Web Services(AWS)を参照してください。 | |
string | 必須 | AWS S3 バケットの名前。Atlas Data Federation が構成された AWS IAM 認証情報でアクセスできる AWS S3 バケットの名前と完全に一致する必要があります。 | |
配列 | 任意 | 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-1AWS リージョンのdatacenter-alphaS3 バケットにフェデレーティッドデータベースインスタンス ストアを定義します。フェデレーティッドデータベースインスタンス ストアは、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 クエリ言語とサポートされている集計を使用し、datacenter-alpha-metrics.hardware コレクションを通して AWS S3 バケット内のデータを分析できます。