I många lägen ger minnesdatabaser mycket bättre prestanda än traditionella diskbaserade databaser. Det ger möjligheter att bygga snabbare och mer interaktiva applikationer, men minnesdatabaser innebär även en del nya saker att tänka på för utvecklare.

Att låsa eller inte låsa
Kan hindra arbetet

När hanteringen av data går mycket snabbare, samtidigt som antalet användare av system ökar, uppstår problem med låsning av data. Låsning är den teknik som används för att förhindra att flera användare kan ändra data på olika sätt samtidigt. Låsning är problematiskt, eftersom risken finns att det blir stopp i arbetet om många låser mycket information samtidigt.

Lösningen på problemet, är mycket enkelt uttryckt, att inte ha några lås utan tillåta flera tillfälliga värden samtidigt, men sedan endast godkänna uppdateringar som inte orsakar konflikter. Ett sätt att uttrycka det är att byta en pessimistisk kontrollstrategi mot en optimistisk.

Annorlunda transaktioner
Ny kod krävs

Med nya kontrollstrategier förändras synen på transaktioner. Det är inte längre lämpligt att ha transaktioner som tar lång tid, vilket innebär att data som visas på ett formulär kan förändras av andra användare under tiden som användaren arbetar med formuläret. Det här förändrar utvecklarens arbete. Kraften måste läggas på att skapa formulär som visar att data förändras av andra användare. Det innebär att ny kod måste skrivas.

Ny syn på index
Kan bli onödigt

På en låg nivå förändras mycket när det gäller den tekniska lagringen av data i databaser. Nya sätt att organisera data innebär krav på nya typer av index och ibland att index blir ineffektiva. Ibland går det helt enkelt snabbare att söka igenom data i minnet direkt än att använda index.

Fler alternativ och beslut
Måste ske tidigt i projektet

För tio år sedan fanns det inga, eller väldigt få, kontroverser kring användningen av databaser i system. Valet föll på en traditionell relationsdatabas på disk.

I dag måste beslut om vilken typ av databasteknik som ska användas fattas tidigt i projekt. Det handlar inte bara om att välja diskdatabaser eller minnesdatabaser, eller hybridlösningar, utan även om att välja mellan relationsdatabaser och olika typer av nosql-databaser. Startfasen för ett projekt blir viktigare sett ur ett arkitekturperspektiv och i värsta fall också krångligare.

Viktigt med tillförlitlighet
Mer kontroll behövs

Tillförlitlighet i databasvärlden stavas acid (atomicity, concurrency, isolation, durability). Det handlar om att garantera att data hanteras korrekt och att det går att lita på att korrekta data finns i databaser.

Med diskbaserade relationsdatabaser är det här vardagsmat, så icke med nya databastyper som minnesdatabaser. Det gäller att kontrollera vad ”stöd för acid” faktiskt innebär. Återigen, valet av databas för ett projekt blir en viktigare, och eventuellt svårare fråga, som kan komma att påverka hur programkod måste skrivas.

Segare start
Underhåll bör ses över

Det tar längre tid att starta en minnesdatabas än en diskbaserad eftersom data måste läsas in i minnet. Det gäller alltså att skapa system för att underhåll kan skötas under drift.

Förändrade prestandamönster
Uppdatering blir effektivare

Diskbaserade databaser är relativt sett bra på att läsa och skriva stora datamängder sekventiellt. Minnesdatabaser är relativt sett bra på att läsa och skriva små datamängder slumpmässigt, vilket innebär att uppdateringar av enskilda poster blir mycket effektivare.

Nya datamodeller
Arbetet föändras

Relationsdatabaser kräver enkla och normaliserade datamodeller. Med minnesdatabaser blir det enklare att använda komplexa datamodeller som bättre avspeglar de affärsproblem som ska lösas i ett system. Det innebär dels att utvecklarens arbete blir annorlunda, dels att det förenklas.

Andra flaskhalsar
Komprimering kan lösa problem

Eftersom hanteringen av data blir mycket snabbare kan saker som tidigare inte var prestandakritiska plötsligt bli flaskhalsar. Ett exempel är att flaskhalsen prestandamässigt med diskbaserade databaser är att läsa data från och skriva data på disk. Med minnesdatabaser blir andra faktorer viktigare, till exempel att utnyttja tillgängligt minne maximalt och att komma runt begränsningar med bandbredd.

Ett sätt att lyckas med det är att komprimera data. Med dagens kraftfulla processorer och tekniker för parallell bearbetning av data går det snabbt att komprimera och dekomprimera data.