MongoDB Academy · Lektion

S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden

Sie konfigurieren eine föderierte Datenbankinstanz, die S3-Präfixe und Atlas-Collections virtuellen Datenbanken und Collections zuordnet.

Lektion 2 von 413 Schritte

S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden ist eine kostenlose MongoDB Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des MongoDB Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Speicherkonfiguration: Das zentrale Konzept

In Atlas Data Federation ist die Speicherkonfiguration ein JSON-Dokument, das zwei Dinge definiert: Stores (wo die Rohdaten gespeichert sind – S3-Buckets und Atlas-Cluster) und Datenbanken/Collections (der virtuelle Namespace, den Anwendungen abfragen). Die Zuordnung zwischen ihnen teilt der Abfrage-Engine mit, aus welchem Store sie lesen soll, wenn Sie eine virtuelle Collection abfragen.

Definieren eines Stores: S3-Bucket

Eine S3-Store-Definition benennt den Store, gibt die AWS-Region und den Bucket-Namen an und verknüpft ihn mit IAM-Anmeldedaten (über eine Atlas Cloud Provider Access-Rolle). Optional können Sie delimiter und prefix festlegen, um den Store auf ein bestimmtes S3-Präfix zu beschränken. Eine einzelne föderierte Instanz kann mehrere Stores mit unterschiedlichen Buckets oder Regionen enthalten.

// S3 store definition in storage config
{
  'stores': [{
    'name': 's3ArchiveStore',
    'provider': 'S3',
    'region': 'us-east-1',
    'bucket': 'mycompany-analytics-archive',
    'delimiter': '/',
    'additionalStorageClasses': ['STANDARD_IA', 'GLACIER']
  }]
}

Definieren eines Stores: Atlas-Cluster

Ein Atlas-Cluster-Store verbindet eine föderierte Instanz mit einem aktiven Atlas-Replica-Set. Sie referenzieren ihn über den Clusternamen innerhalb desselben Atlas-Projekts. Dadurch können Sie Pipelines schreiben, die neben archivierten S3-Daten auch aus aktiven operativen Collections im Cluster lesen. So werden hybride Abfragen ohne Daten duplizierung möglich.

// Atlas cluster store definition
{
  'stores': [{
    'name': 'liveClusterStore',
    'provider': 'atlas',
    'clusterName': 'MyProdCluster',
    'projectId': 'proj123abc'
  }]
}

Collections auf S3-Pfade abbilden

Eine virtuelle Collection wird einem Store und einem Pfadmuster zugeordnet. Der Pfad ist ein Glob-Muster, das Data Federation mitteilt, welche S3-Objekte zu dieser Collection gehören. Das Muster kann wörtliche Pfadsegmente oder Wildcards enthalten. Bei einer Abfrage der Collection scannt die Query Engine alle passenden Objekte.

// Map virtual collection to S3 path pattern
{
  'databases': [{
    'name': 'analytics',
    'collections': [{
      'name': 'events_2024',
      'dataSources': [{
        'storeName': 's3ArchiveStore',
        'path': '/data/events/2024/*'
      }]
    }]
  }]
}

Partitionsattribute in Pfaden

Partitionsattribute codieren Metadaten direkt im S3-Pfad mithilfe einer Syntax mit geschweiften Klammern: {year int}/{month int}/{day int}/. Wenn eine Abfrage nach year, month oder day filtert, entfernt Data Federation alle S3-Objekte aus der Verarbeitung – überspringt sie also –, deren Pfad nicht zu den Filterwerten passt. Dies ist vergleichbar mit der Hive-Partitionierung und reduziert die Anzahl der gelesenen Bytes erheblich.

// Path with partition attributes (Data Federation parses the directory structure)
{
  'dataSources': [{
    'storeName': 's3ArchiveStore',
    'path': '/events/{year int}/{month int}/{day int}/*.json'
  }]
}

// Query that uses partition pruning:
db.events.find({ year: 2025, month: 3 })
// Data Federation only reads /events/2025/3/ prefix

Mehrere Quellen einer Collection zuordnen

Eine einzelne virtuelle Collection kann mehreren Datenquellen zugeordnet werden – beispielsweise einem S3-Archiv und einer aktiven Atlas-Collection. Abfragen führen die Ergebnisse aller Quellen transparent zusammen. Das ist nützlich für eine Collection mit der „vollständigen Historie“, bei der sich aktuelle Daten in Atlas und ältere Daten in S3 befinden, Anwendungen aber beide über einen einzigen Namespace abfragen.

{
  'collections': [{
    'name': 'orders',
    'dataSources': [
      {
        'storeName': 'liveClusterStore',
        'database': 'mydb',
        'collection': 'orders'           // live Atlas data
      },
      {
        'storeName': 's3ArchiveStore',
        'path': '/orders/archive/*.parquet'  // S3 archive
      }
    ]
  }]
}

Wildcard-Collections: Schema-on-Read

