Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Atlas Cluster

項目一覧

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

Atlas Data Federation は、Atlas クラスターをフェデレーティッドデータベースインスタンス ストアとしてサポートします。 データに対してクエリを実行するには、フェデレーティッドデータベースインスタンスで Atlas クラスターへのマッピングを定義する必要があります。

重要

ストレージ構成内の情報は MongoDB の内部で表示され、Atlas Data Federation のパフォーマンスを監視して改善するための運用データとして保存されます。 したがって、構成では PIIを使用しないことをお勧めします。

metrics.hardwareコレクションにデータを含む、 myDataCenterという名前の M10以上の Atlas クラスターを検討します。 metrics.hardwareコレクションには、データセンターのハードウェアから派生したメトリクスを含む JSON ドキュメントが含まれています。 以下は次のように構成されます。

  • 指定されたプロジェクト内のmyDataCenterという名前の Atlas クラスターをフェデレーティッドデータベースインスタンス ストアとして指定します。

  • Atlas クラスター内のmetrics.hardwareコレクションのドキュメントを、 ストレージ構成内のdataCenter.inventoryコレクションにマッピングします。

{
"stores" : [
{
"name" : "atlasClusterStore",
"provider" : "atlas",
"clusterName" : "myDataCenter",
"projectId" : "5e2211c17a3e5a48f5497de3"
}
],
"databases" : [
{
"name" : "dataCenter",
"collections" : [
{
"name" : "inventory",
"dataSources" : [
{
"storeName" : "atlasClusterStore",
"database" : "metrics",
"collection" : "hardware"
}
]
}
]
}
]
}

Atlas Data Federation は、 metrics.hardwareコレクション内のすべてのドキュメントをストレージ構成のdataCenter.inventoryコレクションにマッピングします。

フェデレーティッドデータベースインスタンスに接続したユーザーは、MongoDB クエリ言語とサポートされている集計を使用し、 dataCenter.inventoryコレクションを通して Atlas クラスター内のデータを分析できます。 クエリを実行すると、クエリはまず Atlas Data Federation に送信されます。 そのため、Atlas クラスターでサポートされているが Atlas Data Federation ではサポートされていない集計クエリを実行すると、クエリは失敗します。 Data Federation でサポートされているコマンドとサポートされていないコマンドの詳細については、 サポートされている MongoDB コマンド を参照してください。

Tip

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

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

1{
2 "stores" : [
3 {
4 "name" : "<string>",
5 "provider": "<string>",
6 "clusterName": "<string>",
7 "projectId": "<string>",
8 "readPreference": {
9 "mode": "<string>",
10 "tagSets": [
11 [{"name": "<string>", "value": "<string>"},...],
12 ...
13 ],
14 "maxStalenessSeconds": <int>
15 }
16 }
17 ],
18 "databases" : [
19 {
20 "name" : "<string>",
21 "collections" : [
22 {
23 "name" : "<string>",
24 "dataSources" : [
25 {
26 "storeName" : "<string>",
27 "database" : "<string>",
28 "databaseRegex": "<string>",
29 "collection" : "<string>",
30 "collectionRegex" : "<string>",
31 "provenanceFieldName": "<string>"
32 }
33 ]
34 }
35 ],
36 "views" : [
37 {
38 "name" : "<string>",
39 "source" : "<string>",
40 "pipeline" : "<string>"
41 }
42 ]
43 }
44 ]
45}
stores
storesオブジェクトは、フェデレーティッドデータベースインスタンスに関連付けられた各データ ストアを定義します。 フェデレーティッドデータベースインスタンス ストアは、Atlas クラスター内のドキュメント内のファイルをキャプチャします。 フェデレーティッドデータベースインスタンスは、 storesオブジェクトで定義されたデータ ストアにのみアクセスできます。
databases
databases オブジェクトは、stores で定義された各フェデレーティッドデータベースインスタンス ストアとデータベース内の MongoDB コレクションの間のマッピングを定義します。
1"stores" : [
2 {
3 "name" : "<string>",
4 "provider" : "<string>",
5 "clusterName" : "<string>",
6 "projectId": "<string>"
7 "readPreference": {
8 "mode": "<string>",
9 "tagSets": [
10 [{"name": "<string>", "value": "<string>"},...],
11 ...
12 ],
13 "maxStalenessSeconds": <int>
14 },
15 "readConcern": {
16 "level": "<string>"
17 }
18 }
19]
stores

