Send til redaktion@dotnyt.dk hvis du har feedback, gode idéer, konstruktiv kritik eller svinere. Alt har interesse!
Nyheder til dig som udvikler softwareprodukter til skyen med Microsoft-teknologi
Bare mig selv
Spørg mig ikke hvorfor, men partitionering er at af mine yndlingsemner. Måske er det fordi det er partitionering der afgør om din software stadig fungerer når der kommer mange brugere på. Og man skal jo planlægge efter succes og derfor skal man også gøre sig umage med partitionering.
I dag vil jeg starte fra bunden og give et overblik over hvad partitionering egentlig er og så vil jeg fortælle hvordan man griber det an på en god måde. Jeg tager udgangspunkt i Cosmos DB men det er samme principper for andre dokumentdatabaser, for Table Storage og i princippet også hvis man vil partitionere en SQL Server.
Forestil dig at du har en computer med uendeligt mange harddiske. Hver harddisk har plads til 10 GB data. Hvis du vil læse en masse data hurtigt er det vigtigt at de ligger på samme harddisk for ellers skal du slå op på flere forskellige harddiske for at finde dine data. Samtidig er det vigtigt du ikke har tænkt dig at lægge mere end 10 GB data på én harddisk for det kan du ikke.
Det er sådan Cosmos DB fungerer. Selvom man har uendelig meget plads i Cosmos DB så er det sådan at man kan ikke lægge mere end 10 GB data i én partition. Det er en af grundene til at man skal tænke sig om når man partitionerer data. Den anden grund fik jeg også nævnt og det er at det er langt hurtigere at læse data som ligger i samme partition i stedet for at skulle ud og finde dem i hundredevis af forskellige partitioner som hver især kræver et særskilt kald.
Så det er grunden til at man skal partitionere – og hvordan gør man så? Jo, ganske enkelt udpeger man et felt i sine data som indeholder navnet på den partition hvor data skal gemmes. Lad os tage et eksempel.
Lad os sige du vil gemme en liste af alle byer i verden. Så kunne du have et felt som hedder “land” og den kan du så udpege som den der styrer din partition. Så vil alle danske byer ligge i den samme partition og alle byer i Rusland vil ligge i en anden partition. Du skal bare være sikker på at mængden af byer i Rusland aldrig overstiger 10 GB. I så fald skal du partitionere yderligere, f.eks. på region eller kommune.
Er I med endnu? Jeg håber det giver mening. Altså man fortæller Cosmos DB hvilke data den skal lægge sammen ved at udpege et felt i dine data og alle de data med samme værdi i det felt kommer til at ligge sammen. Det er partitionering.
I næste afsnit skal vi tale om hvordan man så griber det an konkret når man skal partitionere sine data. Jeg tager udgangspunkt i et realistisk eksempel.