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.
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
}- **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
| Eenheid | Klasse en zekerheidsniveau | Waarom |
|---|---|---|
| Bigtable-instance (met bijbehorende tabel) | REDESIGN, LOW | STACKIT 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, LOW | Niet 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, LOW | Niet in de catalogus. Bevat de versieregel van de andere column family. |
| Application profile met routering naar één cluster | MANUAL_REVIEW, LOW | Niet 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.
| Optie | Wat het inhoudt | Afwegingen |
|---|---|---|
| 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 tijdstempel | U beheert het zelf: upgrades, back-ups, capaciteit en herstel. De client-API verandert tenzij u HBase kiest. Hoogste beheerlast. |
| MongoDB Flex met een herontworpen documentmodel | STACKIT documenteert het als een managed MongoDB-dienst, compatibel met native MongoDB | Toegang 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 rijsleutels | Managed 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 bestanden | Goedkoop en duurzaam, maar zonder opzoekingen met lage latentie. Meestal een aanvulling op een andere optie, geen vervanging. |
Waar elk Bigtable-onderdeel naartoe gaat
| Bigtable-onderdeel | Wat het doet | Wat u beslist |
|---|---|---|
| Rijsleutel | De enige geïndexeerde waarde; rijen worden erop gesorteerd opgeslagen, dus het sleutelontwerp bepaalt hoe schrijfacties zich verspreiden en hoe bereiken worden gelezen | Welke query's één bereikleesactie moeten blijven. De ontwerprichtlijnen van Google waarschuwen vanwege hotspots tegen sleutels die met de tijdstempel beginnen. |
| Column families en qualifiers | Groepeert verwante kolommen; elke cel bevat versies met tijdstempel | De namen zijn open instellingen in de run. Beslis of versies voor u wel van belang zijn. |
| Garbage collection-beleid | Regels voor leeftijd en versies per column family, toegepast door een achtergrondproces | Het 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 zones | Replicatie begint wanneer een tweede cluster erbij komt; instances met meer dan één cluster staan standaard op eventual consistency | Replicatie en clusterzone zijn open instellingen. Beslis over de plaatsing van replica's op STACKIT en de consistentie die uw lezers accepteren. |
| Application profile | Stuurt de verzoeken van een applicatie; in het voorbeeld legt routering naar één cluster de ingest vast op telemetry-ew3-a | Leg elke workload vast op een cluster of accepteer elk cluster; de doelstore heeft dat object niet. |
Zo kiest u
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. 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. 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. 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. 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. 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
Hartelijk dank.
Uw verzoek is bij ons binnengekomen. Onze specialisten nemen contact met u op.