Sie können eine Wildcard-Collection (*) definieren, die alle Dateien in einem S3-Präfix dynamisch benannten virtuellen Collections zuordnet. Wenn Sie einen Collection-Namen abfragen, der dem Wildcard-Muster entspricht, leitet Data Federation den Pfad aus dem Collection-Namen ab. Das ist nützlich für partitionierte Data Lakes mit Tausenden präfixbasierten „Tabellen“, die Sie nicht alle in der Konfiguration aufzählen können.

// Wildcard: each year-month subdirectory becomes a virtual collection
{
  'collections': [{
    'name': '*',
    'dataSources': [{
      'storeName': 's3ArchiveStore',
      'path': '/data/{collectionName string}/'
    }]
  }]
}

// Now query any 'table' by name:
db['orders-2024-01'].find({})
db['events-2025-03'].aggregate([...])

Speicherkonfiguration aktualisieren

Sie können die Speicherkonfiguration jederzeit über die Atlas UI, die Atlas Admin API oder mongosh aktualisieren. Änderungen werden sofort wirksam – Sie müssen die föderierte Instanz nicht neu starten. Dadurch können Sie neue S3-Pfade hinzufügen, Collections anderen Stores zuordnen oder neue Atlas-Cluster-Quellen hinzufügen, ohne dass es zu Ausfallzeiten kommt.

// Update storage config via Admin API
// PATCH /api/atlas/v1.0/groups/{groupId}/dataFederation/{name}
// Body: updated storage config JSON

// Or via mongosh using the Atlas admin command
db.adminCommand({
  setQueryableEncryptionBackend: 1,
  dataFederationConfig: { /* new config */ }
})

Ihre Zuordnung testen

Testen Sie die Speicherkonfiguration nach dem Definieren, indem Sie mit mongosh eine Verbindung zur föderierten Instanz herstellen und Datenbanken sowie Collections auflisten. Verwenden Sie show dbs, show collections und ein einfaches find(), um zu überprüfen, ob die Zuordnung korrekt ist. Prüfen Sie anhand der ersten zurückgegebenen Dokumente, ob die richtigen Dateien gelesen werden.

// Connect to federated instance and test
// mongosh 'mongodb+srv://federated.mongodb.net/'
show dbs                // lists virtual databases
use analytics
show collections        // lists virtual collections
db.events_2024.findOne()
// Verify the document shape matches your S3 files

IAM-Rolle oder Access-Key-Authentifizierung für S3

Atlas Data Federation greift über AWS IAM auf S3 zu. Empfohlen wird eine IAM-Rolle, die an das AWS-Konto von Atlas delegiert wird (Atlas Cloud Provider Access), statt Paare aus Access Key und Secret zu speichern. Die Rolle erhält über eine IAM-Richtlinie Lesezugriff auf den S3-Bucket, und Atlas übernimmt die Rolle beim Ausführen von Abfragen. Dies ist sicherer als langlebige Access Keys.

// Minimal S3 IAM policy for Data Federation read access
// {
//   'Version': '2012-10-17',
//   'Statement': [{
//     'Effect': 'Allow',
//     'Action': ['s3:GetObject', 's3:ListBucket'],
//     'Resource': [
//       'arn:aws:s3:::mycompany-analytics-archive',
//       'arn:aws:s3:::mycompany-analytics-archive/*'
//     ]
//   }]
// }

Namespace-Aliasing und mehrere Views

Sie können mehrere virtuelle Collections erstellen, die mit unterschiedlichen Pfadmustern auf dasselbe zugrunde liegende S3-Präfix verweisen – dadurch entstehen effektiv mehrere Views derselben Daten. Beispielsweise kann eine Collection alle Daten bereitstellen, eine andere nur die Partition des aktuellen Jahres und eine dritte nur Parquet-Dateien abbilden, während JSON ausgeschlossen wird. So können Sie steuern, was die einzelnen Anwendungsebenen sehen.

Kurze Überprüfung

Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion zu MongoDB & NoSQL Databases.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: Stores legen fest, wo Rohdaten gespeichert sind (S3-Buckets oder Atlas-Cluster), und virtuelle Datenbanken bzw. Collections definieren den Namespace, den Anwendungen abfragen; Partitionsattribute in S3-Pfaden ermöglichen Partition-Pruning und reduzieren die Anzahl der gelesenen Bytes erheblich; und eine einzelne virtuelle Collection kann Daten aus mehreren Stores gleichzeitig zusammenführen. Als Nächstes schreiben wir Aggregationspipelines über mehrere Quellen hinweg.

Kostenlos starten

Lerne JavaScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden“ kostenlos?

Ja — der vollständige Text von „S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des MongoDB Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden“?

Sie konfigurieren eine föderierte Datenbankinstanz, die S3-Präfixe und Atlas-Collections virtuellen Datenbanken und Collections zuordnet. Du übst MongoDB Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um MongoDB Academy zu starten?

Keine Vorkenntnisse erforderlich. MongoDB Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser MongoDB Academy-Lektion Code schreiben und ausführen?

Ja. Jede MongoDB Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Was ist Atlas Data Federation?
  2. S3- und Atlas-Quellen auf einen virtuellen Namensraum abbilden
  3. Aggregation-Pipelines über mehrere Quellen ausführen
  4. S3-Daten für bessere Abfrage-Performance partitionieren
← Zurück zu MongoDB Academy