Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Smetanova ulica 17
2000 Maribor, Slovenija
Rajko Bunderl
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov
Diplomsko delo
Maribor, september 2015
II
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov
Diplomsko delo
Študent: Rajko Bunderl
Študijski program VS – Računalništvo in informacijske tehnologije
Mentor(ica): doc. dr. Milan Ojsteršek
Lektor(ica): Nina Skube prof. slov.
III
IV
ZAHVALA
Zahvaljujem se mentorju doc. dr. Milanu
Ojsteršku za pomoč in vodenje pri nastajanju
diplomskega dela.
Posebna zahvala velja družini, ki mi je nudila
podporo in mi omogočila študij.
V
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov
Ključne besede: podatkovne baze, NewSQL, NoSQL, VoltDB
UDK: 004.65(043.2)
Povzetek: V diplomski nalogi smo predstavili osnovne koncepte podatkovnih baz NoSQL
in NewSQL. V obeh skupinah smo predstavili njihovo arhitekturo in našteli njihove
pripadnike. Podrobneje smo se osredotočili na podatkovni sistem VoltDB. V praktičnem
delu diplomske naloge smo za potrebe analiziranja uporabili podatke podatkovne baze
nacionalne infrastrukture odprtega dostopa. Podatkovna baza je sestavljena iz
metapodatkov o publikacijah in njihovih avtorjih. Naš cilj je bil analizirati razširljivost
podatkovne baze VoltDB ter hitrosti izvajanja transakcij po določenem iskanem nizu. Filtri
iskanja nam na podlagi podanega iskanega niza filtrirajo najpogostejše metapodatke ter
jih razporedijo v določeno strukturo najpogostejših zadetkov. Pri veliki količini podatkov
narašča časovna zahtevnost ustvarjanja posameznega filtra. Za analiziranje smo uporabili
čase izvajanja transakcij na enem strežniku ter jih primerjali s časi, ko je podatkovna baza
razširjena na dveh strežnikih. Ugotovili smo, da z razširljivostjo VoltDB-ja na dva strežnika
pohitrimo časovno zahtevnost izvajanja transakcij.
VI
Usage of NewSQL databases for processing of
big data
Keywords: databases, NewSQL, NoSQL, VoltDB.
UDK: 004.65(043.2)
Abstract: In the diploma thesis we present basic concepts of the NoSQL and NewSQL
databases. We present both architectures and their representative implementations. In
detail, we focus on the VoltDB implementation of the NewSQL database. In the practical
part of this thesis we use the data from the national open access infrastructure. The data
consists of metadata about publications and their authors. Our goal was to analyse the
scaling capabilities of the VoltDB database and the speed of transactions occurring while
searching the database with a defined search string. Using search filters, we output a list
of top N search hits and their metadata. Thus, the time complexity of each search filter
increases with the number of metadata. During the analysis we measured the transaction
execution times on a database installed on one server and compared them with execution
times measured on a database installed on two servers. We showed that we can speed
up the transaction execution times by scaling the database to two servers.
VII
Kazalo vsebine
1 UVOD ......................................................................................................................................... 1
1.1 NAMEN IN CILJ DIPLOMSKEGA DELA ........................................................................................ 1
1.2 STRUKTURA DIPLOMSKE NALOGE ........................................................................................... 2
2 NOVE PODATKOVNE BAZE ..................................................................................................... 3
2.1 ZAČETEK NOVIH PODATKOVNIH MODELOV ............................................................................... 3
2.1.1 Velike količine podatkov ................................................................................................. 3
2.1.2 Podatkovna gruča ........................................................................................................... 5
2.1.3 Lastnosti transakcije . ..................................................................................................... 6
2.2 NOSQL PODATKOVNI MODELI ................................................................................................ 6
2.2.1 Uvod ............................................................................................................................... 6
2.2.2 Osnovni principi podatkovnih modelov NoSQL .............................................................. 7
3 PREDSTAVITEV IN PRIMERJAVA NEWSQL PODATKOVNIH BAZ ..................................... 12
4 VOLT DB .................................................................................................................................. 14
OPIS PODATKOVNE BAZE VOLTDB ................................................................................................... 14
4.1 ARHITEKTURA PODATKOVNE BAZE VOLTDB .......................................................................... 14
4.1.1 Hramba podatkov v pomnilniku .................................................................................... 15
4.1.2 Razpoložljivost .............................................................................................................. 17
4.1.3 Trajnost ......................................................................................................................... 18
4.1.4 Fragmentiranje podatkovne baze ................................................................................. 19
4.1.5 Asinhrono/sinhrono proženje shranjenih procedur ....................................................... 20
4.1.6 Izvoz toka podatkov ...................................................................................................... 22
5 MERITEV IN RAZLAGA REZULTATOV .................................................................................. 24
5.1 TESTNO OKOLJE ................................................................................................................. 25
5.1.1 VoltDB........................................................................................................................... 25
5.2 NAMESTITEV IN KONFIGURACIJA VOLTDB-JA ........................................................................ 26
5.2.1 Migracija podatkov iz MSSQL v VoltDB ....................................................................... 27
5.2.2 Shranjene procedure in odjemalčeva aplikacija ........................................................... 28
5.3 MERITEV ČASA POSAMEZNE TRANSAKCIJE GLEDE NA KOLIČINO PODATKOV IN ŠTEVILO ZADETKOV
.......................................................................................................................................... 29
5.4 RAZLAGA REZULTATOV ........................................................................................................ 31
6 SKLEP ...................................................................................................................................... 35
7 VIRI ........................................................................................................................................... 37
VIII
Kazalo slik:
SLIKA 2.1: STRUKTURA VELIKIH KOLIČIN PODATKOV ................................................................................ 4
SLIKA 2.2: PODATKOVNA GRUČA ........................................................................................................... 5
SLIKA 2.3: KLJUČ TABELA ...................................................................................................................... 9
SLIKA 2.4: STOLPIČNA HRAMBA ........................................................................................................... 10
SLIKA 2.5: DOKUMENTNA SHRAMBA ..................................................................................................... 10
SLIKA 2.6: GRAF MODEL ...................................................................................................................... 11
SLIKA 4.1: POMNILNIŠKA RAZPOREJENOST VOLTDB-JA ........................................................................ 16
SLIKA 4.2: DELOVANJE K-ZAŠČITE ....................................................................................................... 17
SLIKA 4.3: ZAŠČITA PRED OMREŽNO NAPAKO ....................................................................................... 18
SLIKA 4.4: REPLIKACIJA ...................................................................................................................... 18
SLIKA 4.5: PROCESIRANJE TRANSAKCIJ ............................................................................................... 21
SLIKA 4.6: IZVOZNI ODJEMALEC S HADOOP INTEGRACIJO ...................................................................... 23
SLIKA 5.1: FILTER ISKANJA .................................................................................................................. 25
SLIKA 5.2: ER DIAGRAM PODATKOVNE BAZE ......................................................................................... 27
Kazalo tabel:
TABELA 3.1: PRIMERJAVA PODATKOVNIH BAZ ....................................................................................... 12
TABELA 4.1: PODPRTE KNJIŽNICE ........................................................................................................ 23
TABELA 5.1:SISTEMSKE KONFIGURACIJE .............................................................................................. 26
TABELA 5.2: SHRANJENA PROCEDURA AVTOR ...................................................................................... 28
TABELA 5.3: PRIMER KLICA SHRANJENE PROCEDURE IZ APLIKACIJE ....................................................... 28
TABELA 5.4: MERITVE ČASOV TRANSAKCIJ ........................................... ERROR! BOOKMARK NOT DEFINED.
Kazalo grafov:
GRAF 5.1: PROCEDURA AVTOR ............................................................................................................ 31
GRAF 5.2: PROCEDURA KLJUČNE BESEDE ............................................................................................ 32
GRAF 5.3: PROCEDURA TOPOLOGIJA ................................................................................................... 32
GRAF 5.4: PROCEDURA JEZIK .............................................................................................................. 33
GRAF 5.5: PROCEDURA LETO .............................................................................................................. 33
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 1
1 UVOD
Količina dnevno svežih podatkov skokovito narašča. Podjetja zajemajo več tisoč giga
zlogov podatkov o svojih strankah, dobaviteljih, transakcijah in iz milijonov senzorjev
vgrajenih v različne naprave.
Pri tako velikih količinah raznih informacij je interes podjetij, da jih lahko zajemajo,
posredujejo, delijo, shranijo in tudi analizirajo v korist za nadaljne delo. Zato so v
današnjem času podatki postali ključeni del vsake poslovne in industrijske dejavnosti.
Ker je postala obdelava velikih količin podatkov časovno zelo požrešna, so se začele
razvijati alternativne oblike podatkovnih baz. Klasični entitetno-relacijski ali objektni
podatkovni sistemi so se dopolnili z alternativnimi podatkovno upravljavskimi sistemi,
posebej izdelanimi za ravnanje z velikimi količinami podatkov, raznolikostjo podatkov in
različnimi hitrostmi dostopa do velikih podatkovnih zbirk. Te podatkovne zbirke se zmeraj
bolj pogosto hranijo v NoSQL ali NewSQL podatkovnih bazah. NewSQL je razred novejših
relacijskih podatkovnih baz, ki nam zagotavljajo razširljivost kot sistemi NoSQL in
omogočajo procesiranje transakcij v realnem času (kratica OLTP (Online Transaction
Processing)). Hkrati ohranjajo tudi vse lastnosti transakcij (kratica ACID (Atomicity,
Consistency, Isolation, Durability)), kot jih zagotavljajo relacijske podatkovne baze.
1.1 Namen in cilj diplomskega dela
Namen diplomske naloge je na kratko opisati in primerjati različne podatkovne baze
NewSQL. Podrobneje bomo opisali in analizirali delovanje podatkovne baze VoltDB. Naš
namen testiranja je primerjava hitrosti poizvedb SQL, ki jih proži filter med izbiro
določenega kriterija, izbranega s strani uporabnika. Pri tem bomo uporabili scenarij
testiranja, najprej na enem strežniku, za tem pa pri enakih konfiguracijah in podatkih še na
dveh strežnikih. Tako bomo pridobili jasno sliko glede razširljivosti in fragmentiranja
podatkovne baze VoltDB.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 2
1.2 Struktura diplomske naloge
V drugem poglavju predstavimo različne terminologije in nerelacijske podatkovne modele
NoSQL (zgodovino, arhitekturo, prednosti in slabosti). V tretjem poglavju predstavimo
nove modele podatkovnih zbirk NewSQL. Opisali smo osnovne klasifikacije modelov in
predstavili njihove predstavnike. V četrtem poglavju smo podrobno opisali delovanje
podatkovne baze VoltDB, ki smo jo uporabili v praktičnem delu naloge. V petem poglavju
opisujemo potek konfiguracije podatkovne baze in meritve pridobljene s testiranjem. V
zadnjem delu petega poglavja predstavimo rezultate meritev in ugotovitve. V šestem
poglavju se nahaja sklep, kjer so strnjene vse ugotovitve diplomske naloge.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 3
2 NOVE PODATKOVNE BAZE
2.1 Začetek novih podatkovnih modelov
V zadnjih letih je razvoj spletnih in mobilnih programskih rešitev povzročil velik porast
količine podatkov, ki jih je treba obdelati in shraniti. Na primer samo na Facebook-u je 2.4
milijard vsebin deljenih med prijatelji vsak dan. Zaradi tako velikega porasta informacij v
tako kratkem času se podjetja soočajo s problemi nadzorovanja in analiziranja s
tradicionalnimi procesnimi orodji. To je povzročilo veliko sprememb pri zmogljivosti in
razširljivosti obdelav velikih količin podatkov (ang. Big data).
2.1.1 Velike količine podatkov
»Big Data« je izraz uporabljen za velike in kompleksne podatkovne zbirke. Uporabljamo
ga, kadar imamo zelo veliko količino podatkov in tradicionalni podatkovni sistemi ne
zadostujejo več potrebam obdelave podatkov. Podjetja se vedno bolj zavedajo, da lahko
te velike količine podatkov uporabijo za nove poslovne priložnosti in izboljšave skozi
obdelavo in analizo teh podatkov.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 4
Slika 2.1: Struktura velikih količin podatkov
»Big data« se bolj kot po količini (saj se konstantno spreminja) definira po svoji vedno
večji raznolikosti, hitrosti, spremenljivosti in kompleksnosti: [31
Hitrost: pri »Big data« se gleda na hitrost, kot tempo s katerim se podatki
generirajo. Podatke lahko ustvarijo poslovni procesi, senzorji, internetni viri,
mobilne naprave itd.. Pretok je lahko masiven in konstanten. Večina teh podatkov
je generiranih realno časovno. Zato samo procesiranje in zajemanje teh podatkov
zahteva nove pristope za nadaljne analiziranje, ki pa lahko doprinesejo nove
poslovne priložnosti podjetjem.
Spremenljivost: podatkovni tokovi so lahko zelo spremenljivi. Imamo konstantne,
urne, dnevne, sezonske in dogodkovne sprožilce večjih obremenitev, ki jih je težje
obvladati. [33]
Kompleksnost: težavnost upravljanja podatkov se povečuje z večanjem njihovih
virov ter se prepleta s potrebo po povezovanju in preoblikovanju podatkov med
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 5
poslovnimi entitetami in sistemi. Organizacije morajo razumeti razmerja med vsemi
podatki. [33]
Raznolikost: večina podatkov je nestrukturiranih, vendar jih moramo kljub temu
vključiti v kvalitetno analizo in v sprejemanje odločitev. [33]
Z analiziranjem velikih količin podatkov lahko pridobimo veliko koristnih podatkov, vendar
za razvoj učinkovitih sistemov potrebujemo nova orodja. Tehnologije izpred nekaj let so
postale omejene za učinkovito analizo ter naraščajoče raznolikosti podatkov. Tako so se
začele razvijati alternativne tehnologije, ki so temu prilagojene. Brez ene ali vseh lastnosti
v »Big Data« arhitekturi ni mogoče maksimalno izkoristiti vsega potenciala podatkov.
2.1.2 Podatkovna gruča
Podatkovna gruča (angl. database cluster) je skupina dveh ali več neodvisnih strežnikov,
ki delujejo kot enoten sistem. Podatkovna gruča nam pomaga doseči visoko
razpoložljivost in izboljšati vhodno/izhodno prepustnost podatkovne baze. Ko nastopi
napaka na enem od strežnikov v gruči, se viri preusmerijo in delovna obremenitev se
porazdeli na drug strežnik v gruči.
Slika 2.2: Podatkovna gruča
Funkcija podatkovne gruče je, da uporabnikom omogoči konstanten dostop do
pomembnih virov podatkov.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 6
2.1.3 Lastnosti transakcije .
Z izrazom transakcija označujemo skupek sprememb, ki iz vidika podatkovnih baz
predstavljajo eno enoto dela. Pomembna naloga podatkovnih baz je, da zagotavljajo
varne transakcije. Te morajo biti atomarne, ujemljive, izolirane in trajne. Te štiri lastnosti v
strokovni terminologiji poimenujemo s kratico »ACID«. [30]
Definiramo jih na naslednji način:
Atomarnost (angl. atomicity): vse operacije transakcije se morajo zaključiti, da se
ta uspešno izvede. Če se neuspešno izvede katerikoli del transakcije, se prekine
celotna transakcija in se konča kot neuspešna.
Ujemljivost (angl. consistency): transakcija pripelje podatkovno bazo iz enega
veljavnega stanja v drugo. Zagotavlja, da je podatkovna baza vedno v veljavnem
stanju. Po neuspešnem izvajanju transakcije pa zagotovi, da je sistem v stanju
pred transakcijo.
Izolacija – neodvisnost (angl. isolation): transakcije se izvajajo neodvisno ena od
druge. Med izvajanjem več transakcij hkrati transakcije ne morejo izvajati operacij
nad podatki druge transakcije.
Trajnost (angl. durability): rezultat se trajno zapiše v fizično podatkovno bazo.
2.2 NoSQL podatkovni modeli
2.2.1 Uvod
Kratica NoSQL pomeni Not Only SQL in jo pogosto povezujemo z novo skupino
podatkovnih baz, ki so se pojavile kot odgovor na težave, s katerimi se srečujemo pri
uporabi relacijski baz podatkov. Za podatkovne baze NoSQL je težko podati natančno
opredelitev, lahko pa navedemo, katere so njihove pomembne lastnosti. Te lastnosti so:
neopredeljena shema, prožnost, drobljenje, asinhrona replikacija, pristop »BASE«
namesto »ACID« in arhitektura brez skupne rabe. Nastale so na podlagi zahtev po visoki
učinkovitosti in razširljivosti v okolju, kakršen je svetovni splet. [32]
Motivacija za ta pristop vključuje preprostost oblikovanja, boljšo horizontalno razširljivost v
gruči strežnikov, ki je vedno večji problem tradicionalnih relacijskih podatkovnih baz, kakor
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 7
tudi natančnejši pregled nad razpoložljivostjo. Podatkovne strukture uporabljene pri
podatkovnih bazah NoSQL se nekoliko razlikujejo od tistih, ki jih uporabljajo
konvencionalni relacijski modeli. Nekatere operacije v NoSQL podatkovnih bazah so
hitrejše, nekatere pa počasnejše kot pri izvajanju v relacijskih podatkovnih bazah. Glede
na zahteve, kakršne potrebujemo, da dosežemo želeni rezultat oz. rešimo določen
problem, izberemo temu najprimernejšo vrsto podatkovne baze NoSQL.
2.2.2 Osnovni principi podatkovnih modelov NoSQL
V tem odseku bomo predstavili nekatere osnovne koncepte, ki so najbolj pogosti pri
podatkovnih bazah NoSQL in ne unikatni samo za en razred nerelacijskih podatkovnih
baz.
CAP teorem
Eric Brewer je leta 2000 predstavil teorem s kratico CAP, ki je danes široko sprejet v
skupnosti NoSQL. Kratica CAP je okrajšava za tri lastnosti: ujemljivost (angl. consistency),
razpoložljivost (angl. availability) in particijsko toleranco (angl. partition tolerance). Teorem
zagovarja stališče, da porazdeljene podatkovne baze lahko zagotavlajo le dve izmed treh
lastnosti: [27]
1. Ujemljivost (angl. consistency): »vse enote vidijo vse podatke enako v vseh
časovnih trenutkih. Na primer, ko se operacija zapisovanja konča, je
rezultat ujemljiv v celotnem porazdeljenem sistemu – vse replike so
posodobljene.«[34]
2. Razpoložljivost (angl. availability): »v primeru, da ena ali več izmed enot
neha delovati, preostale enote nemotomo delujejo naprej.« [34]
3. Neobčutljivost na deljenje omrežja (angl. partition tolerance): kadar
omrežje preneha pravilno delovati, je medsebojna povezava med vozlišči
porazdeljenega sistema prekinjena. »V takem primeru se pojavi deljenje
omrežna in če je sistem toleranten zanjo, bo še vedno polno funkcionalno
deloval naprej.«[34]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 8
V praksi je izpolnitev vseh treh zahtev nemogoča. CAP zagotavlja osnovne zahteve za
porazdeljene sisteme, ki omogočajo dve od treh zahtev, zato trenutne NoSQL podatkovne
baze temeljijo na različnih kombinacijah CAP teorema. Podatkovne baze imajo visoko
horizontalno razširljivost preko gruče strežnikov. Nekateri podatkovni modeli omogočajo
razširljivost na podatkih, medtem ko drugi skrbijo za pisalno/bralno razširljivost. Ker
omogočajo visoko razpoložljivost, nekateri modeli ciljajo velike porazdeljene sisteme in s
tem je neobčutljivost na omrežne particije neizogibna. S tem, da je omogočena visoka
razpoložljivost, pa te rešitve izberejo ujemljivost v kompromis razpoložljivosti, kar je
rezultat delnega CAP teorema AP (razpoložljivo/tolerantno za deljenje omrežja),
medtem ko ima večina relacijsko orientiranih podatkovnih baz CA
(ujemljivost/razpoložljivost). Ponavadi NoSQL baze ne podpirajo »ACID« transakcij, kot jih
zagotavljajo klasične relacijske podatkovne baze, velikokrat so označene kot »BASE«:
Večinoma razpoložljiv (angl. basically available): če je katerikoli del podatkovne
shrambe nedostopen, je ostali del kljub temu vedno razpoložljiv.
Mehko stanje (angl. soft-state): sistem se zaradi asinhronih posodobitev čez čas
spremeni tudi brez sprememb uporabnika, posledica česar je, da so kopije
podatkov v nekem času neujemljive.
Eventualna ujemljivost (angl. eventual consistency): poudarja, da po določeni
časovni periodi postane podatkovna baza usklajena z vsemi podatki.
NoSQL podatkovne baze ponujajo zelo prilagodljive sheme, lahko pa so popolnoma brez
podatkovne sheme. Zasnovane so tako, da lahko obdelajo različne podatkovne strukture.
Poznamo več različnih pristopov klasificiranja podatkovnih baz NoSQL. Zaradi različnih
pristopov in prekritij jih je težko natančno opisati, saj so se razvile na podlagi različnih
zahtev in potreb v praksi. Tako imajo različne funkcionalnosti, kakor tudi podatkovne
modele. Obstajajo različne osnovne klasifikacije na podlagi podatkovnega modela.
Ključ-vrednost (angl. Key/Value)
Ključ/vrednost tip uporablja zgoščeno tabelo, v kateri obstaja unikaten ključ in kazalec
na določeni element podatka. Povečini gre za niz in se preslika v pripadajočo
vrednost. Pogosto je dolžina ključev, ki jih je potrebno shraniti, omejena na določeno
število zlogov, medtem ko je glede vrednosti manj omejitev. Shranjevanje podatkov
po modelu ključ/vrednost deluje po principu, ki ga uporabljajo predpomnilniki.
Predpomnilnik hrani največkrat uporabljene podatke z namenom, da prepreči pogoste
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 9
zakasnitve diskovnega pogona. Tako omogočajo hitrejši dostop do podatkov, ki so
ponavadi manjše zbirke ključev in vrednosti.[27]
Slika 2.3: Struktura »Ključ/vrednost« podatkovne baze NoSQL
Stolpec (angl. Column)
V stolpično-orientirani NoSQL podatkovni bazi so podatki shranjeni v celici, združeni v
stolpec podatkov, dočimer imajo relacijske podatkovne baze podatke združene v
vrstice. Stolpci so logično združeni v družino stolpcev (angl. ColumnFamily). Družine
stolpcev lahko vsebujejo neomejeno število stolpcev, ki jih lahko ustvarimo v »run-
time« definiciji sheme. Branje in pisanje uporablja stolpce namesto vrstic, ker se
branje in pisanje izvajata na stolpcih, so iskanje in dostop ter agregacija podatkov
hitrejši. S tem pristopom shranimo vse celice pripadajočemu stolpcu kot neprekinjen
diskovni zapis. Zaradi tega je iskanje in dostopanje do podatka hitrejše.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 10
Slika 2.4: Struktura stolpične podatkovne baze NoSQL
Dokument (angl. Document)
Dokumentna shramba predstavlja nabor parov tipa ključ-vrednost, strukturiranih v
obliko dokumenta. Podobno kot pri podatkovnem modelu ključ-vrednost zagotavljajo
nekakšno strukturo in kodiranje uporabljenih podatkov. Za kodiranje dokumentov so
uporabljeni standari XML, JSON, BSON in še nekateri drugi formati.
Slika 2.5: Struktura dokumentne podatkovne baze NoSQL
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 11
Graf (angl. Graph)
Graf na podlagi podatkovnega modela predstavlja podatke drugače kot ostali modeli
NoSQL podatkovnih baz. Gre za drevesno strukturo (grafe) z vozlišči, povezanimi
med seboj preko relacij. Nekatere operacije so tako veliko lažje, če uporabimo te tipe
modelov za povezovanje in združevanje podatkov.
Slika 2.6: Struktura grafovske podatkovne baze
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 12
3 PREDSTAVITEV IN PRIMERJAVA NEWSQL PODATKOVNIH BAZ
V prejšnjem poglavju smo opisali NoSQL modele podatkovnih baz, kjer ne moremo
zagotoviti razpoložljivosti, ujemljivosti in neobčutljivosti na deljenje omrežja hkrati. Pri
tradicionalnih relacijskih podatkovnih bazah naletimo na težave pri razširljivosti in
zmogljivosti. Tako so strokovnjaki na področju relacijskih podatkovnih baz začeli iskati
nove rešitve. Izraz NewSQL je bil prvič predstavljen v članku raziskovalnega podjetja The
451 group leta 2011. Cilji podatkovnih baz NewSQL so, da zagotovijo prednosti relacijskih
paradigem za porazdeljene arhitekture in zmogljivost, da horizontalno razširjevanje ne bi
bila več nuja. NewSQL podatkovne baze so nov tip relacijskih baz (oz. razširitev
tradicionalnih relacijskih baz). [24] Njihov namen je zagotoviti enako prilagodljivo
delovanje kot ga imajo NoSQL sistemi, hkrati pa ostati na temeljih relacijskih modelov,
ohraniti SQL kot jezik za poizvedbe in zagotoviti »ACID« transakcije. V to kategorijo
spadata Google Spanner in VoltDB, ki temelji na razvojnem projektu H-Store. Med drugimi
sta Clustrix in NuoDB komercialna produkta, ki tudi spadata med vodilne v tej novi
tehnologiji. Te podatkovne shrambe podpirajo relacijske modele in uporabljajo SQL kot
poizvedovalni jezik, kljub temu da so zasnovane na drugačnih domnevah in arhitekturah
kot tradicionalne relacijske podatkovne baze.
Tradicionalni SQL NoSQL NewSQL
Relacijske DA NE DA
SQL poizvedovalni jezik DA NE DA
ACID transakcije DA NE DA
Horizontalna razširljivost NE DA DA
Brez podatkovne sheme NE DA NE
Tabela 3.1: Primerjava podatkovnih baz
Pomembne karakteristike NewSQL podatkovnih sistemov :
NewSQL uporablja SQL poizvedovalni jezik kot primarni mehanizem za
aplikacijsko interakcijo.
NewSQL zagotavlja »ACID« lastnosti transakcij.
NewSQL arhitektura zagotavlja večjo zmogljivost posameznega vozlišča kot
tradicionalni relacijsko podatkovni modeli.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 13
Zelo dobra horizontalna razširljivost, nič skupna arhitektura
Lahko teče na velikem številu vozlišč brez ozkega grla.
NewSQL sistemi so približno 50-krat hitrejši od tradicionalnih OLTP podatkovnih
baz pri velikem številu transakcij na sekundo. [17]
V nadaljevanju bomo opisali različne klasifikacije podatkovnih baz NewSQL. Enako kot pri
podatkovnih bazah NoSQL imamo tudi pri NewSQL ponujenih veliko različnih rešitev.
Klasifikacija temelji na različnih pristopih ponudnikov teh sistemov. [6]
Nova arhitekutra podatkovnih baz:
Ti sistemi so razviti z idejo, da bi zagotovili razširljivost in zmogljivost. Za izboljšanje
zmogljivosti stremijo k delovanju brez tradicionalnega shranjevanja podatkov. Te nove
arhitekture delujejo v pomnilniku ali z uporabo SSD diskov. Med najbolj znane rešitve
spadajo VoltDB, NuoDB, Clustrix in Drizzle.
Novi MySQL podatkovni pogoni: MySQL je del LAMP ( Linux, Apache, MySQL, PHP)
paketa in se veliko uporablja v OLTP. Za probleme z razširljivostjo MySQL podatkovnih
skladišč so se začeli razvijat različni podatkovni pogoni, kot so Akiban, MySQL, NDB
cluster, GenieDB, InfiniDB, TokuDB in drugi prosto dostopni. Razširljivost pri teh pogonih
je boljša kot pri standardnem skladiščnem pogonu InnoDB, ki ga uporablja MySQL.
Transparentna fragmentacija: Pri teh se lahko uporabi obstoječo relacijsko podatkovno
bazo. Podatkovna baza NewSQL pa omogoča vmesno programsko opremo za
fragmentacijo podatkovne baze na večjih strežnikih. S tem se izognemo ponovnemu
pisanju kode ali kakršni koli migraciji podatkov. Predstavniki te kategorije so dbShards,
ScaleDB in MySQL cluster. [30]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 14
4 VOLT DB
Opis podatkovne baze VoltDB
Ena pomembnejših lastnosti VoltDB-ja je, da omogoča preprosto razširljivost z
dodajanjem procesorjev v gručo strežnikov, ko se rast podatkov in transakcij povečuje.
VoltDB hrani podatke v pomnilniku (angl. in-memory), kar poveča prepustnost in prepreči
zamudno dostopanje do diska ter dosega večjo zmogljivost s serializacijo vseh dostopov
do podatkov. S tem se izogne večini časovno potratnih funkcij, kot sta zaklepanje in
vzdrževanje transakcijskih dnevnikov.
4.1 Arhitektura podatkovne baze VoltDB
Nekatere ključne lastnosti podatkovne baze VoltDB so:
Hramba v pomnilniku za maksimalno prepustnost, s tem pa izogibanje počasnemu
dostopu do trdega diska.
Serializacija vseh dostopov do podatkov.
Zmogljivost in razširljivost preko fragmentacije.
Velika razpoložljivost preko sočasne replikacije (K-zaščita).
Trajnost preko inovativne kombinacije posnetkov in ukaznega dnevnika (trdi
diski/SSD diski). [28]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 15
4.1.1 Hramba podatkov v pomnilniku
Današnji podatkovni strežniki so opremljeni z več sto GB glavnega pomnilnika, zato
potreba po zmogljivosti ni več odvisna od diskovnih enot. VoltDB shrani podatke v
pomnilnik (RAM). Tako procesiranje izloči čakanje diska na odzivnost, zaklepanje in
medpomnilniško upravljanje v transakciji. Delovanje pomnilnika VoltDB podatkovne baze
se razdeli na tri dele (Slika 4.1):
Trajni pomnilnik: uporabljen je za shranjevanje dejanskih podatkovnih baz, kot
so tabele, indeksi in pogledi. Večja je količina podatkov v zbirki, več pomnilnika
zahteva, da jo shranimo.
Delno trajni pomnilnik: je uporabljen za začasno shranjevanje, medtem ko
obdeluje SQL poizvedbe in določene sistemske procedure. V glavnem delno
trajni pomnilnik vključuje začasne tabele in sprostitev trenutnega pomnilnika
(angl. buffer). Trajni pomnilnik se uporabi tudi, kadar shranjujemo podatkovno
bazo s posnetkom ali izvažamo podatke v druge podatkovne shrambe.
Začasni pomnilnik: upravlja distribucijo procedur na posamezne particije.
Začasni pomnilnik vključuje tudi vrsto nerešenih pozivov čakajočih procedur,
kakor tudi vrnjene vrednosti zaključenih.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 16
Slika 4.1: Pomnilniška razporejenost VoltDB-ja
Pri standardnih modelih po navadi ni pomembno, v katerem jeziku je napisana izvorna
koda, vendar v primeru pomnilniškega izvajanja različne platforme uporabljajo pomnilnik
na drugačne načine. Za delovanje trajnega in delno trajnega pomnilnika VoltDB se
uporablja koda, napisana v C++, pri začasnem pomnilniku pa je koda napisana v Javi.
Programski jezik C++ uporablja natančno razporeditev pomnilnika, zato lahko aplikacija
natančno kontrolira, kdaj in koliko pomnilnika dodeli oz. sprosti. Pri začasnem pomnilniku
(ki ga upravlja Java) pa VoltDB uporablja JVM (angl. Java Virtual Machine). JVM odloča,
kdaj in kako bo zbral neuporabljen prostor.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 17
4.1.2 Razpoložljivost
VoltDB zagotavlja razpoložljivost z dvema možnostima zaščite. To sta K-zaščita in zaščita
pred omrežnimi napakami.
K-zaščita: deluje tako, da podvaja fragmente podatkovne baze v gruči vozlišč. Vse kopije
fragmentov delujejo sočasno. S tem je cel čas zagotovljena ujemljivost podatkov. V
primeru izpada kateregakoli vozlišča v gruči, omogoča K-zaščita neprekinjeno delovanje
podatkovne baze. Operacije izpadlega vozlišča prevzamejo kopije fragmentov na drugih
vozliščih. S tem zagotovi, da je podatkovna baza dostopna v celoti, dokler se napaka ne
odpravi. Pred zagonom, skrbnik nastavi vrednost K-zaščite, ki določa pri koliko vozliščih
lahko pride do izpada, da je podatkovna baza še razpoložljiva.
Slika 4.2: Delovanje K-zaščite
Zaščita pred omrežno napako (angl. Network Fault Protection) deluje v povezavi s K-
zaščito. Gruča, zaščitena s K-zaščito, nam pred omrežno napako zavaruje podatkovno
bazo pred omrežnimi izpadi. Če se pojavi izguba povezave med vozlišči, gruča zazna
prekinjeno povezavo kot izpad vozlišča. V določenih segmentih gruče je lahko dovolj
fragmentov za nadaljno delovanje podatkovne baze in vsak segment bi zaznal, da je drugi
prišel do izpada. To bi lahko privedlo do sočasnega delovanja različnih fragmentov
podatkovne baze. Zaščita pred omrežno napako pa zagotovi, da bo le en fragment
podatkovne baze ostal aktiven. S tem prepreči delovanje dveh ločenih kopij podatkovne
baze, ki bi sprejemala zahteve v smislu, da je edina delujoča kopija.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 18
Slika 4.3: Zaščita pred omrežno napako
Replikacija podatkovne baze: deluje podobno kot K-zaščita, ampak namesto podvajanja
fragmentov lokalno, podvajanje replikacije poteka na daljavo nad celotno gručo (kopija
celotne podatkovne baze na drugem fizičnem mestu) (Slika 4.4). Ena od ključnih stvari
replikacije je, da zagotovi obnovitev podatkovne baze na primer ob naravni katastrofi, ki
lahko poruši celotno infrastrukturo. V takih primerih aktivnost primarne podatkovne baze ni
mogoče ohraniti. Replikacija nam v nujnem primeru zagotovi kopijo, ki lahko nadomesti
prvotno podatkovno bazo.
Slika 4.4: Replikacija
4.1.3 Trajnost
Trajnost je ena od lastnosti »ACID« atributov, ki zahteva, da se zagotovi točne in
zanesljive operacije podatkovne baze. Zagotavlja ujemljivost in razpoložljivost v primeru
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 19
zunanjih problemov, kot so strojne ali sistemske napake. VoltDB zagotavlja trajnost
podatkov preko naslednjih lastnosti:
Posnetki (angl. snapshot): so celotna kopija podatkovne baze v določenem času,
ki se shrani na disk. Ti posnetki se uporabljajo za obnovitev ali ponovni zagon
podatkovne baze. Posnetke sprožimo ročno ali v nekem časovnem intervalu. V
primeru kakršne koli prekinitve delovanja strežnika obnovimo zadnji posnetek
podatkovne baze.
Asinhroni ukazni dnevnik (angl. Asynchronous Command Logging): zagotavlja
napredno trajnost s posnetki in beleženjem transakcij med ustvarjanjem posnetka.
Če se zgodi izpad in s tem ponovni zagon strežnika, se VoltDB povrne v delujoče
stanje s pomočjo zadnjega posnetka in dnevnika. V dnevniku so zapisane
transakcije, ki so nastale po zadnjem posnetku.
Sinhroni ukazni dnevnik (angl. Synchronous Command Logging): nudi najboljšo
trajnost. Je nadgradnja asinhronskega pisanja ukazov v dnevnik. »Razlika med
načinoma je, da se dnevnik ustvari, ko je transakcija zaključena, a še nepotrjena.
Z drugimi besedami, nobena transakcija ni potrjena, če ni zapisana v dnevniku in s
tem ni nobena transakcija izgubljena.«[30] Edina slabost tega je, da je potrebna
boljša tehnologija diska, saj se v nasprotnem primeru pozna na hitrosti izvajanja
transakcij. [30]
4.1.4 Fragmentiranje podatkovne baze
Fragmenti so osrednji del VoltDB-ja, saj je samo prek teh možno doseči vzporednost
izvajanja. »Vozlišča, ki predstavljajo en fragment, so vezana na jedro procesorja (v smislu
obdelave, ne hranjenja podatkov) in ne na strežnik, saj je fragmentiranje na ravni
procesorja arhitekturno bolj preprosto, s čimer se pride tudi do boljših rezultatov,
učinkovitosti.«[30] Ker so fragmenti avtonomni, ni zaklepanja ter večnitnosti, in je zato
koda bolj zanesljiva, razhroščevanje pa manj problematčno. »Fragmentira se tako
podatke po uporabniško definiranem ključu kot procesiranje v povezavi s podatki.«[30]
VoltDB pozna tudi tabele, ki se v celoti nahajajo na posameznih fragmentih. To so
predvsem tabele, ki se ne spreminjajo veliko in naredijo operacije stikov manj potratne.
[30]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 20
Dodajanje števila jeder strežnika pomeni več fragmentov, vendar dodajanje jeder na neki
točki ne vpliva več na boljšo prepustnost, saj bodo transakcije v nekem trenutku zapolnile
razpoložljivi prostor vrat strežnika, skozi katere komunicirajo z drugimi vozlišči oz.
odjemalcem. Podobno velja za večanje števila vozlišč v gruči. Za dobro učikovitost (čim
manjši zamiki in manjše motnje med vozlišči) je bolje, da so vsi strežniki na istem
omrežnem stikalu. Očitno je, da je priporočeno največje število strežnikov tolikšno, kot jih
podpira stikalo. [30]
4.1.5 Asinhrono/sinhrono proženje shranjenih procedur
Pri običajnih bazah podatkov so v transkacijah pogoste zakasnitve diska. Raje, kot da je
CPU nedejaven, le-ta sistem za upravljanje podatkovne baze med čakanjem preplete
izvedbo SQL iz več transkacij, tako da je vedno zaposlen. Slednja aktivnost povzroči
presežno in pomembno zapahovanje ter zaklepanje.
Baza podatkov VoltDB je sestavljena iz več izvrševalnih pogonov v pomnilniku,
imenovnovanih fragmenti. Fragment združi podatke in procesne konstrukte, povezane z
njimi. VoltDB le-te avtomatično ustvari in razdeli po jedrih procesorjev v gruči sistema za
upravljanje podatkovne baze.
Vsaka VoltDB stran (angl. site) je enoprocesna in vsebuje vrsto transakcijskih prošenj, ki
jih izvrši zaporedoma nad svojimi podatki.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 21
Slika 4.5: Procesiranje transakcij
Z uporabo zaporednega procesiranja transakcij zagotavlja VoltDB ujemljivost transakcij
brez presežka v zaklepanju. Fragmentiranje podatkovne baze omogoča, da hkrati obdela
več zahtev. VoltDB lahko s pomočjo eliminiranja zakasnitev preko delovanja v pomnilniku
in shranjenih procedurnih klicev izvrši več milijonov SQL operacij na sekundo.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 22
4.1.6 Izvoz toka podatkov
VoltDB omogoča, glede na bazo podatkov, selektivno izvažanje podatkov. Tarča za izvoz
podatkov iz VoltDB-ja je lahko druga podatkovna baza, datoteka (npr. dnevnik zapisov) ali
proces (npr. upravitelj opravil).
VoltDB omogoča izvoz toka podatkov prek izvoznih tabel, tj. preko posebnih tabel, ki
vsebujejo stolpične podatke iz ene ali več fizičnih tabel v bazi podatkov. Takoj ko
vnesemo podatke v izvozno tabelo, so le-ti poslani do aplikacije, ki jih sprejme preko
konektorja. VoltDB zadrži izvozno tabelo v medpomnilniku, dokler konektorja izvozni
odjemalec ne sprejme. Če izvozni odjemalec ne dohaja konektorja in če se podatkovna
vrsta zapolni, VoltDB zapiše preliv podatkov na disk in s tem zagotovi, da so vsi izvoženi
podatki na voljo odjemalcu, tudi ko sčasoma nadaljuje s pridobivanjem. Izvozni preliv
eliminira situacije neujemanja podatkov, ki bi se lahko zgodile med VoltDB-jem in sistemi
za prejemanje, pri čemer VoltDB oddaja podatke hitreje, kot jih lahko sosednja baza
podatkov shrani.
Integracija Hadoop-a
VoltDB predstavlja odlično rešitev za ravnanje s realnočasovno generiranimi podatki.
Hadoop pa je odlična rešitev za analiziranje ogromnih velikih količin podatkov. VoltDB ima
tudi izvoznega odjemalca, ki avtomatizira proces izvoza podatkov iz VoltDB-ja na Hadoop.
VoltDB se lahko integrira direktno s HDFS (Hadoop File System) ali pa preko Hadoopove
Sqoop tehnologije za uvoz. Standardni izvozni odjemalec VoltDB-ja zbere podatke iz
VoltDB-jeve zbirke, jih deserializira in jih shrani v medpomnilnik za prejemanje.
Odjemalec, ki izvaja izvoz podatkov, sproži procese za prejemanje in nalaganje ter jim
dostavi podatke; zatem so podatki naloženi v Hadoopovo podatkovno skladišče.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 23
Slika 4.6: Izvozni odjemalec s Hadoop integracijo
Razvoj aplikacij z VoltDB-jem
VoltDB s strani odjemalca ponuja več knjižnic, ki podpirajo prvotne mehanizme za dostop
do podatkovnih baz v različnih programskih jezikih. Večina teh knjižnic je razvita in
podprta s strani VoltDB-jeve ekipe. Nekatere knjižnice pa razvijajo člani odprtokodne
skupnosti.
VoltDB-jeve knjižnice Odprtokodne knjižnice
Java Python Erlang
C++ PHP Ruby
.Net(C#) HTTP/JSON Node.js
Tabela 4.1: Podprte knjižnice
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 24
5 MERITEV IN RAZLAGA REZULTATOV
Za potrebe testiranja smo uporabili podatkovno zbirko OpenScience. Podatkovna zbirka
nacionalne infrastrukture odprtega dostopa je sestavljena iz metapodatkov o publikacijah
avtorjih zaključnih del (diplome, magisteriji in doktorati) in raziskovalnih publikacij
slovenskih univerz in drugih slovenskih zbirk (dLib, Videolectures.NET, DKMORS,
repozitorij SciVie ...). [29]
Filter iskanja (Slika 5.1: Filter iskanja točka 2) nam na podlagi podanega iskalnega niza
filtrira najbolj pogoste metapodatke in jih razporedi po naslednjih metapodatkih (Slika 5.1):
ključnih besedah,
letu izdaje dela,
avtorju,
repozitoriju,
jeziku,
tipologiji.
S tem uporabnikom olajšamo iskanje vsebine pri večji količini zadetkov, podanih glede na
podani iskalni niz. Izbira metapodatkov omogoča uporabnikom filtriranje in iskanje po
točno določenih kriterijih, ki jih uporabnik izbere. Uporabiti je mogoče več filtrov hkrati in s
tem uporabniku omogočiti natančnejše iskanje ter izločiti nezaželeno.
Naš namen testiranja je primerjava hitrosti poizvedb SQL, ki jih proži filter med izbiro
določenega kriterija, izbranega iz uporabniške strani. Pri tem pa smo uporabili scenarij
testiranja, najprej na enem strežniku, za tem pa pri enakih konfiguracijah in podatkih še na
dveh strežnikih. S tem smo pridobili jasno sliko glede razširljivosti in fragmentiranja
podatkovne baze VoltDB.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 25
Slika 5.1: Filter iskanja
5.1 Testno okolje
5.1.1 VoltDB
Podatkovna baza VoltDB je ponujena v dveh različicah, Enterprise Edition (produkcijska)
in Community Edition (odprtokodna). Odprtokodna ali Community različica zagotavlja
osnovno funkcionalnost z vsemi prednostmi transakcijske zmogljivosti. Medtem ko
Enterprise zagotavlja dodatne možnosti za podporo produkcijskemu okolju, kot so visoka
razpoložljivost, trajnost in dinamična razširljivost.
Za potrebe testiranja smo uporabili odprtokodno različico VoltDB Community Edition.
Pred samo namestivijo je bilo potrebno namesti dodatno programsko opremo:
Java 1.7
Apache Ant 1.7
GNU C++ 4.2
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 26
Python 2.6
Eclipse IDE
Testiranje VoltDB-ja je potekalo na dveh strežnikih, ki imata naslednje konfiguracije:
Strežnik 1 Strežnik 2
Procesor Dual core 2.2 GHz Dual core 2.0 GHZ
Delovni pomnilnik 4.00 GB
Operacijski sistem Ubuntu 14.04.2 LTS
Tabela 5.1:Sistemske konfiguracije
5.2 Namestitev in konfiguracija VoltDB-ja
Pred samim zagonom podatkovne baze je potrebno ustvariti aplikacijski katalog.
Aplikacijski katalog vsebuje definicijo podatkovne sheme (Slika 5.2), shranjene procedure
ter navodila o fragmentiranju tabel in procedur. Tega prevedemo iz SQL datoteke v JAR
(Java arhiv) datoteko. Zraven aplikacijskega kataloga pa smo uredili še namestitveno
datoteko, kjer konfiguriramo na kolikih strežnikih bo podatkovna baza zagnana, koliko bo
zaščita K in koliko fragmentov naj ima posamezen strežnik. Za samo delo s podatkovno
bazo smo si ustvarili projekt v Eclipse razvojnem okolju, kjer smo ustvarili za vsako
proceduro razred, ki vsebuje poizvedbo in jo nato spremenili v JAR datoteko.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 27
Slika 5.2: ER diagram podatkovne baze
VoltDB temelji na fragmentiranju tabel in tudi procedur. Glede na omejitve procesorske
moči smo lahko fragmentirali 3 tabele. Zato smo izbrali najpogostejše stolpce, ki so
uporabljeni pri SQL poizvedbi. V našem primeru smo fragmetirali tabelo Metadata po
ključu RecordID_NR, Author po ključu ID ter Metadata_Author po ključu AuthorID. Za še
hitrejše iskanje po podatkih smo ustvarili indekse na naslednjih tabelah: Metadata_Author
(MetadataID); Metadata_Author (AuthorID, MetadataID); KljucneBesede (RecordID_NR);
Author (ID); Typology (ID).
5.2.1 Migracija podatkov iz MSSQL v VoltDB
Za migracijo podatkov iz Microsoftove podatkovne baze v podatkovno bazo VoltDB smo
uporabili Java aplikacijo. Z JDBC konektorjem smo se povezali na podatkovno bazo
MSSQL, kjer smo preko SQL poizvedb pridobili želene podatke. Te podatke smo z
uporabo VoltDB-jeve knjižnice vstavljali s stavkom INSERT in direktno polnili podatkovno
bazo VoltDB.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 28
5.2.2 Shranjene procedure in odjemalčeva aplikacija
Za primer testiranja smo napisali poizvedbo, ki je na podlagi izbranega iskalnega niza
našla sedem najpogostejših zadetkov. Kot vidimo na sliki (Slika 5.1: Filter iskanja), imamo
sedem različnih kategorij. Za vsako kategorijo (ključne besede, leto izdaje, avtorji,
repozitorij, tipologija, jezik) smo napisali proceduro, ki vsebuje poizvedbo. Zaradi
optimizacijskih potreb se zahtevnejše poizvedbe v VoltDB-ju vedno izvajajo kot procedure.
Procedure v VoltDB-ju se prevedejo in so zato veliko bolj učinkovite kot »ad-hoc«
poizvedbe. Tako smo za vsako proceduro ustvarili svoj razred (Tabela 5.2) in vse razrede
prevedli v JAR datoteke. Procedure smo potem klicali iz aplikacije, ki je bila napisana v
Javi.
V spodnjem odseku kode je klic procedure iz aplikacije. V našem primeru smo vsako
proceduro izvajali 1000-krat in izračunali povprečen čas izvajanja posamezne transakcije.
results = client.callProcedure("Avtor", (Object) temp).getResults();
Tabela 5.3: Primer klica shranjene procedure iz aplikacije
public class Avtor extends VoltProcedure {
public final SQLStmt topAvtor = new SQLStmt(
"SELECT TOP 7 COUNT(*) N, A.Name , Surname FROM Author A "
+ "INNER JOIN Metadata_Author MA on MA.AuthorID = A.ID "
+ "INNER JOIN Metadata M on M.ID = MA.MetadataID "
+ "WHERE M.RecordID_NR IN ? "
+ "GROUP BY A.Name, A.Surname "
+ "ORDER BY N DESC;");
public VoltTable[] run(int[] indexi) throws VoltAbortException {
voltQueueSQL(topAvtor,(Object) indexi );
VoltTable[] queryrezultat = voltExecuteSQL();
return queryrezultat;
}
}
Tabela 5.2: Shranjena procedura Avtor
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 29
5.3 Meritev časa posamezne transakcije glede na količino
podatkov in število zadetkov
Meritve smo izvajali na podlagi števila podatkov in števila vrnjenih rezultatov izbrane
poizvedbe. Tako smo izmerili povprečen čas izvajanja ene transakcije nad podatki. V
tabelah so podani rezultati, kjer nam ena vrstica prikazuje časovne rezultate izvajanja ene
procedure, ki je bila sprožena 1000-krat. S tem smo pridobili povprečni čas izvajanja
posamezne transakcije.
Za uporabniški scenarij smo uporabili iskalni ključ »Android«. Po iskalnem ključu smo
preko poizvedbe poiskali 7 najpogostejših zadetkov za vse kategorije. V tabeli5.4) imamo
podane meritve časov transakcije. V tretjem stolpcu imamo podane rezultate na enem
strežniku, v četrtem stolpcu pa meritve časov, ko je podatkovna baza porazdeljena na
dveh strežnikih.
V tabelah so zajeti naslednji podatki:
št. zadetkov – skupno število vrnjenih vrstic SQL poizvedbe,
št. podatkov – število podatkov v tabeli, na katero je podana poizvedba,
povprečni čas izvajanja posamezne procedure na enem strežniku v
milisekundah,
povprečni čas izvajanja posamezne procedure na dveh strežnikih v
milisekundah.
Tabela 5.4: Meritve časov transakcij
Št. zadetkov Št. podatkov v
tabeli
Procedura avtor
62 2.135 2,2 4,29
469 4.270 3,8 6,08
1.674 6.405 5,57 7,25
3.968 8.540 9,62 9,28
31.744 17.080 72,15 31,98
62.000 21.350 79,1 66,48
496.000 42.700 518,92 273,17
1.674.000 64.050 1619,51 986,92
7.750.000 106.750 7323,63 4636,62
Procedura kljucne besede
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 30
136 4.672 1,94 4,1
544 9.344 3,34 6,62
1.224 14.016 4,7 6,11
2.176 18.688 6,09 7,45
8.704 37.376 27,66 14,62
13.600 46.720 23,72 23,19
54.400 93.440 62,95 34,65
122.400 140.160 111,96 73,6
340.000 233.600 242,3 153,8
Procedura topologija
26 118 1,72 3,99
104 236 3,52 6,37
234 354 4,46 5,96
416 472 7,01 7,15
1.664 844 26,2 13,37
2.600 1180 22,52 22,63
10.400 2360 60,04 33,38
23.400 3540 103,52 71,21
65.000 5900 248,1 137,57
Procedura jezik
26 32 1,65 3,67
104 64 3,03 5,93
234 96 4,36 5,98
416 128 5,58 7,14
1.664 256 22,91 13,15
2.600 320 19,84 18,88
10.400 640 52,46 28,46
23.400 960 84,38 51,27
65.000 1.600 189,53 108,2
Procedura leto
26 927 1,69 3,25
104 1.854 2,81 5,57
234 2.781 3,77 5,98
416 3.708 4,73 7,14
1.664 7.413 17,22 13,15
2.600 9.270 13,71 18,88
10.400 18.540 28,98 28,46
23.400 27.810 37,62 51,27
65.000 46.350 64,5 108,2
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 31
5.4 Razlaga rezultatov
Zgornja tabela (Error! Reference source not found.) prikazuje, kako se vrednosti časov
transakcij spreminjajo glede na količino podatkov in število vrnjenih vrstic SQL poizvedbe.
Procedura avtor vsebuje poizvedbo, ki združuje tri tabele (Metadata, Metadata_Author,
Avtor) in nam vrne 7 najpogostejših avtorjev, ki imajo po vseh metapodatkih največ
ujemanj glede na iskalni niz. Proženje procedure oz. poizvedbe nad podatkovno bazo na
enem strežniku pri majhni količini je skoraj 95 % hitrejše, kot je pri porazdeljenosti na
dveh. Z dodajanjem novih podatkov se povečuje število del, s tem pa tudi število zadetkov
(avtorjev). V našem primeru opazimo, da je podatkovna baza na enem strežniku hitrejša
do meje, ko je število podatkov še dokaj majhno. Po tej meji pa je povprečna podatkovna
baza porazdeljena na dveh strežnikih za 33 % hitrejša.
Graf 5.1: Procedura avtor
Enako razmerje časov vidimo tudi pri procedurah jezik, ključne besede, topologija. Vsaka
od teh procedur ima shranjeno poizvedbo, ki združuje po dve tabeli. Pri majhni količini
podatkov je podatkovna baza bistveno hitrejša kot porazdeljena na dveh strežnikih. Vse
do prehoda meje, kjer porazdeljenost podatkovne baze na dveh strežnikih postane
povprečno 30 % hitrejša.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 32
Graf 5.2: Procedura ključne besede
Graf 5.3: Procedura topologija
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 33
Graf 5.4: Procedura jezik
Bistveno pa odstopajo časi pri proceduri leto. Procedura ima shranjeno poizvedbo, ki ima
povpraševanje v eni tabeli. V našem primeru poizvedba SQL išče indekse RecordID_NR,
ki imajo shranjeno določeno leto nastanka (datum nastanka dela, članka itd. ). Ker pri
tabeli Metadata nismo imeli ustvarjenega indeksa, je iskanje počasnejše. Stolpec, ki
vsebuje vrednost letoIzdaje, ni indeksiran, ker po proizvajalčevih predlogih za skrbništvo
podatkovne baze ni priporočljivo, da se na stolpcih, kjer ni veliko različnih vrednosti,
ustvarjajo dodatni indeksi. S tem opazimo tudi razliko v časih. Pri majhni količini podatkov
v bazi je povpraševanje na enem strežniku hitrejše za 75 % kot na dveh. Pri večji količini
se ta razlika nekoliko zmanjša, kjer je en strežnik še vedno hitrejši za povprečno 23 %.
Graf 5.5: Procedura leto
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 34
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 35
6 SKLEP
Glavni cilji diplomske naloge je bil, da predstavnimo nove relacijske podatkovne modele.
V teoretičnem delu smo na kratko predstavili razvoj nerelacijskih podatkovnih modelov
NoSQL ter relacijskih NewSQL. Osredotočili smo se na podatkovno bazo VoltDB, ki je
ena izmed popularnejših predstavnikov NewSQL tehnologije.
V praktičnem delu diplomske naloge smo naredli analizo, kjer smo spremljali časovne
razlike posameznih transakcij in horizontalno razširljivost celotne podatkovne baze. Glede
na to, da je testiranje potekalo na strežnikih skoraj minimalnih zahtev za obratovanje, kot
jih priporoča proizvajalec za delovanje podatkovne baze, je podatkovna baza VoltDB
dokaj hitra. Iz tega pa je tudi vidno, da je veliko odvisno tudi od same procesorske moči in
razpoložljivega pomnilniškega prostora, ko se število podatkov povečuje.
Prišli smo do ugotovitve, da lahko s podatkovno bazo VoltDB zadostimo nekaterim
pogojem, ki bi jih potrebovali pri vzpostavitvi podatkovne zbirke nacionalne infrastrukture
odprtega dostopa. Potrebno bi bilo na novo načrtovati konceptualni nivo podatkovne baze
in ga prilagoditi za potrebe, ki jih določa arhitektura podatkovne baze VoltDB. Ker pa
nacionalna infrastruktura odprtega dostopa trenutno že hrani veliko količino shranjenih
metapodatkov in z vsakim dnem postopoma narašča, bi nastal problem glede
pomnilniškega prostora.
Pri projektni nalogi smo naleteli na več problemov glede omejitev, ki jih ima podatkovna
baza VoltDB. Med te sodi pomanjkanje implementacije SQL sintakse in omejitev velikosti
ene domene v stoplpcu na 1 MB. Zaradi te omejitve smo morali izločiti stolpec PlainText,
ki je bil v prvotni podatkovni shemi. Ta stolpec je namreč imel velikost nekaterih vrednosti,
tudi do več 100 MB. S temi omejitvami smo morali poseči tudi po spremembah v
podatkovni shemi.
Za uporabo testiranja smo uporabili odprtokodno različico VoltDB-ja, ki nam ne omogoča
shranjevanja posnetkov podatkovne baze, kar nam je zelo otežilo delo s samim ponovnim
nalaganjem podatkov.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 36
Iz doseženih rezultatov lahko sklepamo, da se sistemi NewSQL lahko primerjajo s
tradicionalnimi relacijsko podatkovnimi modeli v nekaterih določenih primerih. Glede na to,
da je VoltDB predstavljen v večini kot OLTP model, za potrebe OLAP ni ravno primeljiv.
Razširljivost je pri VoltDB-ju precej poenostavljena. Glede same razporeditve podatkov po
posameznih fragmentih baze, kakor tudi dodajanje novih vozlišč, je precej lažje kot pri
nekaterih drugih modelih. Ker se v današnjih časih vse bolj uveljavlja računalništvo v
oblaku, je to velika prednost.
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 37
7 VIRI
[1] A Journey From SQL to NoSQL to NewSQL https://www.cloudave.com/25272/a-
journey-from-sql-to-nosql-to-newsql/ [Internet, obiskano dne 13. 9. 2015]
[2] Michael Stonebraker, NewSQL vs. NoSQL for New OLTP
https://www.usenix.org/conference/lisa11/newsql-vs-nosql-new-oltp [Internet, obiskano
dne 13. 9. 2015]
[3] Andraz Tori, SQL or NoSQL, that is the question!
http://www.slideshare.net/andraz/sql-or-nosql-that-is-the-question [Internet, obiskano dne
13. 9. 2015]
[4] Girish Kumar, Exploring the different types of nosql databases
http://www.3pillarglobal.com/insights/exploring-the-different-types-of-nosql-databases
[Internet, obiskano dne 13. 9. 2015]
[5] James Manyika, Michael Chui, Big data: The next frontier for innovation, competition,
and productivity
http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_in
novation [Internet, obiskano dne 13. 9. 2015]
[6] Prasanna Venkatesh, Nirmala S, NewSQL — The New Way to Handle Big Data
http://opensourceforu.efytimes.com/2012/01/newsql-handle-big-data/ [Internet, obiskano
dne 13. 9. 2015]
[7] A B M Moniruzzaman, NewSQL: Towards Next-Generation Scalable RDBMS for
Online Transaction Processing (OLTP) for Big Data Management
http://arxiv.org/ftp/arxiv/papers/1411/1411.7343.pdf [Internet, obiskano dne 13. 9. 2015]
[8] Technical Overview VoltDB white paper
http://downloads.voltdb.com/datasheets_collateral/technical_overview.pdf[Internet,
obiskano dne 13. 9. 2015]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 38
[9] Jeff Sultelman, Volt DB Demo
https://www.youtube.com/watch?v=FE5paxqPUPc [Internet, obiskano dne 13. 9. 2015]
[10] Choo Yun-cheol Spanner, a Globally Distributed Database by Google
http://www.cubrid.org/blog/dev-platform/spanner-globally-distributed-database-by-google/
[Internet, obiskano dne 13. 9. 2015]
[11] Introduction To NewSQL, http://dwhlaureate.blogspot.si/2014/03/introduction-to-
newsql.html [Internet, obiskano dne 13. 9. 2015]
[12] Rick Nelson, NewSQL takes advantage of main-memory databases like H-Store
http://www.evaluationengineering.com/2015/02/25/newsql-takes-advantage-of-main-
memory-databases-like-h-store/ [Internet, obiskano dne 13. 9. 2015]
[13] John Piekos, NewSQL - answer to Big Data's challenges?
https://voltdb.com/blog/newsql-answer-big-datas-challenges [Internet, obiskano dne 13. 9.
2015]
[14] Ryan Betts, NoSQL vs. NewSQL: Choosing the right tool
https://voltdb.com/blog/nosql-vs-newsql-choosing-right-tool [Internet, obiskano dne 13. 9.
2015]
[15] Michael Stonebraker, New SQL: An Alternative to NoSQL and Old SQL for New
OLTP Apps http://cacm.acm.org/blogs/blog-cacm/109710-new-sql-an-alternative-to-nosql-
and-old-sql-for-new-oltp-apps/fulltext [Internet, obiskano dne 13. 9. 2015]
[16] Wilson A Higashino, Data management in cloud environments: NoSQL and NewSQL
data stores http://www.journalofcloudcomputing.com/content/2/1/22 [Internet, obiskano
dne 13. 9. 2015]
[17] Rakesh Kumar, Neha Gupta, Critical Analysis of Database Management Using
NewSQL, http://ijcsmc.com/docs/papers/May2014/V3I5201499a2.pdf [Internet, obiskano
dne 13. 9. 2015]
[18] Matt Aslett
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 39
https://451research.com/biography?eid=333 [Internet, obiskano dne 13. 9. 2015]
[19] Stavros Harizopoulosr, OLTP Through the Looking Glass, and What We Found
There http://nms.csail.mit.edu/~stavros/pubs/OLTP_sigmod08.pdf [Internet, obiskano dne
13. 9. 2015]
[20] Bill Kleyman, What is a clustered database?
http://insidehpc.com/2006/07/what-is-a-clustered-database/ [Internet, obiskano dne 13. 9.
2015]
[21] Laurent Guérin, NewSQL: what’s this?
http://labs.sogeti.com/newsql-whats/ [Internet, obiskano dne 13. 9. 2015]
[22] Christof Strauch, NoSQL Databases
http://www.christof-strauch.de/nosqldbs.pdf [Internet, obiskano dne 13. 9. 2015]
[23] Eric Brewer, CAP Twelve Years Later: How the "Rules" Have Changed
http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed
[Internet, obiskano dne 13. 9. 2015]
[24] SogetiLabs, Our top 10 2014: NewSQL – what’s this?
http://labs.sogeti.com/our-top-10-2014-newsql-whats-this/ [Internet, obiskano dne 13. 9.
2015]
[25] Matt Aslett, Choosing a Next Gen Database: the New World Order of NoSQL,
NewSQL, and MySQL
http://www.slideshare.net/ScaleBase/choosing-a-next-gen-database-the-new-world-order-
of-no-sql-newsql-and-mysq [Internet, obiskano dne 13. 9. 2015]
[26] Community edition VoltDB
https://github.com/VoltDB/voltdb/wiki [Internet, obiskano dne 13. 9. 2015]
[27] Nataša Knez, Primerjava relacijske in NoSQL podatkovne baze in opredelitev
kriterijev za pomoč pri izbiri najprimernejše podatkovne baze,http://eprints.fri.uni-
lj.si/1630/1/Knez1.pdf [Internet, obiskano dne 13. 9. 2015]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 40
[28] VoltDB dokumentacija
http://docs.voltdb.com/ [Internet, obiskano dne 13. 9. 2015]
[29] Nacionalni portal odprte znanosti, http://openscience.si/OpenData.aspx [Internet,
obiskano dne 13. 9. 2015]
[30] Jernej Sila, Primerjava NewSQL podatkovnih baz NuoDB in VoltDB
http://eprints.fri.uni-lj.si/2958/ [Internet, obiskano dne 13. 9. 2015]
[31 Big Data Meets Big Data Analytics
http://www.sas.com/content/dam/SAS/en_us/doc/whitepaper1/big-data-meets-big-data-
analytics-105777.pdf [Internet, obiskano dne 13. 9. 2015]
[32] Podatkovne baze NoSQL, Aljaž Zrnec, Lovro Šubelj
http://www.dlib.si/preview/URN:NBN:SI:DOC-2Y2OFHMX/7a330754-3742-4262-9ce5-
76f0e5b9ed42 [Internet, obiskano dne 13. 9. 2015]
[33] Jana Medved, Big data tehnologije za analizo velike količine poslovnih podatkov
https://dk.um.si/IzpisGradiva.php?id=45019&lang=slv [Internet, obiskano dne 13. 9. 2015]
[34] Dietner Mario, Uporaba nosql podatkovnih baz za generiranje poročil detektorja
plagiatov https://dk.um.si/IzpisGradiva.php?id=36499&lang=slv [Internet, obiskano dne
13. 9. 2015]
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 41
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 42
Uporaba podatkovnih baz NewSQL pri obdelavi velikih količin podatkov Stran 43