Docs Menu
Docs Home
/
MongoDB Atlas
/ /

AWS S3 バケット

項目一覧

  • S3 データストアの構成例
  • 構成フォーマット
  • stores
  • databases

Atlas Data Federation は、 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 バケット内のデータを分析できます。

Tip

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

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

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 コレクションの間のマッピングを定義します。
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].provider

データを保存する場所を定義します。AWS S3 バケットの場合、値はs3 である必要があります。

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 タグを追加のパーティション属性として使用するかどうかを決定します。有効な値は truefalse です。

省略した場合、デフォルトは false になります。

true に設定すると、Atlas Data Federation は次の処理を実行します。

  • 追加のパーティション属性としてS3タグを追加します。

  • タグ付けされたファイルに対して各タグを各ドキュメントに関連付ける新しい最上位の BSON 要素を追加します。

警告

true に設定すると、Atlas Data Federation は、タグを取得するために S3 への呼び出しを別で実行し、追加のパーティション属性のファイルを処理します。この動作は、パフォーマンスに影響を与える可能性があります。

stores.[n].public

任意。バケットがパブリックかどうかを指定します。

true に設定すると、Atlas Data Federation は S3 バケットにアクセスするために、設定された AWS IAM ロールを使用しません。false に設定すると、S3バケットがパブリックであっても、設定された AWS IAM には、そのバケットにアクセスするための権限が含まれている必要があります。

省略した場合、デフォルトは 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> にマッピングする前に、それらのファイルを検索して解析する方法を制御します。フェデレーティッドデータベースインスタンスは、path の先頭に stores.[n].prefix を付加して、検索するための完全パスを構築します。prefix パスからすべてのファイルとフォルダーを取得するには、/ を指定します。

以下の構造を持つ S3 バケット 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 を指定する場合は以下のようにします。

  • パーティション属性のデータ型を指定します。

  • パーティション属性の型が解析するデータ型と一致していることを確認します。

  • delimiter で指定された区切り文字を使用します。

同じ型の属性を指定する場合は、以下のいずれかを行います。

  • 属性の間に定数のセパレーターを追加します。

  • 正規表現を使用して、検索パターンを記述します。詳細については、「サポートされていない解析関数」を参照してください。

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
AWS リージョン(stores.[n].region
bucket
Amazon Web Services 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 は、omitAttributesfalse の場合、キーと値のペアがドキュメントに既に存在するかどうかにかかわらず、このファイル内のドキュメントに属性 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 ステージを使用してビューを作成することもできます。

戻る

データ ストアを定義する