Versioned data in SQL databases - A performance analysis
No Thumbnail Available
URL
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu |
Master's thesis
Authors
Kääriäinen, Anssi
Date
2014
Department
Major/Subject
Ohjelmistotekniikka
Mcode
T-106
Degree programme
Language
en
Pages
74 s. + liitt. 15 s.
Series
Abstract
In this thesis I investigated three different ways of storing versioned data· in SQL databases. The analysis concentrated on performance aspects, but I also inspected how the used approaches affected query complexity, ability to use database constraints and other similar non-performance considerations. The versioning approaches examined were storing the versioned data in the same table with currently valid data, storing the data in a separate table and an approach using entity-attribute-value (EAV) structure. I benchmarked the approaches using two different schemes. The first one is a simple one table schema which was used to compare read, insert, update and delete queries. The second benchmark compared various real-world queries against a schema designed for a time tracking software. Intable and audit table approaches exceled in different usage situations. Audit table approach had excellent characteristics for reading current row versions at the cost of data modification speed, while intable versioning had good update speed and historical version read capabilities at the cost of slower current version read speed. The EAV approach was slow for almost all queries.Tutkin diplomityössäni kolmea erilaista tapaa tallentaa versioitua tietoa SQL tietokantaan. Tutkin lähestymistapoja erityisesti tehokkuusnäkökulmasta, mutta työssäni käsitellään myös lähestymistapojen vaikutusta kyselyiden monimutkaisuuteen, mahdollisuuteen käyttää rajoitteita tietokannassa ja muihin suorituskykyyn liittymättömiin ongelmiin. Tutkitut versiointitavat ovat taulun sisäinen versiointi, versiotietojen tallentaminen erilliseen tauluun ja entiteetti-attribuutti-arvo rakenne. Vertailin lähestymistapojen käyttäen kahta erilaista tietokantaskeemaa. Ensimmäisessä skeemassa vertailin yksinkertaisia muokkaus- ja lukukyselyjä. Toisessa skeemassa tutkin kyselyjä joita tarvitaan työajankohdennukseen käytetyssä järjestelmässä. Taulun sisäisen ja erilliseen tauluun tehdyn versioinnin paremmuusjärjestys vaihteli eri käyttötapauksissa. Erilliseen tauluun tehty versiointi parjasi erinomaisesti rivien nykyversioiden lukua vaativissa käyttötapauksissa, kun taas samaan taulun sisäinen versiointi oli tehokkaampi muokkausta ja historiatietoja vaativissa kyselyissä. Entiteetti-attribuutti-arvo lähestymistapa oli hitain lähes kaikissa käyttötapauksissa.Description
Supervisor
Saikkonen, HeikkiKeywords
tiedon versiointi, SQL, aikaulottuvuudet tietokannoissa, suorituskyky, suorituskykytesti, data versioning, temporal database, performance, benchmark