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.