各オブジェクトがフェデレーティッドデータベースインスタンスに関連付けるデータ ストアを表すオブジェクトの配列。フェデレーティッドデータベースインスタンス ストアは、S3 バケット内のファイル、Atlas クラスター内のドキュメント、または一般にアクセス可能な URL に保存されているファイルを取得します。Atlas Data Federation は、stores オブジェクトで定義されたデータ ストアにのみアクセスできます。

stores.[n].name

フェデレーティッドデータベースインスタンス ストアの名前。 databases.[n].collections.[n].dataSources.[n].storeNameフィールドは、マッピング構成の一部としてこの値を参照します。

stores.[n].provider

データを保存する場所を定義します。 Atlas クラスター内のコレクションでは、値はatlasである必要があります。

stores.[n].clusterName

ストアの基となる Atlas クラスターの名前。 クラスターはフェデレーティッドデータベースインスタンスと同じプロジェクト内に存在する必要があります。 データパーティションのsourceフィールドは、Atlas クラスターの名前です。

stores.[n].projectId

ストアの基盤となる Atlas クラスターを含むプロジェクトの一意の識別子。

stores.[n].readPreference

任意。 クラスターの読み込み設定 ( read preference ) では、読み取りリクエストをクラスターにルーティングする方法について説明します。

次のreadPreference設定では、 secondaryモードANALYTICS NodeType を指定します。

{
...
"stores": [
{
"provider": "atlas",
"clusterName": <CLUSTER_NAME>,
"name": <STORE_NAME>,
"projectId": <PROJECT_ID>,
"readPreference": {
"mode": "secondary",
"tagSets": [
[
{
"name": "nodeType",
"value": "ANALYTICS"
}
],
...
]
}
}
]
}
stores.[n].readPreference.mode

任意。 読み取りリクエストをルーティングするレプリカセット メンバーを指定する 読み込み設定 ( read preference) モード 値は次のいずれかになります。

  • primary - すべての読み取りリクエストをレプリカセットのプライマリにルーティングします

  • primaryPreferred - primaryが使用できない場合にのみ、すべての読み取りリクエストをレプリカセットのプライマリセカンダリノードにルーティングします

  • secondary - すべての読み取りリクエストをレプリカセットのセカンダリノードにルーティングします

  • secondaryPreferred - secondaryノードが使用できない場合にのみ、すべての読み取りリクエストをレプリカセットのセカンダリノードとシャーディングされたクラスター上のプライマリにルーティングします

  • nearest - メンバーがプライマリであるか、セカンダリであるかに関係なく、すべての読み取りリクエストを、ランダムに選択された適格なレプリカセット メンバーにルーティングします。

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

stores.[n].readPreference.tagSets

任意。 レプリカセットの名前と値のペアを含む、タグセットまたはタグ仕様ドキュメントの配列。 指定すると、Atlas Data Federation は読み取りリクエストを、指定されたタグに関連付けられているレプリカセット ノードまたはノードにルーティングします。 詳しくは、「読み込み設定(read preference)タグセット 」を参照してください。

注意

Atlas Data Federation は、シャーディングされたクラスターのtagSetsをサポートしていません。

stores.[n].readPreference.maxStalenessSeconds

任意。 セカンダリからの読み取りの最大レプリケーションラグ、または「古い」 maxStalenessSecondsの詳細については、「読み込み設定(read preference) maxStalenessSeconds 」を参照してください。

stores.[n].readConcern

