Inhoudsopgave:
Video: Streaming music for every moment with Spotify and Google Cloud Platform 2024
Een Bigtable heeft tabellen net zoals een RDBMS dat doet, maar in tegenstelling tot een RDBMS hebben een Bigtable-tabellen over het algemeen geen relaties met andere tabellen. In plaats daarvan worden complexe gegevens gegroepeerd in een enkele tabel.
Een tabel in een Bigtable bestaat uit kolomgroepen, kolomfamilies en een rijsleutel. Deze zorgen samen voor een snelle opzoeking van één record met gegevens in een Bigtable.
Rijen gebruiken
Elke rij moet uniek worden geïdentificeerd. Dit is waar een rijsleutel binnenkomt. Een rijsleutel is een unieke reeks die wordt gebruikt om te verwijzen naar een enkel record in een Bigtable. Je kunt ze beschouwen als verwant aan een primaire sleutel of als een sofinummer voor Bigtables.
Veel Bigtables bieden geen goede secundaire indexen (indexen over kolomwaarden zelf), dus het ontwerpen van een rijsleutel die een snelle opzoeking van records mogelijk maakt, is cruciaal voor goede prestaties.
Met een goed ontworpen rijsleutel kan een record worden gevonden zonder dat uw toepassing hoeft te worden gelezen en moet de toepasbaarheid van elk record zelf worden gecontroleerd. Het is sneller voor de database om dit te doen.
Rijtoetsen worden ook door de meeste Bigtables gebruikt om records tussen servers gelijkmatig te verdelen. Een slecht ontworpen rijsleutel zal ertoe leiden dat één server in uw databasecluster meer belasting (verzoeken) ontvangt dan de andere servers, waardoor de door de gebruiker zichtbare prestaties van uw hele databaseservice afnemen.
Kolomfamilies maken
Een kolomfamilie is een logische groepering van kolommen. Hoewel Bigtables u in staat stellen om het aantal kolommen te variëren dat wordt ondersteund in elke tabeldefinitie tijdens runtime, moet u de toegestane kolomfamilies vooraan opgeven. Deze kunnen meestal niet worden gewijzigd zonder de server offline te nemen. Als voorbeeld kan een adresboektoepassing één familie gebruiken voor thuisadres. Dit kan de kolommen Address Line 1, Address Line 2, Area, City, County, State, Country en Zip Code bevatten.
Niet alle adressen hebben gegevens in alle velden. Adresregel 2, Gebied en Provincie kunnen bijvoorbeeld vaak leeg zijn. Aan de andere kant hebt u mogelijk alleen gegevens in adresregel 1 en postcode. Deze twee voorbeelden zijn allebei prima in dezelfde kolom met huisadreskolommen.
Het variëren van het aantal kolommen heeft zijn nadelen. Als u bijvoorbeeld HBase wilt gebruiken om alle kolommen binnen een bepaalde familie weer te geven, moet u alle rijen herhalen om de volledige kolommenlijst te krijgen! U moet dus uw gegevensmodel in uw toepassing bijhouden met een Bigtable-kloon om deze prestatievergoeding te voorkomen.
Tijdstempels gebruiken
Elke waarde in een kolom kan doorgaans verschillende versies opslaan.Naar deze -versies wordt verwezen door een tijdstempelwaarde te gebruiken.
Waarden worden nooit gewijzigd - een andere waarde wordt toegevoegd met een ander tijdstempel. Als u een waarde wilt verwijderen, voegt u een tombstone-markering toe aan de waarde, die in feite aangeeft dat de waarde op een bepaald moment is verwijderd.
Alle waarden voor dezelfde rijsleutel en kolomfamilie worden samen opgeslagen, wat betekent dat alle opzoekingen of versiebeslissingen worden genomen op één plaats waar alle relevante gegevens zich bevinden.
Omgaan met binaire waarden
In Bigtables zijn waarden eenvoudigweg byte-arrays. Ze kunnen bijvoorbeeld tekst, cijfers of zelfs afbeeldingen zijn. Wat u erin bewaart, is aan u.
Slechts enkele Bigtable-klonen ondersteunen het typen van waarden. Met Hypertable kunt u bijvoorbeeld typen instellen en secundaire indexen aan waarden toevoegen. Met Cassandra kunt u ook typen voor waarden definiëren, maar de bereik-queryindexen (kleiner dan en groter dan bewerkingen voor elk gegevenstype) zijn beperkt tot het versnellen van opzoekbewerkingen voor sleutels, niet tot waardenvergelijkingsbewerkingen.