ORACLE NOSQL → STACKIT MONGODB FLEX · ARCHITECTUUR

Oracle NoSQL op STACKIT: het datamodel herontwerpen

Voor een Oracle NoSQL-tabel bestaat geen drop-in-doel. StackToIT deelt elke tabel in als REDESIGN met STACKIT MongoDB Flex als kandidaat, met zekerheidsniveau LOW, omdat het datamodel, de query-API en het capaciteitsmodel eigen aan Oracle zijn. Deze pagina toont de beoordeelde omgeving, de opties voor het doel en een tabel per concept om sleutels, JSON, verloop, indexen en consistentie opnieuw te modelleren.

Twee NoSQL-tabellen, beoordeeld

Een sessietabel met een verloopdatum en een winkelwagentabel, geschreven voor deze pagina en door StackToIT beoordeeld op 4 november 2026. Links de invoer, regels 16 tot en met 38 van main.tf. Rechts het resultaat, een fragment van assessment.json met de waarden zoals de run ze schreef. assessment.json staat op één regel, dus het venster toont geselecteerde velden van elke eenheid, ingesprongen en genest zoals in het bestand, met ongewijzigde waarden.

Voorbeeldinvoermain.tf
resource "oci_nosql_table" "sessions" {
  compartment_id = var.compartment_id
  name           = "sessions"
  ddl_statement  = "CREATE TABLE IF NOT EXISTS sessions (session_id STRING, user_id STRING, payload JSON, expires_at TIMESTAMP(3), PRIMARY KEY (SHARD(user_id), session_id)) USING TTL 1 DAYS"

  table_limits {
    max_read_units     = 50
    max_write_units    = 50
    max_storage_in_gbs = 10
    capacity_mode      = "PROVISIONED"
  }
}

resource "oci_nosql_table" "carts" {
  compartment_id = var.compartment_id
  name           = "carts"
  ddl_statement  = "CREATE TABLE IF NOT EXISTS carts (cart_id STRING, customer_id STRING, items JSON, PRIMARY KEY (cart_id))"

  table_limits {
    max_storage_in_gbs = 25
    capacity_mode      = "ON_DEMAND"
  }
}
StackToIT-assessmentassessment.json
[
  {
    "id": "oci_nosql_table.sessions",
    "result": {
      "class": "REDESIGN",
      "confidence": "LOW",
      "target": {
        "service": "STACKIT MongoDB Flex"
      },
      "reason": "OCI NoSQL has its own data model and API. The tables and clients are redesigned for MongoDB Flex."
    }
  },
  {
    "id": "oci_nosql_table.carts",
    "result": {
      "class": "REDESIGN",
      "confidence": "LOW",
      "target": {
        "service": "STACKIT MongoDB Flex"
      },
      "reason": "OCI NoSQL has its own data model and API. The tables and clients are redesigned for MongoDB Flex."
    }
  }
]
  • REDESIGN, met opzet

    De run geeft aan dat OCI NoSQL een eigen datamodel en API heeft en dat de tabellen en clients worden herontworpen voor MongoDB Flex. De klasse is geen gebrek: die geeft aan dat het werk uit ontwerpen bestaat en niet uit kopiëren.

  • Zekerheidsniveau LOW

    Beide tabellen hebben LOW. De run legt de haalbaarheid vast als voorwaardelijk, met een functionaliteitskloof als blokkadecategorie, dus het antwoord hangt af van wat uw applicatie gebruikt.

  • Ook de clients veranderen

    Een DDL-statement, een SQL-achtige query en een SDK-aanroep zijn allemaal Oracle-specifiek. Het herontwerp omvat de applicatiecode die met de tabel praat.

De index die de run niet kent

De secundaire index op de winkelwagentabel is als eigen resource gedeclareerd. De run neemt de index op en zegt ronduit dat die niet is beoordeeld. assessment.json staat op één regel, dus het venster toont geselecteerde velden van elke eenheid, ingesprongen en genest zoals in het bestand, met ongewijzigde waarden.

Voorbeeldinvoermain.tf
resource "oci_nosql_index" "carts_by_customer" {
  table_name_or_id = oci_nosql_table.carts.id
  compartment_id   = var.compartment_id
  name             = "carts_by_customer"

  keys {
    column_name = "customer_id"
  }
}
StackToIT-assessmentassessment.json
[
  {
    "id": "oci_nosql_index.carts_by_customer",
    "result": {
      "class": "MANUAL_REVIEW",
      "confidence": "LOW",
      "reason": "oci_nosql_index is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
    }
  }
]
  • MANUAL_REVIEW voor de index

    Het indextype staat niet in de catalogus van de run, dus er is niets van beoordeeld of opgesteld. De tabel waartoe die behoort, draagt een waarschuwing dat de index gekoppeld is maar niet beoordeeld.

  • Waar het in het plan staat

    De index zit in golf 2 en de tabellen in golf 1. In de praktijk ontwerpt u de indexen samen met de collecties, vanuit de queries die de applicatie uitvoert.

Concept voor concept: van OCI NoSQL naar MongoDB Flex

De linkerkolom is gedocumenteerd door Oracle, de middelste door STACKIT waar dat staat, en de laatste kolom is de vraag die u in het ontwerp beantwoordt.

