MongoDB Academy · Lektion

Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum

De lærende vil konfigurere en fødereret databaseinstans, der knytter S3-præfikser og Atlas-samlinger til virtuelle databaser og samlinger.

Lektion 2 af 413 trin

Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum er en gratis MongoDB Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i MongoDB Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. MongoDB Academy-kurset indeholder 4 lektioner i alt.

Lagerkonfiguration: Det centrale koncept

I Atlas Data Federation er lagerkonfigurationen et JSON-dokument, der definerer to ting: lagre (hvor rådataene findes – S3-buckets og Atlas-klynger) og databaser/samlinger (det virtuelle navneområde, som applikationer forespørger på). Kortlægningen mellem dem fortæller forespørgselsmotoren, hvilket lager den skal læse fra, når du forespørger på en virtuel samling.

Definere et lager: S3-bucket

En S3-lagerdefinition angiver lagerets navn, AWS-region og bucket-navn og knytter det til IAM-legitimationsoplysninger (via en Atlas Cloud Provider Access-rolle). Du kan valgfrit angive en delimiter og et prefix for at begrænse lageret til et bestemt S3-præfiks. En enkelt federeret instans kan have flere lagre, der peger på forskellige buckets eller regioner.

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

Definere et lager: Atlas-klynge

Et Atlas-klyngelager forbinder en federeret instans med et aktivt Atlas-replikasæt. Du refererer til det ved hjælp af klyngens navn i det samme Atlas-projekt. Det giver dig mulighed for at skrive pipelines, der læser fra aktive operationelle samlinger i klyngen sammen med arkiverede S3-data, så du kan udføre hybride forespørgsler uden at duplikere data.

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

Knytte samlinger til S3-stier

En virtuel samling knyttes til et lager og et stimønster. Stien er et glob-mønster, der fortæller Data Federation, hvilke S3-objekter der hører til denne samling. Mønsteret kan indeholde bogstavelige stisegmenter eller jokertegn. Forespørgselsmotoren gennemgår alle matchende objekter, når der forespørges på samlingen.

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

Partitionsattributter i stier

Partitionsattributter koder metadata direkte i S3-stien ved hjælp af syntaks med krøllede parenteser: {year int}/{month int}/{day int}/. Når en forespørgsel filtrerer på year, month eller day, frasorterer Data Federation — springer over — alle S3-objekter, hvis sti ikke matcher filterværdierne. Det svarer til Hive-partitionering og reducerer antallet af scannede bytes markant.

// 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

Knytte flere datakilder til én samling

En enkelt virtuel samling kan knyttes til flere datakilder — for eksempel et S3-arkiv plus en aktiv Atlas-samling. Forespørgsler fletter resultaterne fra alle kilder uden at det er synligt for dig. Det er nyttigt til en samling med en "fuld historik", hvor nyere data ligger i Atlas, og ældre data er arkiveret i S3, mens applikationer kan forespørge på begge gennem ét navnerum.

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

Jokertegnssamlinger: Skema ved læsning

Du kan definere en jokertegnssamling (*), der knytter alle filer i et S3-præfiks til dynamisk navngivne virtuelle samlinger. Når du forespørger på et samlingsnavn, der matcher jokertegnsmønsteret, udleder Data Federation stien ud fra samlingsnavnet. Det er nyttigt til partitionerede datasøer, hvor du har tusindvis af præfiksbaserede "tabeller" og ikke kan angive dem alle i konfigurationen.

// 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([...])

Opdatere lagerkonfigurationen

Du kan når som helst opdatere lagerkonfigurationen via Atlas-brugerfladen, Atlas Admin API eller mongosh. Ændringer træder i kraft med det samme — du behøver ikke genstarte den federerede instans. Det giver dig mulighed for at tilføje nye S3-stier, knytte samlinger til andre lagre eller tilføje nye Atlas-klyngedatakilder uden nedetid.

// 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 */ }
})

Teste din tilknytning

Når du har defineret lagerkonfigurationen, skal du teste den ved at oprette forbindelse til den federerede instans med mongosh og vise databaser og samlinger. Brug show dbs, show collections og en simpel find() for at kontrollere, at tilknytningen er korrekt. Kontrollér, at de korrekte filer læses, ved at undersøge de første dokumenter, der returneres.

// 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 kontra adgangsnøglegodkendelse til S3

Atlas Data Federation får adgang til S3 via AWS IAM. Den anbefalede tilgang er at bruge en IAM-rolle, som er delegeret til Atlas' AWS-konto (Atlas Cloud Provider Access), i stedet for at gemme par af adgangsnøgler og hemmeligheder. Rollen får læseadgang til S3-bucket'en via en IAM-politik, og Atlas påtager sig rollen, når forespørgsler udføres. Det er mere sikkert end adgangsnøgler med lang levetid.

// 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/*'
//     ]
//   }]
// }

Navnerumsaliaser og flere visninger

Du kan oprette flere virtuelle samlinger, der peger på det samme underliggende S3-præfiks med forskellige stimønstre — hvilket i praksis opretter flere visninger af de samme data. En samling kan for eksempel vise alle data, en anden kun partitionen for det aktuelle år, og en tredje kun knytte Parquet-filer til samlingen, mens JSON-filer udelukkes. Det giver dig mulighed for at styre, hvad hvert applikationslag kan se.

Hurtigt tjek

Test din forståelse af begreberne MongoDB og NoSQL-databaser fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du, at lagre definerer, hvor rå data findes (S3-buckets eller Atlas-klynger), og virtuelle databaser/samlinger definerer det navnerum, som applikationer forespørger på, at partitionsattributter i S3-stier muliggør frasortering, som reducerer antallet af scannede bytes markant, og at én virtuel samling kan flette data fra flere lagre samtidig. Nu skal vi skrive aggregeringspipelines på tværs af kilder.

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum” gratis?

Ja — hele teksten til “Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af MongoDB Academy-kurset, skal du opgradere til CoddyKit PRO. MongoDB Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum”?

De lærende vil konfigurere en fødereret databaseinstans, der knytter S3-præfikser og Atlas-samlinger til virtuelle databaser og samlinger. Du øver dig i MongoDB Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på MongoDB Academy?

Der kræves ingen tidligere erfaring. MongoDB Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne MongoDB Academy-lektion?

Ja. Alle MongoDB Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvad er Atlas Data Federation?
  2. Tilknytning af S3- og Atlas-kilder til et virtuelt navnerum
  3. Kørsel af aggregeringspipelines på tværs af datakilder
  4. Partitionering af S3-data til bedre forespørgselsydeevne
← Tilbage til MongoDB Academy