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, Heikki

Keywords

tiedon versiointi, SQL, aikaulottuvuudet tietokannoissa, suorituskyky, suorituskykytesti, data versioning, temporal database, performance, benchmark

Other note

Citation