Innholdsfortegnelse:
Video: Lars Arvestad om hur bioinformatiker arbetar med lagring och delning av data 2025
En Bigtable har tabeller akkurat som en RDBMS gjør, men i motsetning til en RDBMS, har Bigtable tabeller generelt ikke forhold til andre tabeller. I stedet er komplekse data gruppert i et enkelt bord.
Et bord i en Bigtable består av grupper av kolonner, kalt kolonnefamilier , og en radnøkkel. Disse sammen tillater rask oppslag av en enkelt oversikt over data som holdes i en Bigtable.
Bruke radnøkler
Hver rad må være unikt identifisert. Dette er hvor en radnøkkel kommer inn. En radnøkkel er en unik streng som brukes til å referere til en enkelt post i en Bigtable. Du kan tenke på dem som å være beslægtet med en primærnøkkel eller som et personnummer for Bigtables.
Mange Bigtables gir ikke gode sekundære indekser (indekser over kolonneverdier seg selv), så utformingen av en radnøkkel som muliggjør rask oppslag av poster, er avgjørende for å sikre god ytelse.
En veldesignet radnøkkel tillater at en plate skal plasseres uten at du må lese søknaden din og kontrollere brukbarheten til hver plate selv. Det er raskere for databasen å gjøre dette.
Radetaster brukes også av de fleste Bigtables for jevnt å distribuere poster mellom servere. En dårlig utformet radnøkkel vil føre til at en server i databaseklyngen din mottar mer belastning (forespørsler) enn de andre serverne, og senker brukervennlig ytelse for hele databasetjenesten.
Opprette kolonnefamilier
En kolonnefamilie er en logisk gruppering av kolonner. Selv om Bigtables tillater deg å variere antall kolonner som støttes i en tabelldefinisjon ved kjøring, må du angi de tillatt kolonnefamiliene på forsiden. Disse kan vanligvis ikke endres uten å ta serveren frakoblet. Eksempelvis kan et adressebokprogram bruke en familie til Hjemadresse. Dette kan inneholde kolonnene Adresselinje 1, Adresselinje 2, Område, By, Fylke, Stat, Land og Postnummer.
Ikke alle adressene vil ha data i alle feltene. For eksempel kan adresse linje 2, område og fylke ofte være tomt. På den annen side kan det hende du kun har data i adresselinje 1 og postkode. Disse to eksemplene er begge fine i samme hjemmekatalog kolonnefamilie.
Å ha varierende antall kolonner har sine ulemper. Hvis du for eksempel vil HBase å liste alle kolonnene i en bestemt familie, må du iterate over alle rader for å få den komplette listen over kolonner! Så, du må holde styr på datamodellen din i din søknad med en Bigtable klon for å unngå denne prestasjonsstraffen.
Bruke tidsstempler
Hver verdi i en kolonne kan typisk lagre forskjellige versjoner.Disse versjonene refereres ved å bruke en tidsstempelverdi.
Verdiene blir aldri endret - en annen verdi legges til med et annet tidsstempel. For å slette en verdi, legger du til en gravsteinmarkør til verdien, som i utgangspunktet flagger at verdien slettes på et bestemt tidspunkt.
Alle verdier for samme radnøkkel og kolonnefamilie lagres sammen, noe som betyr at alle oppslag eller versjonsbeslutninger tas på et enkelt sted der alle relevante data ligger.
Håndtering av binære verdier
I Bigtables er verdier ganske enkelt byte-arrays. For eksempel kan de være tekst, tall eller til og med bilder. Hva du lagrer i dem, er opp til deg.
Bare noen få Bigtable kloner støtter verdi-typing. Hypertable, for eksempel, lar deg sette typer og legge sekundære indekser til verdier. Cassandra lar deg også definere typer for verdier, men rekkeviddeindeksene (mindre enn større enn operasjoner for hver datatype) er begrenset til å øke hastighetsoppslagoperasjoner, ikke verdi sammenligningsoperasjoner.
