MongoDB Academy · レッスン

Atlas Data Federationとは

Data Federationのアーキテクチャ、対応するデータソースの種類、それらを統合するクエリエンジンについて説明します。

レッスン 1/413 ステップ

「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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Atlas Data Federationとは
  2. S3とAtlasのソースを仮想名前空間にマッピングする
  3. 複数ソースにまたがる集約パイプラインの実行
  4. クエリ性能のためのS3データのパーティショニング
← MongoDB Academyに戻る