Innehållsförteckning:
Video: Lars Arvestad om hur bioinformatiker arbetar med lagring och delning av data 2024
En Bigtable har tabeller precis som RDBMS gör, men i motsats till en RDBMS har en Bigtable-tabell i allmänhet inga relationer med andra tabeller. Istället grupperas komplexa data i ett enda bord.
En tabell i en Bigtable består av grupper av kolumner, kallad kolumnfamiljer och en radnyckel. Dessa tillsammans möjliggör snabb uppslag av en enda post av data som hålls i en Bigtable.
Använda radnycklar
Varje rad måste identifieras unikt. Här är en radnyckel in. En radnyckel är en unik sträng som används för att referera till en enskild post i en Bigtable. Du kan tänka på dem som att vara besläktad med en primär nyckel eller som ett socialt säkerhetsnummer för Bigtables.
Många Bigtables ger inte bra sekundära index (index över kolumnvärden själva), så att designa en radnyckel som möjliggör snabb sökning av poster är avgörande för att säkerställa god prestanda.
En välkonstruerad radnyckel gör att en post kan placeras utan att behöva få din ansökan att läsas och kontrollera användbarheten av varje post själv. Det går snabbare för databasen att göra detta.
Radnycklar används också av de flesta Bigtables för att jämnt fördela poster mellan servrar. En dåligt utformad radnyckel kommer att leda till att en server i ditt databaskluster mottar mer belastning (förfrågningar) än de andra servrarna, vilket saktar användarens synliga prestanda för hela databasstjänsten.
Skapa kolumnfamiljer
En kolumnfamilj är en logisk gruppering av kolumner. Även om Bigtables tillåter dig att ändra antalet kolumner som stöds i någon tabelldefinition vid körning måste du ange de tillåtna kolumnfamiljerna framåt. Dessa kan inte modifieras utan att ta servern offline. Som ett exempel kan en adressboksprogram använda en familj för hemadress. Detta kan innehålla kolumnerna Adresslinje 1, Adresslinje 2, Område, Stad, Län, Stat, Land och Postnummer.
Inte alla adresser kommer att ha data i alla fält. Till exempel kan adresslinje 2, område och län ofta vara tomma. Å andra sidan kan du bara ha data i adresslinje 1 och postnummer. Dessa två exempel är båda fina i samma hemadresss kolumnfamilj.
Med varierande antal kolumner har dess nackdelar. Om du vill att HBase, till exempel, listar alla kolumner inom en viss familj, måste du iterera över alla rader för att få hela listan över kolumner! Så, du måste hålla reda på din datamodell i din ansökan med en Bigtable klon för att undvika denna prestationsstraff.
Använda tidsstämplar
Varje värde i en kolumn kan normalt lagra olika versioner.Dessa versioner refereras genom att använda ett tidsstämplingsvärde.
Värden ändras aldrig - ett annat värde läggs till med en annan tidsstämpel. För att radera ett värde lägger du till en gravstenmarkör till värdet, vilket i grunden markerar att värdet raderas vid en viss tidpunkt.
Alla värden för samma radnyckel och kolumnfamilj lagras tillsammans, vilket innebär att alla sökningar eller versionsbeslut tas på en enda plats där alla relevanta data finns.
Hantering av binära värden
I Bigtables är värden helt enkelt byte-arrays. De kan till exempel vara text, siffror eller till och med bilder. Vad du lagrar i dem är upp till dig.
Endast några Bigtable-kloner stöder värdetyping. Hypertable, till exempel, låter dig ställa in typer och lägga till sekundära index till värden. Cassandra tillåter dig också att definiera typer för värden, men dess intervall-sökindex (mindre än större än operationer för varje datatyp) är begränsade till att snabba upp nyckeluppslagningsoperationer, inte värdesammanställningsoperationer.