OCI NoSQL-conceptOp MongoDB FlexWat u beslist
Tabel met een primaire sleutel en shardsleutelEen collectie van documenten; STACKIT beschrijft de dienst als volledig compatibel met native MongoDBDe documentsleutel en welke velden de indexen aanvoeren. Oracle shardt op een deel van de primaire sleutel; de STACKIT-pagina beschrijft geen shardsleutel per tabel, dus ontwerp vanuit de toegangspatronen.
JSON-kolomEen document, opgeslagen als BSON, met een dynamisch schemaOf u de payload als één ingebed object houdt of velden naar het hoofdniveau van het document haalt.
Getypeerde kolommenDocumentveldenHoeveel validatie de applicatie doet, aangezien een documentopslag uw DDL niet afdwingt.
TTL op rijen (USING TTL 1 DAYS)Een verloopmechanisme van de database, bijvoorbeeld een TTL-index, ontworpen per collectieHet verloopveld, de opruimvertraging die u accepteert en een test dat verlopen sessies echt verdwijnen.
Secundaire index, ook op JSON-padenIndexen: enkelvoudig, samengesteld, geospatiaal en tekst worden door STACKIT vermeldEén index per querypad; geen automatische overname van de OCI-index.
Ingerichte lees- en schrijfeenheden, of on-demandEen instance die u bij het aanmaken dimensioneert; de STACKIT-pagina die voor deze gids is gelezen, beschrijft geen doorvoerinstelling per tabelPiek in lezen en schrijven, vertaald naar de omvang van de instance; er is geen eenheidsinstelling per tabel om over te nemen.
Leesconsistentie ABSOLUTE of EVENTUALLees- en schrijfgedrag wordt ingesteld in de driver en de deployment (algemene praktijk)Welke leesacties de laatste schrijfactie moeten zien; in Oracle kosten ABSOLUTE-leesacties tweemaal de leeseenheden, dus gebruik ze alleen waar het moet.
Tabelhiërarchie met joinsAggregaties met $lookup, of insluitenOf bovenliggende en onderliggende rijen één document worden.
Global active tablesNiet beschreven op de STACKIT-pagina die voor deze gids is gelezenOf u überhaupt over regio's repliceert, en hoe; plan dat als apart ontwerp.

Oracle geeft aan dat ACID-transacties worden ondersteund; de MongoDB Flex-pagina noemt authenticatie, rolgebaseerd toegangsbeheer, versleuteling en auditing. De concrete garanties die u nodig hebt, moet u bij de dienst bevestigen voordat u erop vertrouwt.

Opties voor het doel

De run stelt er één voor. Dit zijn de keuzes die een architect afweegt; ze impliceren geen benchmark.

  • MongoDB Flex, de kandidaat van de run

    Het meest geschikt als de data echt documentvormig is en de applicatie naar een document-API kan overstappen. STACKIT vermeldt dynamische schema's, aggregaties en meerdere indextypen.

  • PostgreSQL Flex met JSONB

    Het meest geschikt als u één relationele dienst wilt voor getypeerde kolommen en een JSON-kolom samen en accepteert dat u queries naar SQL herschrijft. Een ontwerpalternatief buiten de run.

  • Key Value Store (Valkey) voor sessies

    Een sessietabel met een verloop van één dag is een cache in alles behalve naam. Als niets de tabel op iets anders dan de sleutel bevraagt, past een key value store met verlopende sleutels mogelijk beter dan een documentcollectie. Nog een ontwerpalternatief buiten de run.

  • Splitsen per workload

    De twee tabellen in de demo hoeven niet in dezelfde dienst te landen. Beslis per tabel vanuit het toegangspatroon en voeg pas samen waar dat beheerinspanning bespaart.

Een ontwerpvolgorde die werkt

Algemene praktijk, geen resultaat van de run. Elke stap levert iets op dat een reviewer kan controleren.

  1. Maak een lijst van de toegangspatronen

    Schrijf voor elke tabel elke leesactie en schrijfactie op: met welke sleutel, hoe vaak, hoe actueel de data moet zijn.

  2. Kies het doel per tabel

    Gebruik de opties hierboven en leg vast waarom, zodat de beslissing later niet wordt herhaald.

  3. Teken de documenten of rijen

    Eén voorbeeldrecord per collectie, met sleutel en indexen, besproken met het team dat de applicatie beheert.

  4. Herschrijf de laag voor datatoegang

    Vervang de Oracle-SDK-aanroepen en de SQL-achtige queries; houd de wijziging achter één interface zodat die te testen is.

  5. Laad en vergelijk

    Exporteer uit de bron, transformeer, laad en vergelijk aantallen en steekproefrecords. De run verplaatst geen data en geeft aan dat u het mechanisme zelf kiest.

Vragen van applicatieteams

Waarom is de klasse REDESIGN en niet REPLATFORM?

Omdat Oracle NoSQL een eigen datamodel en API heeft. De tabellen en de clients worden herontworpen voor MongoDB Flex; een kopie van alleen de data laat een applicatie achter die de data niet kan lezen.

Is MongoDB Flex het enige doel?

Het is de kandidaat die de run noemt. PostgreSQL Flex met JSONB of een key value store kan bij specifieke tabellen beter passen; dit zijn ontwerpalternatieven die u beoordeelt en geen resultaten van de run.

Wat gebeurt er met de TTL-instelling?

Het verlopen van rijen is een functie van de Oracle-tabel. Op het doel ontwerpt en test u een verloop per collectie. De run vertaalt het DDL-statement niet.

Raken we het capaciteitsmodel van Oracle kwijt?

Ingerichte of on-demand lees- en schrijfeenheden gaan niet mee. Op het doel dimensioneert u de instance, dus u vertaalt uw piekbelasting eenmalig en beoordeelt die na de eerste weken verkeer.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring