BIGTABLE → STACKIT · ARCHITECTUUR

Bigtable-migratie: de wide-column-laag ontwerpen

STACKIT heeft geen managed wide-column-dienst, dus Bigtable is eerst een ontwerpbeslissing en pas daarna een migratie. StackToIT deelt de instance in als REDESIGN, schrijft er geen Terraform voor en noemt de instellingen die een persoon moet vastleggen: het datamodel, de replicatie, de zones van de clusters en de namen. Deze pagina zet de realistische opties uiteen, wat elk ervan u kost aan beheer en herschrijven, en hoe u kiest op basis van wat uw code en uw data u al vertellen.

Een Bigtable-instance en bijbehorende beleidsregels, beoordeeld

Een omgeving die voor deze pagina is geschreven en op 4 november 2026 door StackToIT is beoordeeld: één instance met twee clusters, een tabel met twee column families, twee garbage collection-beleidsregels en een application profile. Het rechterpaneel is een letterlijk fragment van engineering/architect-report.md voor de instance: de reden, de tabel die erbij hoort en de drie waarschuwingen over de naastliggende eenheden die niet in de catalogus staan. De run schreef voor geen van de vier eenheden Terraform.

Voorbeeldinvoermain.tf
resource "google_bigtable_instance" "telemetry" {
  name                = "telemetry"
  deletion_protection = true

  cluster {
    cluster_id   = "telemetry-ew3-a"
    zone         = "europe-west3-a"
    num_nodes    = 3
    storage_type = "SSD"
  }

  cluster {
    cluster_id   = "telemetry-ew3-b"
    zone         = "europe-west3-b"
    num_nodes    = 3
    storage_type = "SSD"
  }
}

resource "google_bigtable_table" "readings" {
  name          = "device-readings"
  instance_name = google_bigtable_instance.telemetry.name
  split_keys    = ["a", "m", "t"]

  column_family {
    family = "metrics"
  }

  column_family {
    family = "meta"
  }
}

resource "google_bigtable_gc_policy" "metrics_ttl" {
  instance_name = google_bigtable_instance.telemetry.name
  table         = google_bigtable_table.readings.name
  column_family = "metrics"

  max_age {
    duration = "720h"
  }
}

resource "google_bigtable_gc_policy" "meta_versions" {
  instance_name = google_bigtable_instance.telemetry.name
  table         = google_bigtable_table.readings.name
  column_family = "meta"

  max_version {
    number = 1
  }
}

resource "google_bigtable_app_profile" "ingest" {
  instance       = google_bigtable_instance.telemetry.name
  app_profile_id = "ingest"

  single_cluster_routing {
    cluster_id                 = "telemetry-ew3-a"
    allow_transactional_writes = false
  }

  ignore_warnings = true
}
Fragment van het architectenrapportengineering/architect-report.md
- **Why:** STACKIT has no wide-column database service; row-key design and the HBase/Bigtable client API move to a self-operated store or a redesigned data model.
- **Includes:** `google_bigtable_table.readings`
- **WARNING** (uncatalogued-related): google_bigtable_app_profile.ingest (google_bigtable_app_profile) is linked to this unit but not in the knowledge base; its effect on the migration is not assessed.
- **WARNING** (uncatalogued-related): google_bigtable_gc_policy.meta_versions (google_bigtable_gc_policy) is linked to this unit but not in the knowledge base; its effect on the migration is not assessed.
- **WARNING** (uncatalogued-related): google_bigtable_gc_policy.metrics_ttl (google_bigtable_gc_policy) is linked to this unit but not in the knowledge base; its effect on the migration is not assessed.
  • Vier eenheden, geen enkele als concept geschreven

    De tabel reist als facet mee met de instance. De twee garbage collection-beleidsregels en het application profile zijn aparte eenheden met klasse MANUAL_REVIEW, omdat ze niet in de catalogus van de engine staan: er wordt niets over beoordeeld of als concept geschreven, en de run meldt dat ook.

  • Waarom het zekerheidsniveau hier LOW is

    Dezelfde instance, los in de omgeving van twaalf resources op onze pagina over service mapping, kwam uit op MEDIUM. Hier noemt het architectenrapport de instance onder de gekoppelde eenheden van de garbage collection-beleidsregels die niet in de catalogus staan, met een plafond van LOW voor het zekerheidsniveau. Dat geeft aan dat de beleidsregels en het profiel een architect nodig hebben, niet dat de instance meer of minder overdraagbaar is.

Wat de run classificeert

EenheidKlasse en zekerheidsniveauWaarom
Bigtable-instance (met bijbehorende tabel)REDESIGN, LOWSTACKIT heeft geen wide-column-databasedienst. Het ontwerp van de rijsleutel en de HBase- of Bigtable-client-API verhuizen naar een zelf beheerde store of een herontworpen datamodel. Genoemd doel: een zelf beheerde store op SKE, of MongoDB Flex.
Garbage collection-beleid, 30 dagen (max_age)MANUAL_REVIEW, LOWNiet in de catalogus. Bevat de bewaarregel van één column family; een architect beslist waar die komt te staan.
Garbage collection-beleid, één versie (max_version)MANUAL_REVIEW, LOWNiet in de catalogus. Bevat de versieregel van de andere column family.
Application profile met routering naar één clusterMANUAL_REVIEW, LOWNiet in de catalogus. Bepaalt met welk cluster een applicatie praat; een store zonder dat begrip vereist dat de keuze elders wordt gemaakt.

Dataverplaatsing meldt DECISION REQUIRED met het mechanisme UNKNOWN: de bron noemt noch de omvang van de data, noch de wijzigingssnelheid, en de run gokt er niet naar.

De opties, met hun afwegingen

De eerste twee zijn de doelen die de engine noemt. De laatste twee zijn algemene praktijk die de engine niet voorstelt; ze passen alleen als de workload kleiner of kouder is dan een Bigtable-implementatie doet vermoeden.

OptieWat het inhoudtAfwegingen
Zelf beheerde wide-column-store op SKE (de run noemt Apache Cassandra of HBase als voorbeelden)Het dichtstbijzijnde datamodel: rij- of partitiesleutels, column families, cellen met tijdstempelU beheert het zelf: upgrades, back-ups, capaciteit en herstel. De client-API verandert tenzij u HBase kiest. Hoogste beheerlast.
MongoDB Flex met een herontworpen documentmodelSTACKIT documenteert het als een managed MongoDB-dienst, compatibel met native MongoDBToegang op sleutelbereik wordt een index- of shard-key-ontwerp. Het schema wordt herschreven, niet verplaatst. Toets het volume en de schrijfsnelheid die u werkelijk hebt aan de dienst.
PostgreSQL Flex met gepartitioneerde tabellen (algemene praktijk)Partities op tijd of apparaat vervangen bereiken van rijsleutelsManaged en relationeel, met een herschrijving van elk toegangspad. Verstandig bij een gematigd volume, niet bij onbegrensde schrijfbelasting.
Object Storage voor koude historie (algemene praktijk)Verlopen of zelden gelezen rijen belanden als bestandenGoedkoop en duurzaam, maar zonder opzoekingen met lage latentie. Meestal een aanvulling op een andere optie, geen vervanging.

Waar elk Bigtable-onderdeel naartoe gaat

