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 kommer vi att mer specifikt undersöka vilka fördelarna är med hjälp av ett bredare spektrum av databaser. Bland annat tittar vi egenskaper som sharding och replication. För vår jämförelse har vi valt att fokusera fem databaser: Dynamo (Amazon S3), BigTable (Google App Engine), CouchDB, MongoDB samt Neo4j.

 

I den andra delen kör vi ett prestandatest 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 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 en bild över vem som faktiskt kan tänkas dra nytta av att lägga undan sin SQL-databas 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 skillnaden i tidsåtgång beroende datastorlek. CouchDB visade sig ta längst tid av alla de NoSQL-databaserna vi testade 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.