任意。 Atlas クラスターから読み取られたデータの整合性と分離プロパティ。 詳しくは、「読み取り保証」を参照してください。 整合性と可用性のレベルの値は次のいずれかになります。

1"databases" : [
2 {
3 "name" : "<string>",
4 "collections" : [
5 {
6 "name" : "<string>",
7 "dataSources" : [
8 {
9 "storeName" : "<string>",
10 "database" : "<string>",
11 "databaseRegex": "<string>",
12 "collection" : "<string>",
13 "collectionRegex" : "<string>",
14 "provenanceFieldName": "<string>"
15 }
16 ]
17 }
18 ]
19 }
20]
databases

各オブジェクトがデータベース、そのコレクション、および任意でコレクション上のビューを表すオブジェクトの配列。各データベースには複数の collections および views オブジェクトを保持できます。

databases.[n].name

Atlas Data Federation がデータ ストアに含まれるデータをマッピングするデータベースの名前。 データベース名に*を指定することで、データベースを動的に生成できます。 動的に生成されたデータベース:

  • 明示的に定義されたデータベースと並行して存在できます。 ただし、Atlas Data Federation は、ストレージ構成で明示的に定義されたデータベースと競合する名前を持つデータベースを動的に生成することはありません。

  • 単一の Atlas クラスターからのみ可能です。 Atlas Data Federation は、複数の Atlas クラスターやその他のデータ ストアからデータベースを動的に生成しません。

databases.[n].collections

各オブジェクトがstoresフェデレーティッドデータベースインスタンス ストアにマッピングするコレクションとデータソースを表すオブジェクトの配列。 動的に生成されたデータベースの場合、ストレージ構成で定義できるワイルドカード( * )のコレクション オブジェクトは 1 つだけです。

databases.[n].collections.[n].name

Atlas Data Federation が各 databases.[n].collections.[n].dataSources.[n].storeName に含まれるデータをマッピングするコレクションの名前。配列内の各オブジェクトは、コレクションと stores 配列内のオブジェクトとの間のマッピングを表します。

コレクション名に*を指定し、 collectionフィールドを省略することで、コレクション名を動的に生成できます。 動的に生成されたワイルドカード( * )データベース用にワイルドカード( * )のコレクションを動的に生成するには、 databases.[n].collections.[n].dataSources.[n].storeNameオプションを指定し、 databases.[n].collections.[n].dataSources.[n].databaseオプションを省略します。 動的に生成されたデータベースの場合、ストレージ構成で定義できるワイルドカード( * )のコレクション オブジェクトは 1 つだけであることに注意してください。

ワイルドカード( * )コレクションの場合、コレクションのみをフィルタリングするために、 databases.[n].collections.[n].dataSources.[n].collectionRegexフィールドを使用して正規表現パターンを定義することもできます。

databases.[n].collections.[n].dataSources

各オブジェクトがコレクションにマッピングする stores フェデレーティッドデータベースインスタンス ストアを表すオブジェクトの配列。

databases.[n].collections.[n].dataSources.[n].storeName

<collection> にマッピングするフェデレーティッドデータベースインスタンス ストアの名前。stores 配列内のオブジェクトの name と一致する必要があります。

databases.[n].collections.[n].dataSources.[n].database

コレクションを含む Atlas クラスター上のデータベースの名前。 次の場合には、この設定を省略する必要があります。

  • ワイルドカード( * )データベース用のワイルドカード( * )コレクションを作成します。

  • 複数のデータベースをグローバル化します。

databases.[n].collections.[n].dataSources.[n].databaseRegex

任意。 データベースが複数のコレクションを結合するようグローバル化するために使用する正規表現パターン。 このオプションを指定すると、フェデレーティッドデータベースインスタンスには、複数のデータベースからのコレクションを持つ単一のデータベースが含まれます。 データベースをグローバル化する場合は、次の操作を行う必要があります。

