03.11.10 | kl. 08:51 | Aktuelt, Prosabladet
Sæt turbo på databasen

Bag VoltDB står MIT-professoren (Massachusetts Institute of Technology) Michael Stonebraker. (Foto: CC0 1.0 Universal)
Nutidens velkendte databaser bygger på ideer, der har 40 år på bagen, så der er plads til forbedringer.
– Mange databasesystemer er bygget op omkring paradigmer fra 1970'erne, og det laver man ikke bare lige om.
Sådan lyder vurderingen fra ph.d.-studerende på IT-Universitetet Rasmus Resen Amossen, som forsker i, hvordan databaser kan gøres hurtigere. Internettet og dets gigantiske tjenester såsom Googles søgninger og Facebooks sociale netværk har sat fokus på, hvordan databaserne kan trimmes og få bedre ydelse.
Et enkelt eksempel er den splinternye database VoltDB, som i nogle tilfælde kan være 100 gange hurtigere end webfavoritten MySQL.
Bag VoltDB står MIT-professoren (Massachusetts Institute of Technology) Michael Stonebraker med mange års databaseerfaring fra for eksempel Postgres. Sammen med andre forskere dissekerede han en open source-database for at se, hvad der egentlig sker under belastning. Det viste sig, at en overraskende stor del af tiden gik med at håndtere logfiler, låsning af rækker og med at have styr på i/o-buffere, mens ganske lidt af processortiden – kun få procent – gik med det egentlige søgearbejde.
– Der bliver sat et kæmpe skib i søen for at lave meget lidt arbejde, siger Rasmus Resen Amossen.
I VoltDB er såkaldte analytiske forespørgsler, som tager lang tid, fravalgt fra starten. I stedet fokuseres på transaktioner, som foretages over kort tid.
– Data tilgås via stored procedures, og derfor kender databasen hele arbejdsbyrden på forhånd.
I stedet for at udføre opgaverne parallelt tager VoltDB opgaverne i serier, og det gør mange ting meget lettere.
Ofte betyder det, at man ikke behøver at føre log over transaktionerne. VoltDB skriver kun til hukommelsen, så behovet for at holde styr på diskbuffere forsvinder også som dug for solen.
– Der er en masse, der kan skæres væk, og i indledende tests fik de et speedup på en faktor 100. Alle de her paradigmer fra 70'erne, hvor meget af det har vi egentlig brug for i vore dage, spørger Rasmus Resen Amossen.
En database til enhver lejlighed
VoltDB bygger på SQL og ligner på den måde de gamle databaser, men mange andre nye databaser er kendt under overskriften NoSQL, der efter behov kan opfattes som 'ingen SQL' eller 'not only SQL', ikke bare SQL. Mange af disse benytter den såkaldte key-value-model, hvor en nøgle peger på en enkelt værdi. Men mange går galt i byen ved at se en klar grænse mellem relationsdatabaser og key-value-modeller. En relationsdatabase kan nemlig godt implementeres oven på en key-value-store. Det nye i de nye databaser er, at de forsimpler ideen om, hvad en database skal kunne. Én størrelse passer nemlig ikke til alle.
– En generaliseret database, der passer til alle behov, er i sagens natur sværere at optimere end en specialiseret, siger Rasmus Resen Amossen.
Facebook benytter sin egen hjemmelavede key-value-database Cassandra.
– Facebook er så kæmpestort, og de skal håndtere en mega-belastning, så hvert millisekund tæller. Der er uhensigtsmæssigheder i de gamle paradigmer, og hvis Facebooks arbejdsbelastning bruger, hvad man kan finde i en key-value-store, så er det jo fint.
En anden ny type database, som Rasmus Resen Amossen synes flere danskere skulle kigge på, er kolonnedatabaser, som er skabt til analytiske opgaver. Ved at gemme data i kolonner i stedet for i rækker er det meget nemmere at udføre såkaldte aggregeringer, som for eksempel at finde summen af alle tal i en kolonne.
– Du kan ofte opnå en kæmpe faktor i speedup ved at flytte data over i kolonnedatabaser, hvis dit workload er analytisk. Det er derfor lidt ærgerligt, at mange ikke kender til de her systemer.
-
Seks nye databaser
Alle de databaser, der nævnes her, findes i open source-udgaver.
Cassandra
En nøgle-værdi-database (key-value-store) uden SQL, oprindeligt udviklet af Facebook til at håndtere søgning i brugerens indboks. Cassandra er et klyngesystem, hvor alle noder efter et vist stykke tid er i en konsistent tilstand, altså indeholder samme data. Alle klyngens noder er identiske. Skrevet i Java.
MongoDB
Også en nøgle-værdi-database uden SQL, men værdierne kan være strukturerede som dokumenter i JSON-formatet. MongoDB gemmer data i hukommelsen og skal udrulles i en master-slave-konfiguration for at sikre, at data ikke forsvinder ud i det blå ved nedbrud. Skrevet i C++ med drivere til mange andre miljøer.
VoltDB
En ny database skabt af MIT-professoren Michael Stonebraker, som tidligere har haft en finger med i spillet om SQL-databaserne Ingres, Postgres og kolonne-databasen Vertica. VoltDB adskiller sig fra de andre databaser i den nye generation ved at benytte klassiske tabeller og SQL. VoltDB kan ifølge sine egne benchmarks slå stort set alle andre databaser af banen, målt i transaktioner per tid. Ligesom MongoDB sker det ved at håndtere alle data i hukommelsen samt at skære unødvendige funktioner væk og undgå JDBC- og ODBC-drivere. Søgninger udføres via stored procedures, som skrives i Java. Bygger på Java og C++.
CouchDB
Minder meget om MongoDB ved at være dokumentorienteret med JSON og uden SQL, men benytter disk som lager og er skrevet til at køre på en klynge af almindelige pc'er. Skrevet i Erlang. Værdier i CouchDB kan tilgås med en URL.
Redis
Kalder ikke sig selv for en database, men benytter i stedet den mere ydmyge betegnelse 'datastore'. Benytter også nøgle-værdi-modellen, hvor værdier kan være strenge samt forskellige strukturerede mængder af strenge, såsom lister, hashmaps osv. Skrevet i C.
MonetDB
Er en kolonne-orienteret database med blikket rettet mod meget store analytiske opgaver.
PRINT