AWS S3 バケット
Atlas Data Federation は、 S3 バケットをフェデレーティッドデータベースインスタンス ストアとしてサポートします。データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで S3 バケットへのマッピングを定義する必要があります。
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 は S 3バケットdatacenter-alpha
を解析し、 /metrics/hardware/
配下にあるすべてのファイルを処理します。 collections
はパス解析構文を使用して、ファイル名を各ドキュメントのdate
フィールド(ISO- 8601日付)にマッピングします。 一致するdate
フィールドがドキュメント内に存在しない場合は、追加されます。
フェデレーティッドデータベースインスタンスに接続したユーザーは、MongoDB クエリ言語とサポートされている集計を使用し、datacenter-alpha-metrics.hardware
コレクションを通して 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 }
stores
stores
オブジェクトは、フェデレーティッドデータベースインスタンスに関連付けられた各データストアを定義します。フェデレーティッドデータベースインスタンス ストアは、S3 バケット内のファイル、Atlas クラスター内のドキュメント、または一般にアクセス可能な URL に保存されているファイルを取得します。Data Federation は、stores
オブジェクトで定義されたデータ ストアにのみアクセスできます。databases
databases
オブジェクトは、stores
で定義された各フェデレーティッドデータベースインスタンス ストアとデータベース内の MongoDB コレクションの間のマッピングを定義します。
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
各オブジェクトがフェデレーティッドデータベースインスタンスに関連付けるデータ ストアを表すオブジェクトの配列。フェデレーティッドデータベースインスタンス ストアは、S3 バケット内のファイル、Atlas クラスター内のドキュメント、または一般にアクセス可能な URL に保存されているファイルを取得します。Atlas Data Federation は、
stores
オブジェクトで定義されたデータ ストアにのみアクセスできます。
stores.[n].name
フェデレーティッドデータベースインスタンス ストアの名前。
databases.[n].collections.[n].dataSources.[n].storeName
フィールドは、マッピング構成の一部としてこの値を参照します。
stores.[n].region
S3 バケットがホストされている AWS リージョンの名前。有効なリージョン名のリストについては、「Amazon Web Services(AWS)」を参照してください。
stores.[n].bucket
AWS S3 バケットの名前。構成された AWS IAM 認証情報を使用して Atlas Data Federation がアクセスできる S3 バケットの名前と完全に一致する必要があります。
stores.[n].additionalStorageClasses
任意。AWS S3 ストレージクラスの配列。Atlas Data Federation は、これらのストレージ クラスのファイルをクエリ結果に含めます。有効な値は以下のとおりです。
INTELLIGENT_TIERING
: インテリジェント階層化ストレージクラスにファイルを含めます。STANDARD_IA
: 標準~低頻度のアクセスストレージ クラスのファイルを含めます。注意
標準ストレージ クラス内のファイルはデフォルトでサポートされています。
stores.[n].prefix
任意。プレフィックス「Atlas Data Federation」は、S3 バケット内のファイルを検索するときに適用されます。
以下の構造を持つ S3 バケット
metrics
を例に考えてみましょう。metrics |--hardware |--software |--computed フェデレーティッドデータベースインスタンス ストアは、
prefix
の値をdatabases.[n].collections.[n].dataSources.[n].path
の先頭に追加して、取り込むファイルの完全なパスを作成します。prefix
を/software
に設定すると、フェデレーティッドデータベースインスタンス ストアを使用するすべてのdatabases
オブジェクトがサブパス/software
のみに制限されます。省略した場合、Atlas Data Federation は S3 バケットのルートからすべてのファイルを検索します。
stores.[n].delimiter
任意。 フェデレーティッドデータベースインスタンス ストア内の
databases.[n].collections.[n].dataSources.[n].path
セグメントを区切る区切り文字。 Data Federation は区切り文字を使用して、階層的なディレクトリ構造のS 3バケットを効率的に走査します。 S3 オブジェクト キー でサポートされている任意の文字を指定できます を区切り文字として使用します。For example, you can specify an underscore (_
) or a plus sign (+
) or multiple characters such as double underscores (__
) as the delimiter.省略した場合、デフォルトは
"/"
になります。
stores.[n].includeTags
任意。指定されたパス内のファイルの S3 タグを追加のパーティション属性として使用するかどうかを決定します。有効な値は
true
とfalse
です。省略した場合、デフォルトは
false
になります。true
に設定すると、Atlas Data Federation は次の処理を実行します。追加のパーティション属性としてS3タグを追加します。
タグ付けされたファイルに対して各タグを各ドキュメントに関連付ける新しい最上位の BSON 要素を追加します。
警告
true
に設定すると、Atlas Data Federation は、タグを取得するために S3 への呼び出しを別で実行し、追加のパーティション属性のファイルを処理します。この動作は、パフォーマンスに影響を与える可能性があります。
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>
にマッピングする前に、それらのファイルを検索して解析する方法を制御します。フェデレーティッドデータベースインスタンスは、path
の先頭にstores.[n].prefix
を付加して、検索するための完全パスを構築します。prefix
パスからすべてのファイルとフォルダーを取得するには、/
を指定します。以下の構造を持つ S3 バケット
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
を指定する場合は以下のようにします。パーティション属性のデータ型を指定します。
パーティション属性の型が解析するデータ型と一致していることを確認します。
delimiter
で指定された区切り文字を使用します。
同じ型の属性を指定する場合は、以下のいずれかを行います。
属性の間に定数のセパレーターを追加します。
正規表現を使用して、検索パターンを記述します。詳細については、「サポートされていない解析関数」を参照してください。
任意。
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
AWSリージョン(
stores.[n].region
)bucket
AWS S3 バケットの名前(
stores.[n].bucket
)key
ドキュメントへのパス(
databases.[n].collections.[n].dataSources.[n].path
)lastModified
ドキュメントが最後に変更された日時。
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
という名前のファイルを考えてみます。Atlas Data Federation は、omitAttributes
がfalse
の場合、キーと値のペアがドキュメントに既に存在するかどうかにかかわらず、このファイル内のドキュメントに属性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
ステージを使用してビューを作成することもできます。