Atlas Data Federationとは
Data Federationのアーキテクチャ、対応するデータソースの種類、それらを統合するクエリエンジンについて説明します。
「Atlas Data Federationとは」はCoddyKit上の無料MongoDB Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMongoDB Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MongoDB Academyコースには全4レッスンが含まれています。
課題:データはあらゆる場所に存在する
現代のアプリケーションは、複数のシステムにまたがってデータを生成します。MongoDB Atlasの稼働中の運用データ、Amazon S3の履歴アーカイブ、データレイクの分析用エクスポートなどです。従来、これらのサイロをまたいでクエリするには、データパイプライン、ETLジョブ、個別のクエリエンジンが必要でした。Atlas Data Federationを使うと、単一のMongoDB接続と使い慣れたaggregation pipelineで、これらすべてのデータソースをクエリできます。
Atlas Data Federationとは
Atlas Data Federationは、MongoDB Atlasに組み込まれたフルマネージドのクエリエンジンです。フェデレーテッドデータベースインスタンスを作成します。これは、複数のデータソース(Atlasクラスター、S3バケット、Atlas Data Lake、HTTPエンドポイント)のデータを仮想コレクションにマッピングする仮想MongoDBデプロイメントです。標準のMongoDB接続文字列で接続し、すでに知っているものと同じaggregation pipelineを使用できます。
// Connect to a federated database instance
// The URI looks like a regular Atlas connection string
// mongodb://...@data.mongodb-api.com/federated
const client = new MongoClient(
'mongodb+srv://federated-instance.mongodb.net/myFederatedDB'
)対応するデータソース
Atlas Data Federationでは、次のデータをクエリできます。Atlasクラスター — MongoDBの稼働中のコレクション。Amazon S3 — S3バケットに保存されたJSON、BSON、CSV、TSV、Avro、ORC、Parquetファイル。Atlas Data Lake — 処理および拡充されたデータセット。HTTP/HTTPSエンドポイント — JSONを返す外部REST API。すべてのデータソースは、フェデレーテッドインスタンス内の仮想名前空間にマッピングされます。
フェデレーテッドデータベースのアーキテクチャ
フェデレーテッドデータベースは3つの層で構成されます。ストレージ設定 — どのデータソースをどの仮想データベースおよびコレクションにマッピングするかを定義します。クエリエンジン — 複数のデータソースから読み取り、pipelineステージを適用して結果をマージする分散SQL/MQLプロセッサです。接続層 — MongoDBドライバーまたはmongoshで接続するmongos互換エンドポイントです。
// Storage configuration (simplified JSON structure)
{
'databases': [{
'name': 'analytics',
'collections': [{
'name': 'orders_archive',
'dataSources': [{
'storeName': 's3Store',
'path': '/data/orders/2024/'
}]
}]
}]
}フェデレーテッドデータベースインスタンスの作成
フェデレーテッドデータベースインスタンスは、Atlas UI、Atlas Admin API、またはAtlas CLIから作成します。セットアップでは次の操作を行います。1) インスタンスに名前を付けます。2) ストア(IAM認証情報を持つS3バケット、Atlasクラスターなど)を追加します。3) それらのストアを参照する仮想データベースとコレクションを定義します。4) 接続文字列をコピーし、MongoDBドライバーで接続します。
// Using Atlas CLI to create a data federation instance
// atlas dataFederation create myFederation --region US_EAST_1
// Then add a store via Atlas UI or API
// POST /api/atlas/v1.0/groups/{groupId}/dataFederation/{name}/dataStores
// { 'name': 's3Store', 'provider': 'S3', 'region': 'us-east-1', 'bucket': 'my-data' }仮想名前空間:スキーマのないコレクション
フェデレーテッドデータベースの仮想コレクションはデータを保存しません。基盤となるソースファイルまたはコレクションに対する論理ビューです。analytics.ordersという名前の仮想コレクションに対してクエリを実行すると、実際にはs3://my-bucket/orders/2024/にあるS3 Parquetファイルが読み取られる、といった構成が可能です。MongoDBドライバーやツールから見ると、仮想コレクションは通常のMongoDBコレクションと同じように見え、同じように動作します。
// Query a virtual collection backed by S3 files
const ordersArchive = db.collection('orders_archive')
const result = await ordersArchive.aggregate([
{ $match: { year: 2024, region: 'EU' } },
{ $group: { _id: '$category', total: { $sum: '$revenue' } } },
{ $sort: { total: -1 } }
]).toArray()$lookupによるデータソース間の結合
最も強力な機能の1つは、稼働中のAtlasコレクションとS3に保存されたアーカイブデータを、1つのpipelineで結合できることです。たとえば、稼働中のAtlasクラスターからアクティブな顧客の詳細を検索し、S3のParquetファイルに保存された過去3年間の購入履歴と結合できます。ETLジョブは必要なく、すべてを1つのaggregationで実行できます。
// Join live Atlas collection with S3 archive
db.customers.aggregate([
{ $match: { tier: 'platinum' } }, // live Atlas
{ $lookup: {
from: 'orders_archive', // virtual S3-backed collection
localField: '_id',
foreignField: 'customerId',
as: 'purchaseHistory'
}},
{ $project: { name: 1, tier: 1,
totalOrders: { $size: '$purchaseHistory' } } }
])S3でのファイル形式のサポート
Data Federationは、さまざまな形式のS3ファイルを読み取れます。JSON(1行に1ドキュメント、または配列)、BSON(MongoDBネイティブのバイナリ形式)、CSV/TSV(ヘッダー行付き)、Avro、ORC、Parquet(データレイクで広く使われる列指向形式)です。列指向形式では、Data Federationが投影とフィルター述語をファイルリーダーにプッシュし、スキャンをさらに高速化できます。
// In storage config, specify file format per path
{
'dataSources': [{
'storeName': 's3Store',
'path': '/analytics/events/{year string}/{month string}/',
'defaultFormat': '.parquet'
}]
}料金モデル:クエリベースの料金設定
Atlas Data Federationの料金は、稼働時間ではなく処理したデータ量(スキャンしたバイト数)に基づきます。そのため、大規模なS3アーカイブに対して分析クエリを低頻度で実行する用途に適しており、クエリを実行しなければ料金は発生しません。ただし、パーティション化されていないS3データセット全体をスキャンすると、高額になる可能性があります。S3データのパーティショニングと、投影によるスキャン対象バイト数の削減は、コスト管理に不可欠です。
セキュリティ:認証とネットワーク
フェデレーテッドデータベースインスタンスでは、通常のAtlasクラスターと同じAtlasデータベースユーザーおよびロールを使用します。Atlasのネットワークピアリング、プライベートエンドポイント(AWS PrivateLink)、IP Access Listsを適用して、接続できるユーザーを制限できます。S3への接続にはAWSキーを直接保存するのではなくIAMロールを使用し、AWSのセキュリティに関するベストプラクティスに従います。
Atlas Data Federationを使用する場面
Data Federationは、次のような場合に適しています。1) データを稼働中のクラスターに読み込まずに、履歴データを保存したS3アーカイブを対象としてアドホッククエリを実行したい場合。2) 稼働中のトランザクションデータとアーカイブデータを1つのクエリで結合したい場合。3) 複数のAtlasクラスターにまたがる統合分析インターフェースが必要な場合。4) 分析用途ごとに個別のETLパイプラインを構築・保守することを避けたい場合。
理解度チェック
このレッスンで扱ったMongoDB & NoSQL Databasesの概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、Atlas Data FederationがS3、Atlasクラスター、その他のデータソース上に仮想MongoDB名前空間を作成すること、標準のaggregation pipelineを使用して、すべてのデータソースをまたいだクエリと結合を1回の操作で実行できること、そして料金はスキャンしたバイト数に基づくため、コスト管理にはパーティショニングと投影が不可欠であることを学びました。次は、S3とAtlasのデータソースを仮想名前空間にマッピングする方法を見ていきます。
AI チューターと学ぶ JavaScript — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「Atlas Data Federationとは」レッスンは無料ですか?
はい。「Atlas Data Federationとは」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MongoDB Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MongoDB Academyコースには全4レッスンが含まれています。
「Atlas Data Federationとは」で何を学びますか?
Data Federationのアーキテクチャ、対応するデータソースの種類、それらを統合するクエリエンジンについて説明します。 ブラウザで直接実行するハンズオンコードでMongoDB Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
MongoDB Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのMongoDB Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Atlas Data Federationとは」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このMongoDB Academyレッスンでコードを書いて実行できますか?
はい。すべてのMongoDB Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Atlas Data Federationとは
- S3とAtlasのソースを仮想名前空間にマッピングする
- 複数ソースにまたがる集約パイプラインの実行
- クエリ性能のためのS3データのパーティショニング