Utredning av NoSQL,
ur ett
SQL-perspektiv
Peter Södergren, Björn Englund
Sammanfattning
Denna rapport utreder de i dagsläget olika
typerna av databaser som finns tillgängliga. Vad har de nya, icke-relationella
databaserna att erbjuda? Vilka skillnader finns?
Vad är deras respektive
för- och nackdelar?
I den första delen av
rapporten så kommer vi att
mer specifikt undersöka vilka fördelarna är med hjälp av ett
bredare spektrum av databaser. Bland annat så tittar
vi på egenskaper
så som sharding
och replication. För vår jämförelse så har vi
valt att fokusera på fem databaser: Dynamo (Amazon S3), BigTable
(Google App Engine), CouchDB, MongoDB
samt Neo4j.
I den andra delen kör
vi ett prestandatest
på tre av
databaserna, nämligen CouchDB, MongoDB och Neo4j. För detta test använder vi en typ av
data som bäst kan liknas med den data man stöter på för
sociala nätverk. Vi använder oss av:
personer, blogginlägg, relationer, evenemang
samt kommentarer.
Syftet med denna utredning är att
försöka få en bild över vem
som faktiskt kan tänkas
dra nytta av att lägga
undan sin SQL-databas på vinden, och
istället börja använda en icke-relationell databas istället.
Utöver att bara förklara skillnaderna sammanställer vi även de olika egenskaperna för de olika databaserna i en tabell för att göra jämförelsen mer lättöverskådlig. Vi förser även läsaren med ett avsnitt i resultatdelen som behandlar olika typer av data och deras lämplighet med olika typer av NoSQL-databaser. Prestandatesterna visade att MongoDB var snabbast eftersom den var bäst lämpad för den data och de frågor som vi testade med. Neo4J gav även goda resultat framför allt med avseende på skillnaden i tidsåtgång beroende på datastorlek. CouchDB visade sig ta längst tid av alla de NoSQL-databaserna vi testade på grund av att den inte lämpade sig för den data och de frågor vi valde. Detta gjorde att CouchDB behövde sända stora mängder data till programmet för extern filtrering, vilket fick längre tidsåtgång som följd.