たとえば、 foobarという名前の 2 つのデータベースがあり、それぞれにSalesという名前のコレクションがあるとします。 ストレージ構成でdatabaseRegexオプションを使用して、 foobarSalesコレクションを組み合わせることができます。

{
"databases": [
{
"name": "Transactions",
"collections": [
{
"name": "AllSales",
"dataSources": [
{
"storeName": "atlasStore",
"databaseRegex": ".*",
"collection": "Sales"
}
]
}
]
}
]
}

前述のdatabasesオブジェクトに対して、Atlas Data Federation はフェデレーティッドデータベースインスタンスに次のものを生成します。

  • Transactionsという名前の仮想データベース。

  • という名前の仮想コレクションには、 databaseRegexオプションで指定された正規表現パターンと一致する名前を持つすべてのデータベースに含まれるSales AllSales名前のコレクションのデータが含まれています。

このオプションを指定する場合は、コレクションの名前を指定する必要があります。 ワイルドカード コレクションでは、このオプションは指定できません。

databases.[n].collections.[n].dataSources.[n].collection

フェデレーティッドデータベースインスタンス ストアの基となる Atlas クラスター内のコレクションの名前。 次の場合は、この設定を省略する必要があります。

  • ワイルドカード( * )コレクションの作成。

  • 正規表現パターンに一致するワイルドカード コレクション名の作成

  • 正規表現パターンを使用して、データベース内の複数のコレクションを結合します。

databases.[n].collections.[n].dataSources.[n].collectionRegex

条件: ワイルドカード コレクションの場合は任意。 データベース 内のコレクションを結合するために必要です

ワイルドカード( * )コレクションの作成、またはデータベース内の複数のコレクションの結合に使用する正規表現パターン。

ワイルドカード(``*``) コレクション名 に正規表現パターンを使用するには、次の操作を行う必要があります。

ワイルドカード コレクションの生成のためにこのフィールドを指定すると、フェデレーティッドデータベースインスタンスには、指定された正規表現と一致する名前を持つコレクションのみが含まれます。 フェデレーティッドデータベースインスタンス ストレージ構成内のコレクションは、Atlas クラスター内の元の名前を使用します。

データベース 内の複数のコレクションを結合するために正規表現パターンを使用するには、次の操作を行う必要があります。

複数のコレクションを結合するためにこのフィールドを指定する場合、フェデレーティッドデータベースインスタンスのコレクションには、指定された正規表現と一致する名前を持つすべての Atlas コレクションのデータが含まれます。 フェデレーティッドデータベースインスタンス ストレージ構成のコレクションは、 databases.[n].collections.[n].nameの値として指定した名前を使用します。

正規表現構文の詳細については、「 Go プログラミング言語 」を参照してください。

databases.[n].collections.[n].dataSources.[n].provenanceFieldName

結果にドキュメントの出所が含まれるフィールドの名前。ストレージ構成でこの設定を指定すると、Atlas Data Federation は結果の各ドキュメントに対して次のフィールドを返します。

フィールド名
説明
provider
フェデレーティッドデータベースインスタンス ストレージ構成のプロバイダー(stores.[n].provider
clusterName
Atlas クラスターの名前( stores.[n].clusterName
databaseName
Atlas クラスター内のデータベースの名前( databases.[n].collections.[n].dataSources.[n].database
collectionName
コレクションの名前( databases.[n].collections.[n].name

Atlas UI のビジュアル エディターを使用してこの設定を構成することはできません。

databases.[n].views

各オブジェクトがコレクション上の集計パイプラインを表すオブジェクトの配列。ビューの詳細については、「ビュー」を参照してください。

databases.[n].views.[n].name

ビューの名前。

databases.[n].views.[n].source

ビューのソース コレクションの名前。$sql ステージでビューを作成する場合は、SQL ステートメントでソース コレクションが指定されるため、このフィールドを省略する必要があります。

databases.[n].views.[n].pipeline

source コレクションに適用する 集計パイプラインステージ$sql ステージを使用してビューを作成することもできます。

戻る

配置