Bigtable-onderdeelWat het doetWat u beslist
RijsleutelDe enige geïndexeerde waarde; rijen worden erop gesorteerd opgeslagen, dus het sleutelontwerp bepaalt hoe schrijfacties zich verspreiden en hoe bereiken worden gelezenWelke query's één bereikleesactie moeten blijven. De ontwerprichtlijnen van Google waarschuwen vanwege hotspots tegen sleutels die met de tijdstempel beginnen.
Column families en qualifiersGroepeert verwante kolommen; elke cel bevat versies met tijdstempelDe namen zijn open instellingen in de run. Beslis of versies voor u wel van belang zijn.
Garbage collection-beleidRegels voor leeftijd en versies per column family, toegepast door een achtergrondprocesHet doel heeft een eigen verloopmechanisme nodig. Bigtable kan verlopen cellen nog teruggeven tot de compactie draait, dus controleer of iets daarvan afhangt.
Twee clusters in twee zonesReplicatie begint wanneer een tweede cluster erbij komt; instances met meer dan één cluster staan standaard op eventual consistencyReplicatie en clusterzone zijn open instellingen. Beslis over de plaatsing van replica's op STACKIT en de consistentie die uw lezers accepteren.
Application profileStuurt de verzoeken van een applicatie; in het voorbeeld legt routering naar één cluster de ingest vast op telemetry-ew3-aLeg elke workload vast op een cluster of accepteer elk cluster; de doelstore heeft dat object niet.

Zo kiest u

  1. 1. Lees het toegangspatroon uit de code

    Som de query's op: puntleesacties op sleutel, prefix- of bereikscans, op tijd geordende leesacties per apparaat. Bereikscans op een samengestelde sleutel zijn waar een wide-column-store het best in is en wat elke andere optie moet nabouwen.

  2. 2. Verzamel de cijfers die de run u niet kan geven

    Omvang van de data, wijzigingssnelheid en schrijfdoorvoer staan niet in de Terraform. Het bestand over dataverplaatsing geeft aan dat omvang en wijzigingssnelheid niet in de bron staan en dat de acceptabele downtime en het herstelpunt niet zijn opgegeven; verzamel ze allemaal uit het draaiende systeem voordat u iets op de shortlist zet.

  3. 3. Leg de consistentie vast die uw lezers accepteren

    Een Bigtable-instance met meerdere clusters leest standaard eventually consistent. Was dat een bewuste keuze, dan kan een enkele primary met een replica volstaan; heeft niemand het gemerkt, zeg dat dan nu.

  4. 4. Schrijf bewaartermijnen op als eis

    De regels van 30 dagen en één versie in het voorbeeld zijn eisen, geen instellingen om over te nemen. Benoem de bewaartermijn in zakelijke termen en druk die dan uit in het doel.

  5. 5. Tel de beheerkosten mee

    Een zelf beheerde store levert het dichtstbijzijnde model op en kost een team dat het kan beheren. Een managed dienst verlaagt die kosten en verhoogt het herschrijfwerk. De run geeft voor geen van beide een prijs.

  6. 6. Plan de dataverplaatsing als laatste, niet als eerste

    Mechanisme, venster en validatie hangen af van het doel. Kies ze na de store, met rollback in het achterhoofd: houd Bigtable leesbaar totdat de nieuwe store echt verkeer heeft verwerkt.

Vragen die architecten stellen

Biedt STACKIT een managed equivalent van Bigtable?

De engine vindt er geen: zijn reden voor de instance is dat STACKIT geen wide-column-databasedienst heeft. De doelen die hij noemt zijn een zelf beheerde store op SKE of MongoDB Flex, beide na een redesign.

Waarom hebben de garbage collection-beleidsregels klasse MANUAL_REVIEW?

Ze staan niet in de catalogus van de engine, dus er wordt niets over beoordeeld of uitgewerkt. Ze doen er toch toe, omdat ze uw bewaarregels bevatten.

Kan StackToIT de Bigtable-data verplaatsen?

Nee. Het verplaatst nooit data. De run noemt de instance een stateful eenheid met onbeslist mechanisme en laat omvang, wijzigingssnelheid en acceptabele downtime aan u over.

Is een redesign altijd een herschrijving van de applicatie?

In de meeste gevallen is het een herschrijving van de datatoegangslaag. Een store met hetzelfde model kiezen, zoals HBase, beperkt die wijziging, ten koste van het zelf beheren.

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