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.