Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Diplomov´ a pr´ ace Modelov´ an´ı v grafov´ e nerelaˇ cn´ı datab´ azi
Plzeˇ n 2013
Milan Beˇcv´aˇr
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 16. kvˇetna 2013 Milan Beˇcv´aˇr
Podˇ ekov´ an´ı Dˇekuji vedouc´ımu diplomov´e pr´ace panu Ing. Romanovi Mouˇckovi, Ph.D. za vstˇr´ıcn´ y pˇr´ıstup, uˇziteˇcn´e rady a pˇripom´ınky pˇri zpracov´an´ı m´e diplomov´e pr´ace.
Abstract This master thesis looks into non-relational databases focused on graph databases and choice of the most suitable of them. After that, an analysis of EEG/ERP data model is made and suitable subset is chosen. Then a data model is designed and implemented in the selected non-relational database. Finally, the selected non-relational database is tested together with the relational one and the attained results are evaluated. Neo4j is evaluated as the suitable non-relational database from the viewpoint of flexibility and speed of executing queries. That is why it was recommended for deployment at EEG/ERP portal. Tato diplomov´a pr´ace se zab´ yv´a nerelaˇcn´ımi datab´azemi se zamˇeˇren´ım na grafov´e datab´aze a n´asledn´ ym v´ ybˇerem nejvhodnˇejˇs´ı z nich. Posl´eze je provedena anal´ yza datov´eho modelu EEG/ERP port´alu a v´ ybˇer vhodn´e podmnoˇziny. N´aslednˇe je ve vybran´e nerelaˇcn´ı datab´azi navrˇzen a implementov´an datov´ y model. Nakonec je vybran´a nerelaˇcn´ı datab´aze otestov´ana s datab´az´ı relaˇcn´ı a zhodnot´ı se dosaˇzen´e v´ ysledky, kter´e vyhodnotily jako vhodnou nerelaˇcn´ı datab´azi z hlediska flexibility a rychlosti vykon´an´ı dotaz˚ u pr´avˇe Neo4j, a ta byla doporuˇcena pro nasazen´ı v r´amci EEG/ERP port´alu.
Obsah ´ 1 Uvod
1
2 NoSQL datab´ aze 2.1 Charakteristika a motivace . . . . . . 2.2 ACID . . . . . . . . . . . . . . . . . 2.3 CAP Teor´em . . . . . . . . . . . . . 2.4 Dotazov´an´ı . . . . . . . . . . . . . . ˇ alov´an´ı . . . . . . . . . . . . . . . 2.5 Sk´ 2.6 Pouˇzit´ı v praxi . . . . . . . . . . . . 2.7 Srovn´an´ı s relaˇcn´ımi datab´azemi . . . 2.8 Datov´ y model . . . . . . . . . . . . . 2.9 Grafov´e datab´aze . . . . . . . . . . . 2.9.1 Neo4j . . . . . . . . . . . . . 2.9.2 OrientDB . . . . . . . . . . . 2.9.3 DEX . . . . . . . . . . . . . . 2.10 Obecn´e srovn´an´ı nerelaˇcn´ıch datab´az´ı 3 Neo4j 3.1 Z´akladn´ı charakteristika . . . . 3.2 Datov´ y model . . . . . . . . . . 3.2.1 Vrcholy (nodes) . . . . . 3.2.2 Hrany (relationships) . . 3.2.3 Vlastnosti (properties) . 3.3 Proch´azen´ı grafem a dotazov´an´ı 3.3.1 Cypher . . . . . . . . . . 3.3.2 Gremlin . . . . . . . . . 3.3.3 Traversal Framework . . 3.3.4 Grafov´e algoritmy . . . . 3.4 Integrace a nasazen´ı . . . . . . 3.4.1 Instalace . . . . . . . . . 3.4.2 Licence . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
2 2 3 4 5 5 5 6 7 8 10 10 10 11
. . . . . . . . . . . . .
12 12 13 13 13 14 15 16 16 17 19 20 20 20
3.5
3.4.3 Syst´emov´e poˇzadavky 3.4.4 Nasazen´ı . . . . . . . . Vizualizaˇcn´ı n´astroje . . . . . 3.5.1 Web admin Neo4j . . . 3.5.2 Neoclipse . . . . . . . 3.5.3 Gephi . . . . . . . . .
. . . . . .
4 EEG/ERP port´ al 4.1 Vize port´alu . . . . . . . . . . . 4.2 Popis port´alu . . . . . . . . . . 4.2.1 Role port´alu . . . . . . . 4.3 Anal´ yza datov´eho sch´ematu . . 4.4 V´ ybˇer vhodn´e podmnoˇziny . . . 4.4.1 Popis vybran´ ych tabulek
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
21 21 22 22 22 23
. . . . . .
24 24 24 25 27 28 30
5 Generov´ an´ı testovac´ıch dat 32 5.1 Datanamic Data Generator for Oracle . . . . . . . . . . . . . . 32 5.1.1 Postup vygenerov´an´ı dat . . . . . . . . . . . . . . . . . 32 6 N´ avrh datov´ eho modelu v Neo4j 34 6.1 Mapov´an´ı z datov´eho sch´ematu relaˇcn´ı datab´aze . . . . . . . . 34 6.2 Sch´ema datov´eho modelu . . . . . . . . . . . . . . . . . . . . . 35 6.3 Popis datov´eho modelu . . . . . . . . . . . . . . . . . . . . . . 36 7 Implementace datov´ eho modelu v Neo4j 37 7.1 Pouˇzit´e technologie . . . . . . . . . . . . . . . . . . . . . . . . 37 7.2 Popis implementace . . . . . . . . . . . . . . . . . . . . . . . . 37 8 Testov´ an´ı a zhodnocen´ı v´ ysledk˚ u 8.1 Testov´an´ı . . . . . . . . . . . . . . 8.1.1 Flexibilita datov´eho modelu 8.1.2 Rychlost vykon´an´ı dotaz˚ u . 8.2 Zhodnocen´ı v´ ysledk˚ u . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
40 40 41 42 50
9 Z´ avˇ er
52
Literatura
53
A Uˇ zivatelsk´ a dokumentace 55 A.1 Pˇr´ıprava n´astroj˚ u pro testov´an´ı . . . . . . . . . . . . . . . . . 55 A.2 Spuˇstˇen´ı testov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . 56 A.2.1 Testov´an´ı datab´aze Oracle . . . . . . . . . . . . . . . . 56
A.2.2 Testov´an´ı datab´aze Neo4j . . . . . . . . . . . . . . . . 57 B Sch´ ema grafov´ e struktury v Neo4j
59
C Obsah pˇ riloˇ zen´ e CD 61 C.1 Struktura aplikace Neo4j Graph Database Creating . . . . . . 61
´ 1 Uvod V praxi mohou nastat situace, kdy n´am jiˇz pˇrestane vyhovovat st´avaj´ıc´ı datov´ y model relaˇcn´ı datab´aze. D˚ uvodem m˚ uˇze b´ yt pevnˇe stanoven´e datov´e sch´ema, kter´e je v pˇr´ıpadˇe relaˇcn´ıch datab´az´ı tvoˇreno tabulkami nebo velk´ y objem uchov´avan´ ych dat. Z tohoto d˚ uvodu je vhodnˇejˇs´ı zvolit nerelaˇcn´ı datab´aze. Nerelaˇcn´ı neboli NoSQL datab´aze mohou ukl´adat data do r˚ uzn´ ych struktur (graf, xml dokument, kl´ıˇc / hodnota, apod.) a jsou schopn´e pracovat s obrovsk´ ym mnoˇzstv´ı dat (zejm´ena Big data1 ). V souˇcasn´e dobˇe se vyuˇz´ıvaj´ı hlavnˇe v oblasti cloud computingu, soci´aln´ıch s´ıt´ı, apod. N´apln´ı t´eto diplomov´e pr´ace je prostudovat moˇznosti, kter´e nab´ızej´ı nerelaˇcn´ı datab´aze a prorovnat je s datab´azemi relaˇcn´ımi. Zamˇeˇrit se na datab´aze umoˇzn ˇuj´ıc´ı pˇr´ımo ukl´adat grafov´e struktury (d´ale jen grafov´e datab´aze) a vybrat jednu z nich pro n´avrh a implementaci podmnoˇziny datov´eho sch´ematu EEG/ERP port´alu. Takto vytvoˇrenou grafovou datab´azi otestovat s datab´az´ı relaˇcn´ı a zhodnotit dosaˇzen´e v´ ysledky. Na z´akladˇe zhodnocen´ı dosaˇzen´ ych v´ ysledk˚ u rozhodnout, kter´a datab´aze je vhodnˇejˇs´ı a proˇc. Pr´ace je ˇclenˇena do nˇekolika kapitol. Prvn´ı kapitola se vˇenuje nerelaˇcn´ım datab´az´ım, napˇr. moˇznost´ı dotazov´an´ı, ˇsk´alov´an´ı a pouˇzit´ı v praxi. D´ale je uveden pˇrehled z´akladn´ıch typ˚ u nerelaˇcn´ıch datab´az´ı a n´asledn´e zamˇeˇren´ı na grafov´e datab´aze, ze kter´ ych jsou vybr´any tˇri z´astupci a u kaˇzd´eho z nich je uvedena z´akladn´ı charakteristika. Druh´a kapitola se zab´ yv´a v´ ybˇerem vhodn´e grafov´e datab´aze a detailn´ı sezn´amen´ı se n´ı. Dalˇs´ı ˇctyˇri kapitoly jsou vˇenov´any anal´ yze datov´eho sch´ematu EEG/ERP port´alu a v´ ybˇerem vhodn´e podmnoˇziny. Souˇc´ast´ı anal´ yzy je generov´an´ı testovac´ıch dat do datov´eho sch´ematu EEG/ERP port´alu. Na z´akladˇe t´eto anal´ yzy se v dalˇs´ı kapitole navrhne datov´ y model grafov´e datab´aze a pot´e naimplementuje. Posledn´ı se zab´ yv´a samotn´ ym otestov´an´ım relaˇcn´ı datab´aze s datab´az´ı nerelaˇcn´ı. Testuj´ı se dva hlavn´ı poˇzadavky - flexibilita datov´eho modelu a rychlost vykon´an´ı dotaz˚ u. Na konci t´eto kapitoly jsou zhodnoceny dosaˇzen´e v´ ysledky, podle nichˇz se rozhodne, kter´a z testovan´ ych datab´az´ı je vhodnˇejˇs´ı. Dodatek k t´eto diplomov´e pr´aci tvoˇr´ı kapitoly pˇr´ıloh, kter´e obsahuj´ı uˇzivatelskou dokumentaci popisuj´ıc´ı cel´ y postup testov´an´ı, d´ale sch´ema grafov´e datab´aze vˇcetnˇe rozˇs´ıˇren´ı datov´eho modelu a popis obsahu pˇriloˇzen´eho CD. 1
Big data - oznaˇcuje soubory dat, jejichˇz velikost je mimo schopnosti zachycovat, spravovat a zpracov´ avat data bˇeˇznˇe pouˇz´ıvan´ ymi softwarov´ ymi prostˇredky v rozumn´em ˇcase.
1
2 NoSQL datab´aze Pojem NoSQL oznaˇcuje velmi poˇcetnou skupinu nerelaˇcn´ıch datab´az´ı. Tyto datab´aze na rozd´ıl od relaˇcn´ıch datab´az´e nepouˇz´ıvaj´ı dotazovac´ı jazyk SQL. Neznamen´a to tedy, ˇze by vˇsechna datov´a u ´loˇziˇstˇe spadaj´ıc´ı do t´eto skupiny odm´ıtala SQL, jak by mohl n´azev NoSQL naznaˇcovat. Ve skuteˇcnosti pojem NoSQL b´ yv´a datab´azovou komunitou vysvˇetlov´an jako no only SQL” (v ” pˇrekladu nejen SQL”). ” Pˇredevˇs´ım se jedn´a o alternativn´ı pˇr´ıstup ukl´ad´an´ı dat do datab´aze jin´ ym zp˚ usobem neˇz jak´ ym ho ukl´adaj´ı datab´aze relaˇcn´ı, kter´ y m˚ uˇze b´ yt v nˇekter´ ych pˇr´ıpadech vhodnˇejˇs´ı. Z tohoto d˚ uvodu nemus´ıme pouˇz´ıvat jen zabˇehl´e relaˇcn´ı datab´azov´e syst´emy, ale v urˇcit´ ych pˇr´ıpadech, kdy se nehod´ı relaˇcn´ı (tabulkov´ y) model datab´aze, vyuˇz´ıt nerelaˇcn´ı datab´aze. Pˇresnˇejˇs´ı definice je takov´ato: ”NoSQL datab´ aze je software pro persistenci dat, kter´ y je alternativou ke klasick´ ym relaˇ cn´ım datab´ az´ım”.[6]
2.1
Charakteristika a motivace
• Vysok´a ˇsk´alovatelnost (vertik´alnˇe, horizont´alnˇe) • Snadn´a podpora replikac´ı a distribuce dat • Flexibiln´ı sch´ema, semistrukturovan´a data ˇ asteˇcn´e vyuˇzit´ı ACID1 (transakˇcn´ıho zpracov´an´ı) • C´ • Podpora syst´emu transakc´ı BASE2 (opakem ACID) • CAP teor´em3 • Asynchronn´ı vkl´ad´an´ı, aktualizace dat • Vˇetˇsina NoSQL datab´az´ı jsou Open Source
1
ACID (Atomicity, Consistency, Isolation, Durability) BASE (Basically Available, Soft-state, Eventually Consitent) 3 CAP teor´em (Consistency, Availability, Partition Tolerance) 2
2
NoSQL datab´aze
ACID
Bezsch´emov´e nerelaˇcn´ı datab´aze jsou stavˇen´e tak, aby byly rychl´e, dok´azaly zvl´adnout obrovsk´e objemy dat a dok´azaly tolerovat v´ ypadek s´ıtˇe. Na u ´kor datov´e konzistence, tzn. data nejsou pro vˇsechny uˇzivatele v jednu chv´ıli stejn´a, ale ˇcasem” se srovnaj´ı, tzn. uˇzivatel´e maj´ı k dispozici stejn´a data. ” Hlavn´ı motivac´ı NoSQL datab´az´ı je dosaˇzen´ı horizont´aln´ı ˇsk´alovatelnosti4 datab´azov´eho zpracov´an´ı v dynamick´em prostˇred´ı distribuovan´ ych datab´az´ı, kter´e obsahuj´ı semistrukturovan´a data bez pevn´eho datab´azov´eho sch´ematu. V nerelaˇcn´ıch datab´azov´ ych syst´emech se obvykle neˇreˇs´ı transakˇcn´ı zpracov´an´ı (ACID), referenˇcn´ı integrita, atd. Rychlost vykon´av´an´ı dotaz˚ u u NoSQL datab´az´ı je v´ yraznˇe lepˇs´ı neˇz u robustnˇejˇs´ıch relaˇcn´ıch datab´az´ıch.
2.2
ACID
Jedn´a se o z´akladn´ı funkcionalitu datab´azov´eho syst´emu zajiˇst’uj´ıc´ı transakˇcn´ı zpracov´an´ı, kdy je potˇreba, aby data byla konzistentn´ı a pˇri v´ yskytu chyby bylo moˇzn´e vr´atit celou operaci do p˚ uvodn´ıho stavu. Mezi hlavn´ı vlastnosti transakˇcn´ıho zpracov´an´ı patˇr´ı: • Atomicita (Atomicity) - v transakci probˇehnout bud’ vˇsechny operace nebo ˇza´dn´a (kaˇzd´a transakce je atomick´a) • Konzistence (Consistency) - syst´em mus´ı zajistit, aby data byla konzistentn´ı (v´ ysledkem transakce jsou platn´a data) • Izolace (Isolation) - transakce se nevz´ajem neovlivˇ nuj´ı, napˇr. pˇri paraleln´ım zpracov´an´ı • Trvalost (Durability) - zmˇeny zapsan´e u ´spˇeˇsnou transakc´ı jsou v datab´azi uloˇzeny natrvalo Datab´azov´ y syst´em splˇ nuj´ıc´ı vˇsechny ˇctyˇri vlastnosti ACID transakc´ı se naz´ yv´a silnˇe konzistentn´ı”. Tyto datab´azov´e syst´emy jsou potˇreba jen v ur” ˇcit´ ych pˇr´ıpadech, napˇr. pˇri pouˇz´ıt´ı v bank´ach a obchodech. Syst´emy, kter´e ne zcela podporuj´ı ACID vlastnosti se naz´ yvaj´ı pˇr´ıpadnˇe konzistentn´ı”. V ” pˇr´ıpadˇe u ´mysln´eho zanedb´an´ı siln´e konzistence” lze z´ıskat v´ıce dostupnosti a ” t´ım i v´ yhodu lepˇs´ı ˇsk´alovatelnosti. Tento pˇr´ıstup bez siln´e konzistence”, ˇcasto ” vyuˇz´ıvaj´ı pr´avˇe NoSQL datab´aze. [6] 4
Horizont´ aln´ı ˇsk´ alov´ an´ı - rozdˇelen´ı v´ ypoˇctu na paraleln´ı u ´lohy mezi v´ıce server˚ u
3
NoSQL datab´aze
2.3
CAP Teor´em
CAP Teor´ em
CAP teor´em se pouˇz´ıv´a pˇri navrhov´an´ı distribuovan´eho syst´emu a obsahuje tˇri z´akladn´ı poˇzadavky na konzistenci, dostupnost a odolnost proti v´ ypadku s´ıtˇe. CAP teor´em ˇr´ık´a, ˇze neexistuje distribuovan´ y syst´em, kter´ y by splˇ noval vˇsechny tˇri poˇzadavky najednou. Poˇzadavky na distribuovan´e prostˇred´ı: • Konzistence (Consistency) - znamen´a, ˇze v urˇcit´em ˇcase vˇsechny uzly distribuovan´eho syst´emu vid´ı stejn´a data. • Dostupnost (Availability) - znamen´a, ˇze kaˇzd´ y klient po sv´em dotazu dostane informaci o tom, zda-li byla operace u ´spˇeˇsn´a, nebo ne´ uspˇeˇsn´a. • Tolerance rozdˇelen´ı s´ıtˇe (Partition Tolerance) - znamen´a, ˇze pokud ˇca´st s´ıtˇe vypadne (pˇreruˇs´ı se spojen´ı, anebo dojde ke ztr´atˇe pˇrenosu mezi uzly), syst´em bude st´ale schopn´ y odpov´ıdat na dotazy. Ve skuteˇcnosti je nemoˇzn´e vytvoˇrit n´avrh distribuovan´eho syst´emu, kter´ y splˇ nuje dvˇe z vlastnost´ı CAP teor´emu. Tuto skuteˇcnost dokazuje Obr´azek 2.1, kde je vyznaˇceno nˇekolik datab´azov´ ych syst´em˚ u, pˇredevˇs´ım z ˇrad pˇredn´ıch z´astupc˚ u NoSQL datab´az´ı, kter´e spadaj´ı do skupiny splˇ nuj´ı dvˇe ze tˇr´ı vlastnost´ı CAP teor´emu. [3]
Obr´azek 2.1: Obecn´e zn´azornˇen´ı CAP Brewerova teor´emu v NoSQL.[12]
4
NoSQL datab´aze
2.4
Dotazov´an´ı
Dotazov´ an´ı
V NoSQL datab´az´ıch je dotazov´an´ı nejm´enˇe propracovanou ˇc´ast´ı. Nad nˇekter´ ymi NoSQL datab´azemi se lze dotazovat jazykem SQL, avˇsak pouze jeho omezenou formou (SimpleDB, OrientDB). V t´eto omezen´e formˇe nen´ı k dispozici napˇr. operace spojen´ı, agregace a zanoˇrov´an´ı dotaz˚ u, kter´e lze nal´ezt u dotazovac´ıch jazyk˚ u GOL (Google Query Language) nebo HQL (Hypertext Query Language). Oba tyto dotazovac´ı jazyky jsou podmnoˇzinou jazyka SQL. Operace spojen´ı (JOIN) a ˇrazen´ı (ORDER BY) nejsou v NoSQL podporov´any, a to z d˚ uvodu horizont´aln´ıho ˇsk´alov´an´ı dat (viz ˇsk´alov´an´ı). Do budoucna je v´ıce neˇz pravdˇepodobn´e, ˇze bude vytvoˇren nˇejak´ y standardizovan´ y dotazovac´ı jazyk pouˇziteln´ y pro celou skupinu NoSQL.[6]
2.5
ˇ alov´ Sk´ an´ı
Relaˇcn´ı datab´aze jsou ve vˇetˇsinˇe pˇr´ıpad˚ u um´ıstˇeny na jednom serveru a prov´ad´ı se tzv. vertik´aln´ı ˇsk´alov´an´ı (scale-up), kter´e funguje na principu pˇrid´an´ı v´ıce procesor˚ u nebo v´ıce vnitˇrn´ı ˇci vnˇejˇs´ı pamˇeti. Druh´ ym zp˚ usobem je ˇsk´alovat data horizont´alnˇe (scale-out), coˇz pˇrin´aˇs´ı v´ yhodu v rozdˇelen´ı v´ ypoˇctu na paraleln´ı u ´lohy mezi v´ıce server˚ u. Tento prostˇredek ˇsk´alov´an´ı se obzvl´aˇstˇe pouˇz´ıv´a ve spojitosti s NoSQL datab´azemi. Data v NoSQL datab´az´ıch mohou b´ yt ˇsk´alov´ana i vertik´alnˇe a to tak, ˇze se rozdˇel´ı z´aznam na ˇc´asti, pˇriˇcemˇz kaˇzd´a z nich je uloˇzena na jin´em uzlu. Horizont´aln´ı ˇsk´alov´an´ı z´aroveˇ n komplikuje dosaˇzen´ı ACID vlastnost´ı.[6]
2.6
Pouˇ zit´ı v praxi
Rozhodov´an´ı, kdy pouˇz´ıt ovˇeˇren´e relaˇcn´ı datab´aze nebo nezn´amou NoSQL datab´azi, nen´ı jednoduch´e. V tomto pˇr´ıpadˇe hraje roli jak technick´a tak i ekonomick´a str´anka. D˚ uvodem je tak´e to, ˇze NoSQL datab´aze jsou relativnˇe mladou technologi´ı, kter´a se poˇr´ad vyv´ıj´ı. NoSQL datab´aze nemaj´ı takov´e moˇznosti pˇri dotazov´an´ı jako datab´aze relaˇcn´ı, napˇr. pokud aplikace podporuje jedinou DB operaci, a to uloˇzen´ı ˇr´adku a jeho naˇcten´ı podle nˇejak´eho ID. To vede k tomu, ˇze na aplikaci je pˇren´aˇsena odpovˇednost v podobˇe generov´an´ı sekund´arn´ıch index˚ u, kter´a je (vˇetˇsinou) souˇca´st´ı datab´azov´eho enginu. V pˇr´ıpadˇe pouˇzit´ı NoSQL by muselo doj´ıt k pˇredˇel´an´ı cel´e aplikace. 5
NoSQL datab´aze
Srovn´an´ı s relaˇcn´ımi datab´azemi
NoSQL datab´aze je doporuˇceno pouˇz´ıvat v situaci, kter´a n´am umoˇzn ˇuje snadn´e vytvoˇren´ı datov´eho modelu, nejl´epe od zaˇc´atku v´ yvoje. Jelikoˇz n´aklady spojen´e s pˇrechodem na NoSQL datab´aze mohou b´ yt vysok´e (ˇskolen´ı program´ator˚ u, spr´ava SW v infrastruktuˇre, z´aloha, apod.). Datab´azov´e syst´emy patˇr´ıc´ı do NoSQL nach´azej´ı uplatnˇen´ı nejˇcastˇeji v cloud computingu, aplikac´ıch web 2.05 a hlavnˇe v soci´aln´ıch s´ıt´ıch (Facebook, Twitter), kde horizont´aln´ı ˇsk´alov´an´ı zahrnuje obrovsk´e mnoˇzstv´ı uzl˚ u. Mezi klienty vyuˇz´ıvaj´ıc´ı NoSQL patˇr´ı spoleˇcnosti Adobe, Mozilla, Google a LinkedIn. U vˇsech tˇechto zm´ınˇen´ ych oblast´ı pouˇzit´ı lze oˇcek´avat velk´ y provoz, tud´ıˇz velk´ y objem ukl´adan´ ych dat, kter´e je nutn´e zpracovat, a proto je v´ yhodnˇejˇs´ı pouˇz´ıt pr´avˇe NoSQL datab´aze.
2.7
Srovn´ an´ı s relaˇ cn´ımi datab´ azemi
Relaˇcn´ımi datab´azemi jsou naz´ yvan´e takov´e datab´azov´e syst´emy, u kter´ ych ˇ jsou data organizov´ana a ˇr´ızena SRBD (Syst´em ˇr´ızen´a b´aze dat). Datov´e sch´ema pro ukl´ad´an´ı dat reprezentuje tabulka, kter´a obsahuje ˇr´adky, sloupce a vztahy mezi jednotliv´ ymi tabulkami. Relaˇcn´ı datab´aze vych´azej´ı z datov´ ych model˚ u a sch´emat, do nichˇz ukl´ad´ame data z re´aln´eho svˇeta. Jeho dotazovac´ım jazykem je SQL, kter´ y je standardizov´an. Nejvˇetˇs´ı v´ yhodou relaˇcn´ıch datab´az´ı je snadn´a transformace objekt˚ u z re´aln´eho svˇeta (tak, jak je vid´ı ˇclovˇek) do tabulkov´eho sch´ematu. I relaˇcn´ı datab´aze maj´ı sv´e nev´ yhody. Nad urˇcitou mez´ı objemu poˇzadavk˚ u lze narazit na z´asadn´ı v´ ykonnostn´ı limit, kter´ y m´a za n´asledek horˇs´ı ˇsk´alovatelnost a sn´ıˇzen´ı rychlosti vykonan´ ych dotaz˚ u nad datab´az´ı. Sloˇzitˇeji se distribuj´ı (sharding) a pro velk´e weby (Facebook, Google, Twitter) jiˇz nestaˇc´ı z d˚ uvodu uchov´av´an´ı a zpracov´an´ı velk´eho objemu dat, kter´ y roste exponenci´alnˇe. Nejvˇetˇs´ım u ´skal´ım relaˇcn´ıch datab´az´ı jsou samotn´e vztahy mezi tabulkami, a to v pˇr´ıpadˇe, kdy se dotazujeme datab´azov´eho serveru na data z v´ıce tabulek, kdy je potˇreba dan´e tabulky mezi sebou propojit. K propojen´ı v´ıce jak jedn´e tabulky se pouˇz´ıv´a pˇr´ıkaz JOIN, kter´ y je souˇca´st´ı dotazovac´ıho jazyka SQL. Pˇri nadmˇern´em pouˇzit´ı tohoto pˇr´ıkazu m˚ uˇze doch´azet k v´ yrazn´emu sn´ıˇzen´ı rychlosti pˇri vykon´an´ı dotazu nad v´ıce tabulkami.
5
Web 2.0 - webov´e str´ anky obsahuj´ıc´ı prostor pro sd´ılen´ı a spoleˇcnou tvorbu obsahu.
6
NoSQL datab´aze
Datov´y model
NoSQL datab´aze byly pops´any na zaˇc´atku t´eto kapitoly. V t´eto ˇca´sti se budu zab´ yvat sp´ıˇse v´ yhodami oproti relaˇcn´ım datab´az´ım. V souˇcasn´e dobˇe se mus´ıme pot´ ykat s probl´emem, jak´ ym zp˚ usobem uchov´avat a zpracov´avat velk´e mnoˇzstv´ı dat, kter´e poˇr´ad nar˚ ust´a. Pˇr´ıkladem zpracov´an´ı a uchov´an´ı velk´eho objemu dat jsou napˇr. osobn´ı u ´daje o uˇzivatel´ıch (napˇr. Facebook), soci´aln´ı grafy, geolokace, uˇzivatelsky generovan´ y obsah, atd. Probl´em je v tom, ˇze zpracov´avat takov´e mnoˇzstv´ı dat v relaˇcn´ıch datab´az´ıch je velmi n´akladn´e a ˇcasto to m´a neblah´ y vliv na v´ ykon cel´e datab´aze. Pro tyto u ´ˇcely byla vytvoˇrena nov´a skupina nerelaˇcn´ıch datab´az´ıch zvan´a NoSQL. NoSQL datab´aze nemaj´ı oproti klasick´ ym relaˇcn´ım datab´azov´ ym syst´em˚ um pevnˇe stanov´en´a sch´emata pro ukl´ad´an´ı dat. Pro kaˇzdou situaci se hod´ı pouˇz´ıt jinou nerelaˇcn´ı datab´azi, kter´a obsahuje jin´ y datov´ y model, napˇr. grafov´a, dokumentovˇe orientovan´a, sloupcov´a, atd. Nev´ yhodou je pouˇzit´ı r˚ uzn´ ych dotazovac´ıch jazyk˚ u pro r˚ uzn´e nerelaˇcn´ı datab´aze oproti standardizovan´emu dotazovac´ımu jazyku SQL, kter´ y pouˇziv´a vˇetˇsina relaˇcn´ıch datab´az´ı.
2.8
Datov´ y model
Ve svˇetˇe datab´az´ı se k popisu datab´aze vyuˇz´ıv´a datov´ y (logick´ y) model. NoSQL uzn´av´a jin´ y pˇr´ıstup, kter´ y je intuitivn´ı a bez pˇredepsan´ ych norem, podle kter´eho se r˚ uzn´ı i terminologie. V NoSQL existuje nˇekolik datov´ ych model˚ u, kter´e se l´ıˇs´ı svoj´ı strukturou. • Grafov´e datab´aze (Graph database) • Typ kl´ıˇc/hodnota (Key-value database) • Dokumentovˇe orientovan´e (Document Oriented database) • Objektovˇe orientovan´e (Object database) • Sloupcov´e orientovan´e (Column Oriented database) • XML (XML database)
7
NoSQL datab´aze
2.9
Grafov´e datab´aze
Grafov´ e datab´ aze
Grafov´e datab´aze pˇredstavuj´ı jednu z kategori´ı NoSQL syst´em˚ u pro uchov´av´an´ı dat reprezentovateln´ ych prostˇrednictv´ım grafu, tj. element˚ u s nedeterminovan´ ym poˇctem vz´ajemn´ ych propojen´ı. Pracuj´ı na obdobn´em principu jako s´ıt’ov´e datab´azov´e syst´emy. Pouze jejich vrcholy a hrany pˇredstavuj´ı data strukturovan´a jako mnoˇziny dvojic kl´ıˇc/hodnota. T´ımto odpadaj´ı probl´emy s uloˇzen´ım grafu / stromu do relaˇcn´ı datab´aze, kter´a nen´ı pro tyto u ´ˇcely pˇr´ıliˇs vhodn´a. V porovn´an´ı s relaˇcn´ımi datab´azemi jsou grafov´e datab´aze pˇri zpracov´an´ı asociatvn´ıch dat ˇcasto rychlejˇs´ı, jelikoˇz se obejdou bez v´ ypoˇcetnˇe drah´ ych operac´ı JOIN. Nav´ıc jsou schopn´e mnohem l´epe mapovat strukturu objektovˇe orientovan´ ych aplikac´ı bez pevnˇe stanov´eho datov´eho sch´ematu. Grafov´e datab´aze pˇredstavuj´ı mocn´ y n´astroj pro ˇreˇsen´ı grafov´ ych u ´loh, jak´ ymi jsou napˇr´ıklad nalezen´ı nejkratˇs´ı cesty mezi dvˇema vrcholy. Na obr´azku 2.2 je vidˇet rozd´ıl mezi datov´ ym modelem relaˇcn´ı datab´aze (vlevo), kde jednotliv´e obdeln´ıˇcky” reprezentuj´ı dan´ y ˇra´dek v tabulce a ” grafov´e datab´aze (vpravo), kde jednotliv´e obdeln´ıˇcky reprezentuj´ı vrcholy spojen´e hranou.
Obr´azek 2.2: Srovn´an´ı datov´eho modelu relaˇcn´ı a grafov´e datab´aze. [9]
Vrchol v grafu reprezentuje jeden konkr´etn´ı z´aznam z tabulky relaˇcn´ı datab´aze. Hrana reprezentuje dan´ y vztah mezi dvˇema tabulkami, napˇr. 1:N, M:N, atd. Graf m˚ uˇze napˇr. reprezentovat trojice pouˇz´ıvan´e v datov´em modelu RDF zn´am´em z webov´ ych aplikac´ı a soci´aln´ıch s´ıt´ı. Grafov´a data mohou b´ yt ˇ jistˇe implementov´ana pomoc´ı relaˇcn´ıho SRDB, nicm´enˇe jejich zpracov´an´ı, zejm´ena rekurzivn´ıch dotaz˚ u je sloˇzit´e a pro zjiˇst’ov´an´ı cest v grafu je tˇreba pouˇz´ıt mnoho operac´ı spojen´ı. V´ yhodou grafov´ ych datab´azov´ ych syst´em˚ u je, ˇze velmi mnoho situac´ı ˇci model˚ u lze snadno popsat grafovou strukturou. 8
NoSQL datab´aze
Grafov´e datab´aze
Na obr´azku 2.3 je zobrazen datov´ y model grafu popisuj´ıc´ı vlastnosti vrchol˚ u a hran. Vrchol m˚ uˇze b´ yt reprezentov´an nˇejak´ ym objektem (ˇclovˇek, auto) a mezi dvˇema vrcholy je hrana (relace). Kaˇzd´ y vrchol nebo hrana m˚ uˇze obsahovat tzv. vlastnost (popis objektu). Relace mezi dvˇema vrcholy mohou b´ yt r˚ uzn´eho charakteru. Z´akladn´ı typy relac´ı jsou pˇr´ım´e a nepˇr´ım´e. U pˇr´ım´e relace smˇeˇruje ˇsika od rodiˇce k potomkovi a vrcholy jsou ve vztahu odpov´ıdaj´ıc´ı relaˇcn´ım datab´az´ım, napˇr. 1:N, M:N, 1:1. U nepˇr´ım´e relace jsou ˇsipky na obou stran´ach vrchol˚ u a t´ım jsou vrcholy ve vz´ajemn´e relaci.
Obr´azek 2.3: Terminologie pro popis vlastnosti grafu.[10] Na obr´azku 2.4 je vidˇet pˇr´ıklad jednoduch´eho modelu grafov´e datab´aze skl´adaj´ıc´ı se napˇr. z nˇekolika vrchol˚ u, hran a vlastnost´ı. Kaˇzd´ y vrchol obsahuje vlastnosti (Id, Name, Age). Mezi dvˇema vrcholy existuje alespoˇ n jedna hrana, kter´a obsahuje vlastnosti (Id, Label, Since). Vlastnosti lze pˇrirovnat k atribut˚ um (sloupc˚ um) u relaˇcn´ıch datab´az´ı. [10]
Obr´azek 2.4: Uk´azka jednoduch´eho modelu grafov´e datab´aze.[9]
9
NoSQL datab´aze
2.9.1
Grafov´e datab´aze
Neo4j
Jedn´a se o grafov´ y datab´azov´ y syst´em se vˇsemi vlastnostmi robustn´ı datab´aze. Pˇri pouˇzit´ı knihovny Neo4j lze dos´ahnout zv´ yˇsen´ı rychlost dotazov´an´ı aˇz v ˇr´ad˚ u tis´ıc˚ u oproti konveˇcn´ım relaˇcn´ım datab´az´ım (podle autora).[9] • Splˇ nuje ACID vlastnosti transakc´ı • Podpora jazyk˚ u Java, .NET, Ruby, Python, ... • Automatick´e indexov´an´ı, fulltext, Apache Lucene • Dotazov´an´ı - Cypher (deklarativn´ı), Gremlin (imperativn´ı), Java API • Licence - GPL (nekomerˇcn´ı pouˇzit´ı), AGPL (komerˇcn´ı pouˇzit´ı)
2.9.2
OrientDB
Open source ˇreˇsen´ı datab´azov´eho syst´emu s vlastnost´ı dokumentu a grafu, kter´ y je naps´an v jazyce Java. Dokumentovˇe orientovan´a datab´aze je zaloˇzena na grafov´e struktuˇre s pˇr´ım´ ym spojen´ım mezi jednotliv´ ymi z´aznamy. [5] • Splˇ nuje ACID vlastnosti transakc´ı • Dotazov´an´ı pomoc´ı SQL (bez JOIN) • Jazyk Java, HTTP, RESTful s JSON form´atem • Hooks - alternativa k trigger˚ um • Open source (zdarma)
2.9.3
DEX
Vysoce v´ ykonn´a a ˇsk´alovateln´a grafov´a datab´aze napsan´a v jazyce Java a C++. Implementace knihovny obsahuje funkce pro analyzov´an´ı a dotazov´an´ı ˇra´dovˇe bilion˚ u objekt˚ u, kter´e vyˇzaduj´ı mal´e mnoˇzstv´ı u ´loˇzn´eho prostoru na disku a to d´ıky kompresi. [14]
10
NoSQL datab´aze
Obecn´e srovn´an´ı nerelaˇcn´ıch datab´az´ı
• Splˇ nuje ACID vlastnost´ı transakc´ı • Export do form´atu - graphml, grahviz, ygraphml • Podpora jazyk˚ u Java, .NET a C++ • Optimalizace vykon´av´an´ı dotaz˚ u (poskytovan´e kompil´atorem) • Kompatibilita s OS - Windows, Linux, Mac, iOS • Licence - komerˇcn´ı a nekomerˇcn´ı (v´ yvoj, testov´an´ı, v´ yzkum)
2.10
Obecn´ e srovn´ an´ı nerelaˇ cn´ıch datab´ az´ı
Posledn´ı podkapitola v NoSQL datab´az´ıch se zab´ yv´a obecn´ ym srovn´an´ım hlavn´ıch z´astupc˚ u t´eto skupiny. Na obr´azku 2.5 je graf z´avislosti sloˇzitosti dat na velikosti dat, se kter´ ymi zvl´adne dan´a datab´aze pracovat. Jak je patrn´e z grafu datab´aze typu Key-Value stores” poskytuj´ı nejmenˇs´ı sloˇzitost, ale ” maj´ı nejvyˇsˇs´ı kapacitu. Naproti tomu grafov´e datab´aze poskytuj´ı nejvˇetˇs´ı sloˇzitost, ale nejmenˇs´ı kapacitu dat.
Obr´azek 2.5: Obecn´e srovn´an´ı hlavn´ıch z´astupc˚ u NoSQL datab´az´ı. [8]
11
3 Neo4j Neo4j spad´a do skupiny NoSQL datab´az´ı. Jedn´a se o grafov´ y datab´azov´ y syst´em vytvoˇren´ y spoleˇcnost´ı Neo Technology se vˇsemi vlastnostmi robustn´ı datab´aze. Pr´ace s n´ı spoˇc´ıv´a v programov´an´ı objektovˇe orientovan´e s´ıt’ov´e struktury oproti tradiˇcn´ım statick´ ym tabulk´am, kter´e se bˇeˇznˇe uˇz´ıvaj´ı v relaˇcn´ıch datab´az´ı. Podle autor˚ u lze dos´ahnout pouˇzit´ım knihovny Neo4j zv´ yˇsen´ı rychlosti dotazov´an´ı aˇz v ˇra´d˚ u tis´ıc˚ u, oproti konveˇcn´ım relaˇcn´ım datab´az´ım. Potvrdit nebo vyvr´atit toto tvrzen´ı m˚ uˇzeme aˇz po testov´an´ı datab´aze Neo4j. Neo4j se vyuˇz´ıv´a v situac´ıch, kdy potˇrebujeme modelovat ˇcetn´e v´ıcen´asobn´e vztahy, tzn. spojen´ı mezi jednotliv´ ymi entitami a nevyhovuje n´am klasick´ y model relaˇcn´ıch datab´az´ı. [9]
3.1
Z´ akladn´ı charakteristika
• Splˇ nuje ACID vlastnosti transakˇcn´ıho zpracov´an´ı • Vysok´ y stupeˇ n odolnosti a ochrany, kter´ y zaruˇcuje, ˇze ˇza´dn´a vloˇzena data se neztrat´ı • Podpora jazyk˚ u Java, .NET, Ruby, Python, ... • Autoˇri zmiˇ nuj´ı, ˇze kl´ıˇcov´ ym faktorem dobr´eho v´ ykonu je m´ıt hodnˇe pamˇeti RAM (odpov´ıdaj´ıc´ı velikosti grafu) • Datab´aze je limitov´ana poˇctem 32 bili´on˚ u vrchol˚ u, 32 bili´on˚ u hran a 64 bili´on˚ u vlastnost´ı • Vynikaj´ıc´ı podpora technologie Spring • Automatick´e indexov´an´ı, Apache Lucene, fulltextov´ y index • Proch´azen´ı grafem - Cypher, Gremlin, Java API a grafov´e algoritmy (Shortest paths, Dijkstra, A*), • Pˇripojen´ı k datab´azi - embedded, REST API • Licence - GPL (nekomerˇcn´ı), AGPL (komerˇcn´ı)
12
Neo4j
3.2
Datov´y model
Datov´ y model
Neo4j je datab´azov´ y syst´em, kter´ y reprezentuje uloˇzen´a data prostˇrednictv´ım grafov´e struktury, a proto je vhodn´ y v situac´ıch, kdy lze data jednoduˇse pˇrev´est do grafov´e struktury. Data uvnitˇr grafu jsou uloˇzena do generick´ ych struktur, napˇr. List, Tree, Map. Datov´ y model, kter´ y Neo4j pouˇz´ıv´a se skl´ad´a z vrchol˚ u (nodes), hran (relationships) a vlastnost´ı (properties). [9]
3.2.1
Vrcholy (nodes)
Vrcholy v datov´em modelu reprezentuj´ı danou entitu v grafu a kaˇzd´ y z nich m˚ uˇze obsahovat jednu ˇci v´ıce vlastnost´ı, kter´a jej bl´ıˇze specifikuje. Nejjednoduˇs´ı graf je tvoˇren jedn´ım vrcholem a od kaˇzd´eho vrcholu mus´ı v´est minim´alnˇe jedna hrana. Vrcholy mohou b´ yt seskupen´e do pojmenovan´ ych ˇc´ast´ı grafu a ty, kter´e patˇr´ı do stejn´e skupiny, jsou oznaˇcen´e stejn´ ym ˇst´ıtkem (label). Pˇri vytv´aˇren´ı dotazu je jednoduˇs´ı a efektivnˇejˇs´ı pracovat s pojmenovan´ ymi ˇc´astmi grafu nam´ısto cel´eho grafu.[9]
Obr´azek 3.1: Uk´azka reprezentace vrchol˚ u v datov´em modelu Neo4j.[5]
3.2.2
Hrany (relationships)
Hrana spojuje vˇzdy dva vrcholy u nichˇz mus´ı b´ yt platn´ y zaˇca´tek a konec. Hrany jsou pops´any jednou ˇci v´ıce vlastnostmi a mohou b´ yt orientovan´e nebo rovnocen´e (neorientovan´e) v obou smˇerech. Kaˇzd´a hrana mus´ı m´ıt typ
13
Neo4j
Datov´y model
(relationship type) prostˇrednictv´ım nichˇz je moˇzn´e naj´ıt urˇcit´e vrcholy, do kter´ ych smˇeˇruje hrana s dan´ ym typem. [9]
Obr´azek 3.2: Uk´azka reprezentace hran v datov´em modelu Neo4j.[5]
3.2.3
Vlastnosti (properties)
Vlastnosti popisuj´ı jak vrcholy tak i hrany a jsou definov´any jako dvojice kl´ıˇc/hodnota, kde kl´ıˇcem je vˇzdy nˇejak´ y ˇretezec a hodnotou m˚ uˇze b´ yt libovoln´ y primitivn´ı datov´ y typ (viz obr´azek 3.3). [9]
Obr´azek 3.3: Uk´azka reprezentace vlastnost´ı v datov´em modelu Neo4j.[5]
14
Neo4j
3.3
Proch´azen´ı grafem a dotazov´an´ı
Proch´ azen´ı grafem a dotazov´ an´ı
V pˇredchoz´ı ˇca´sti jsme popsali datov´ y model grafov´e datab´aze Neo4j. Nyn´ı je tˇreba popsat, jak´ ym zp˚ usobem lze proch´azet vytvoˇren´ y graf a jak´e prostˇredky na to pouˇz´ıt. Pˇri proch´azen´ı grafu plat´ı, ˇze data jsou uloˇzena ve vrcholech, kter´e bl´ıˇze specifikuj´ı jejich vlastnosti. Vrcholy jsou spojeny pomoc´ı hran, kter´e mohou b´ yt bl´ıˇze specifikov´any sv´ ymi vlastnostmi. Hrany se nejˇcastˇeji zn´azorˇ nuj´ı ve smˇeru od nadˇrazen´eho uzlu k podˇr´ızen´emu, tzn. od rodiˇce” k potomkovi” apod. Nˇekter´e hrany nen´ı potˇreba zdvojovat obˇema ” ” smˇery. Napˇr´ıklad pokud m´ame typ hrany zn´a se s”, tak pokud se Martin ” zn´a s Janou, tak logicky plyne, ˇze i Jana mus´ı zn´at Martina. V tomto pˇr´ıpadˇe staˇc´ı hrana jedn´ım smˇerem. Avˇsak u hrany typu miluje” to vz´ajemn´e b´ yt ” nemus´ı a potom tuto vlastnost lze uv´est v r´amci relace. Vlastnosti vrchol˚ u a hran jsou d˚ uleˇzit´ ym faktorem pˇri proch´azen´ı grafu, jelikoˇz obsahuj´ı informace o hledan´em vrcholu nebo hrany. Napˇr´ıklad m´ame graf (viz obr´azek 3.4) skl´adaj´ıc´ı se z vrchol˚ u, kter´e uchov´avaj´ı informace o lidech (Name, Age, Gender) a hran popisuj´ıc´ı vlastnost KNOWS”. V ” tomto grafu chceme naj´ıt osoby, kter´e se znaj´ı s osobou nazvanou Tho” mas Anderson”. Postup je n´asleduj´ıc´ı, zaˇcneme proch´azet graf od vrcholu s vlastnost´ı Thomas Anderson” a hledat vrcholy, kter´e jsou s t´ımto vrcholem ” spojeny pˇr´ımo hranou s vlastnost´ı KNOWS” a nebo nepˇr´ımo pˇres nˇejak´ y ” dalˇs´ı vrchol. Neo4j nab´ız´ı nˇekolik mechanism˚ u na proch´azen´ı grafem (Cypher, Gremlin, Java API).
Obr´azek 3.4: Pˇr´ıklad na proch´azen´ı grafem v Neo4j.[5]
15
Neo4j
3.3.1
Proch´azen´ı grafem a dotazov´an´ı
Cypher
Jedn´a se o deklarativn´ı grafov´ y dotazovac´ı jazyk, jehoˇz zp˚ usob dotazov´an´ı je podobn´ y dotazovac´ımu jazyku SQL pouˇz´ıvan´emu v relaˇcn´ıch datab´az´ıch. T´ımto prostˇredkem lze dos´ahnout vysoce efektivn´ıho proch´azen´ı grafem bez nutnosti pouˇzit´ı sloˇzit´ ych mechanism˚ u, kter´e nab´ız´ı Java API ˇci Gremlin. Cypher je navrˇzen tak, aby bylo moˇzn´e jednoduˇse a efektivnˇe kl´ast dotazy bez nutnosti znalosti sloˇzit´ ych pˇr´ıkaz˚ u. Cypher je inspirov´an ˇradou r˚ uzn´ ych pˇr´ıstup˚ u, kter´e navazuj´ı na zaveden´e postupy pro expresivn´ı dotazov´an´ı (napˇr. jazyk SPARQL). Vˇetˇsina kl´ıˇcov´ ych slov jako napˇr. WHERE a ORDER BY jsou inspirov´any jazykem SQL. Jak uˇz bylo zm´ınˇeno, Cypher patˇr´ı do skupiny deklarativn´ıch programovac´ıch jazyk˚ u, kter´e jsou zaloˇzeny na myˇslence programov´an´ı pomoc´ı definic, tzn. co se m´a udˇelat” a nikoliv jak se to m´a udˇelat”. Pˇr´ıkladem pouˇzit´ı do” ” tazovac´ıho jazyka Cypher je n´ıˇze a pouˇz´ıv´a graf z pˇredchoz´ıho pˇr´ıkladu (viz Obr´azek 3.4), kde je u ´kolem naj´ıt osoby, ke kter´ ym vede identick´a hrana s vlastnost´ı KNOWS”. ” // Pˇ rı ´klad pouˇ zit´ ı jazyka Cypher START n = node(*) MATCH n-[:KNOWS]->person RETURN person.name, person.age Pˇr´ıkaz START specifikuje jak´e vrcholy se maj´ı prohledat, ve vˇetˇsinˇe pˇr´ıpad˚ u pouˇzijeme znak *”, kter´ y reprezentuje vˇsechny vrcholy. MATCH slouˇz´ı pro ” identifikaci hran, kter´e se maj´ı zahrnout do proch´azen´ı grafu. Posledn´ı pˇr´ıkaz RETURN oznaˇcuje mnoˇzinu, kter´a se m´a zobrazit na v´ ystupu. V tomto pˇr´ıpadˇe se jedn´a o n´azev a vˇek osoby. Person je pojmenovan´a skupina vrchol˚ u, do kter´ ych vede hrana uveden´a v pˇr´ıkazu MATCH.
3.3.2
Gremlin
Gremlin je dom´enovˇe specifick´ y jazyk pro proch´azen´ı graf˚ u, zaloˇzen´ y na jazyku Groovy. Jedn´a se imperativn´ı programovac´ı jazyk, u kter´eho se definuje postup jak´ ym se m´a vykonat dan´ y dotaz. V´ yhodou jazyka Gremlin je nez´avislost na grafov´e datab´azi Neo4j a vyuˇz´ıv´a Blueprints (analogie JDBC pro grafov´e datab´aze). Skripty dotazu poslan´e od klienta jsou spuˇstˇeny na serveru, kde je um´ıstˇena datab´aze a v´ ysledky jsou vr´aceny jako mnoˇziny uzl˚ ua 16
Neo4j
Proch´azen´ı grafem a dotazov´an´ı
hran, kter´e jsou kompatibiln´ı s rozhran´ım Neo4j. Tento zp˚ usob udrˇzuje kon1 zistentn´ı typy v cel´em REST API. Skripty je moˇzn´e pos´ılat ze serveru i ve form´atu JSON. Gremlin umoˇzn ˇuje spustit samovolnˇe k´od z jazyka Groovy, coˇz m˚ uˇze pˇredstavovat v hostovan´em otevˇren´em prostˇred´ı bezpeˇcnostn´ı riziko. Pˇr´ıklad na pouˇzit´ı jazyka Gremlin bude stejn´ y jako v pˇredchoz´ım pˇr´ıkladˇe. // Pˇ rı ´klad pouˇ zit´ ı jazyka Gremlin g.v(0).out("KNOWS") T´ımto jednoduch´ ym pˇr´ıkazem lze zobrazit mnoˇzinu vrchol˚ u, do kter´ ych vede hrana s n´azvem KNOWS a pomoc´ı pˇr´ıkazu out vyp´ıˇseme informace o nalezen´ ych vrcholech na v´ ystup.
3.3.3
Traversal Framework
Dalˇs´ı moˇznost´ı proch´azen´ı grafu v Neo4j je vyuˇz´ıt´ı vestavˇen´eho rozhran´ı API, kter´e je nativnˇe naps´ano pro jazyk Java, ale existuje i podpora pro dalˇs´ı jazyky prostˇrednictv´ım REST API, napˇr. .NET, Ruby, Python. Traversal Framework se skl´ad´a z nˇekolika hlavn´ıch ˇc´ast´ı (viz Obr´azek 3.5), kde je zn´azornˇeno blokov´eho sch´ema rozhran´ı Traversal Framework. • TraversalDescription - hlavn´ı rozhran´ı pro inicializaci proch´azen´ı grafem • Evaluator - pouˇziv´a se pˇri rozhodov´an´ı na kaˇzd´em vrcholu v grafu (reprezentov´ano cestou), zda-li v cestˇe pokraˇcovat nebo vrchol zahrnout do v´ ysledku • Traverser - objekt Traverser je v´ ysledkem vol´an´ı TraversalDescription reprezentuj´ıc´ı pr˚ uchod v grafu a specifikuje form´at zobrazen´ı v´ ysledku • Uniqueness - mnoˇzina pravidel pro u ´pravu jiˇz navˇst´ıven´ ych vrchol˚ u bˇehem proch´azen´ı • Expander- definuje, co se m´a proch´azet, obvykle smˇer hrany vstupuj´ıc´ı do vrcholu a typ 1
REST (Representational State Transfer) je architektonick´ y styl navrˇzen´ y pro distribuovan´e prostˇred´ı
17
Neo4j
Proch´azen´ı grafem a dotazov´an´ı
Obr´azek 3.5: Uk´azka konceptu rozhran´ı Traversal Framework.[5] • Path - z´akladn´ı rozhran´ı, kter´e je souˇc´ast´ı Neo4j API, umoˇzn ˇuje dva odliˇsn´e zp˚ usoby proch´azen´ı: – Rozhran´ı traverser m˚ uˇze vracet v´ ysledky nalezen´e cesty v podobˇe navˇst´ıven´ ych vrchol˚ u v grafu, kter´e jsou oznaˇcen´e za vr´acen´e – Objekty cesty pouˇz´ıvaj´ı hodnocen´ı pozic v grafu pro zjiˇstˇen´ı zda pokraˇcovat v cestˇe od urˇcit´eho bodu nebo ne, a zda je urˇcit´ y vrchol zahrnut do v´ ysledku ˇci nikoliv D´ale uvedu jednoduch´ y pˇr´ıklad pouˇzit´ı rozhran´ı Traversal Framework pro nalezen´ı osoby z pˇredchoz´ıho pˇr´ıkladu (viz Obr´azek 3.4). Nejprve se inicializuje rozhran´ı TraversalDescription a pot´e se nastav´ı potˇrebn´e parametry, napˇr. depthFirst (hloubka proch´azen´ı), relationships (typ relace) a uniqueness (moˇzina pravidel pro u ´pravu pozice pˇri proch´azen´ı). Nakonec se takto inicializovan´e rozhran´ı pouˇzije pro z´ısk´an´ı jednotliv´ ych vrchol˚ u, kter´e jsou pops´any vlastnostmi. [9] // inicializace final TraversalDescription FRIENDS_TRAVERSAL = Traversal.description() .depthFirst() .relationships( Rels.KNOWS ) .uniqueness( Uniqueness.RELATIONSHIP_GLOBAL ); //
Transformace objektu TraversalDescription na objekt Node (vrchol) 18
Neo4j
Proch´azen´ı grafem a dotazov´an´ı
for ( Node currentNode : FRIENDS_TRAVERSAL .traverse( node ) .nodes() ) { output += currentNode.getProperty( "name" ) + "\n"; }
3.3.4
Grafov´ e algoritmy
Knihovna Neo4j obsahuje nˇekolik z´akladn´ıch grafov´ ych algoritm˚ u, kter´e se pouˇz´ıvaj´ı v situaci, kdy potˇrebujeme naj´ıt nejkratˇs´ı cestu z jednoho vrcholu do druh´eho. Nejˇcastˇeji pouˇz´ıvan´ ymi algoritmy jsou: [9] • Shortest paths • all paths • all simple paths • Dijkstra • A* Uk´azka jednoduch´eho pouˇzit´ı grafov´eho algoritmu Dijkstra pro nalezen´ı nejkratˇs´ı cesty mezi vrcholem A a vrcholem B. // pˇ rı ´klad pouˇ z´ ıt´ ı algoritmu Dijkstra PathFinder<WeightedPath> finder = GraphAlgoFactory.dijkstra( Traversal.expanderForTypes( ExampleTypes.MY_TYPE, Direction.BOTH ), "cost" ); WeightedPath path = finder.findSinglePath( nodeA, nodeB ); path.weight(); Inicializuje se objekt PathFinder, kter´ y nastav´ı vˇsechny d˚ uleˇzit´e parametry (typ, smˇer hrany, v´ahu) pro v´ ypoˇcet nejkratˇs´ı cesty pomoc´ı Dijkstrova algoritmu. V objektu WeightedPath se jako parametry vloˇz´ı odkaz na vrchol A a B. Nakonec se zavol´a metoda weight(), kter´a vr´at´ı v´ yslednou d´elku (v´ahu) nejkratˇs´ı cesty. 19
Neo4j
3.4
Integrace a nasazen´ı
Integrace a nasazen´ı
Tato ˇca´st kapitoly se zab´ yv´a zaˇclenˇen´ım knihovny Neo4j do projektu. Samotn´a integrace se skl´ad´a z instalace knihovny, v´ ybˇerem verze knihovny (licence), minim´aln´ıch a doporuˇcen´ ych syst´emov´ ych poˇzadavk˚ u a nakonec moˇznosti nasazen´ı vˇcetnˇe re´aln´eho pouˇzit´ı v praxi. Otestov´an´ı vytvoˇren´e grafov´e datab´aze umoˇzn ˇuj´ı tzv. vizualizaˇcn´ı n´astroje (Gephi, Neoclipse a Web admin), kter´e budou pops´any na konci kapitoly.
3.4.1
Instalace
Neo4j knihovna m˚ uˇze b´ yt nainstalov´ana bud’ jako embedded datab´aze, tzn. datab´aze bˇeˇz´ı ve stejn´em procesu jako aplikace, kter´a j´ı pouˇz´ıv´a, nebo jako standalone datab´aze pˇripojen´a k aplikaci pˇres rozhran´ı REST API, coˇz d´av´a velk´e moˇznosti ve v´ ybˇeru jazyk˚ u (.NET, Ruby, Python, ...) pro implementaci. Knihovnu pro embedded verzi datab´aze je moˇzn´e st´ahnout z ofici´aln´ıch str´anek Neo4j. Pˇri pouˇzit´ı vzd´alen´eho pˇripojen´ı k datab´azi je nutn´e st´ahnout jeˇstˇe knihovnu pro REST API.
3.4.2
Licence
Neo4j je software, kter´ y je k dispozici ve dvou r˚ uzn´ ych licenc´ı. Pro nekomeˇcn´ı vyuˇzit´ı je k dispozici verze Community pod licenc´ı GPL (General Public License), kter´a je zdarma. V pˇr´ıpadˇe pouˇzit´ı pro komerˇcn´ı u ´ˇcely jsou k dispozici verze Advanced, Enterprise pod licenc´ı AGPLv3 (Affero General Public License), kter´a je zpoplatnˇena.[9]
Verze
Popis
Licence
Community
z´akladn´ı datab´aze, pln´a podpora ACID
GPL
Advanced
Pokroˇcil´ y monitoring (anal´ yza aktivit datab´aze)
AGPLv3
Enterprise
online z´alohov´an´ı, klastrov´an´ı, High availability
AGPLv3
Tabulka 3.1: Pˇrehled dostupn´ ych licenc´ı knihovny Neo4j. 20
Neo4j
3.4.3
Integrace a nasazen´ı
Syst´ emov´ e poˇ zadavky
• Procesor - minim´alnˇe Intel Core i3, doporuˇceno Intel Core i7 • Operaˇ cn´ı pamˇ et’ RAM - minim´alnˇe 2 GB, doporuˇceno 16 - 32 GB (podle velikosti grafu) • Pevn´ y disk - minim´alnˇe 10 GB SATA, doporuˇceno SSD w/ SATA • Operaˇ cn´ı syst´ em - Linux, Windows, Mac OS X (Neo4j zaloˇzen na Javˇe => pˇrenositelnost)
3.4.4
Nasazen´ı
Po u ´spˇeˇsn´e instalaci a vytvoˇren´ı modelu grafov´e datab´aze je nutn´e datab´azi nasadit. Jak uˇz bylo zm´ınˇeno v ˇc´asti instalace, Neo4j vyuˇz´ıv´a dva druhy pˇr´ıstupu k datab´azi. • Embedded - jak bylo zm´ınˇeno v pˇredchoz´ı ˇca´sti kapitoly pˇripojen´ı k datab´azi prob´ıh´a lok´alnˇe, tzn. datab´aze je spuˇstˇena ve stejn´em procesu jako aplikace, kter´a j´ı pouˇz´ıv´a. Pˇri implementaci se pracuje s rozhran´ım GraphDatabaseService, kter´e umoˇzn ˇuje pˇrep´ınat mezi jednou a v´ıce instancemi datab´aze. Postup je jednouch´ y, pro jednu instanci se pouˇzije objekt EmbeddedGraphDatabase a pro v´ıce instanc´ı se pouˇzije objekt HighlyAvailableGraphDatabase. • Standalone - jedn´a se o vzd´alen´e pˇripojen´ı k datab´azi, kter´a je um´ıstˇena na jin´em stroji neˇz, na kter´em je spuˇstˇena datab´aze. Ke vzd´alen´e datab´azi se lze pˇripojit prostˇrednictv´ım rozhran´ı REST nebo dostupn´eho ovladaˇce konkr´etn´ıho programovac´ıho jazyka. [9]
21
Neo4j
3.5
Vizualizaˇcn´ı n´astroje
Vizualizaˇ cn´ı n´ astroje
Vizualizaˇcn´ı n´astroje se pouˇz´ıvaj´ı pro zobrazen´ı grafu nebo jeho ˇc´asti, kter´a je v´ ysledkem nˇejak´eho dotazu. Samotn´a vizualizace je u ´ˇcinn´ ym n´astrojem pro vyj´adˇren´ı obsahu grafu, napˇr. zv´ yraznˇen´ı vzor˚ u grafu, spojen´ı mezi vrcholy, atd. Existuj´ı r˚ uzn´e n´astroje pro vizualizaci grafov´e datab´aze (nejen pro Neo4j), kter´e se od sebe liˇs´ı pˇredevˇs´ım nab´ızenou funkcionalitou.
3.5.1
Web admin Neo4j
Neo4j webov´e rozhran´ı je prim´arnˇe uˇzivatelsk´e rozhran´ı pro spr´avu datab´aze a jej´ı vizualizaci. Umoˇzn ˇuje monitorov´an´ı Neo4j serveru, prohl´ıˇzen´ı a manipulov´an´ı s daty a vykon´av´an´ı dotaz˚ u prostˇrednictv´ı konzole. N´astroj pro spr´avu datab´aze je k dispozici na adrese http://localhost:7474, ale nejdˇr´ıve je nutn´e spustit samotn´ y server Neo4j. Administraˇcn´ı rozhran´ı se skl´ad´a z nˇekolika z´aloˇzek: • Dashboard - zobrazuje pˇrehled spuˇstˇen´ ych instanc´ı Neo4j, poˇcet vˇsech vrchol˚ u, hran, typ˚ u hran a vlastnost´ı. • Data browser - slouˇz´ı k proch´azen´ı, pˇrid´av´an´ı nebo upravov´an´ı vrchol˚ u, hran a vlastnost´ı • Console - vykon´av´an´ı dotaz˚ u prostˇrednictv´ım jazyka Gremlin nebo Cypher, komunikov´an´ı se vzd´alenou datab´az´ı pomoc´ı HTTP protokolu • Server info - zobrazuje detailn´ı informace o nastaven´ı serveru Neo4j a JVM
3.5.2
Neoclipse
Neoclipse je vizualizaˇcn´ı n´astroj implementovan´ y v jazyku Java a klade si za c´ıl podporovat v´ yvoj Neo4j aplikac´ı. N´astroj je k dispozici zdarma (Open source). Mezi jeho hlavn´ı funkce patˇr´ı • Vizualizace grafov´e datab´aze • Filtrov´an´ı podle typ˚ u hran 22
Neo4j
Vizualizaˇcn´ı n´astroje
• Vytvoˇren´ı/smaz´an´ı vrchol˚ u a hran • Vytvoˇren´ı typ˚ u hran • Vytvoˇren´ı/smaz´an´ı/editov´an´ı vlastnost´ı popisuj´ıc´ı vrcholy ˇci hrany • Zv´ yraznˇen´ı ˇca´sti grafu a moˇznost pˇrid´an´ı ikon k vrchol˚ um • Podpora dotazovac´ıho jazyka Cypher
3.5.3
Gephi
Gephi je interaktivn´ı vizualizaˇcn´ı desktopov´ y n´astroj, kter´ y umoˇzn ˇuje proch´azet a manipulovat s grafy. N´astroj je dostupn´ y zdarma (Open source). Uˇzivatel interaguje s grafem, manipuluje se strukturami - tvarem a barvami, aby se uk´azaly skryt´e vlastnosti grafu. Uˇz´ıv´a se hlavnˇe k zobrazov´an´ı objemn´ ych graf˚ u v re´aln´em ˇcase a k urychlen´ı prohl´ıˇzen´ı vyuˇz´ıv´a 3D engine. Mezi jeho hlavn´ı funkce patˇr´ı: [2] • Vizualizace v re´aln´em ˇcase • Prohl´ıˇzen´ı a analyzov´an´ı dat • Analyzov´an´ı propojen´ı mezi jednotliv´ ymi vrcholy • Anal´ yza soci´aln´ıch s´ıt´ı • Vytvoˇren´ı kartografi´ı • Metrika grafu • Klastrov´an´ı hiearchick´ ych graf˚ u
23
4 EEG/ERP port´al 4.1
Vize port´ alu
Prvotn´ı myˇslenka EEG/ERP port´alu vznikla v roce 2008 na z´akladˇe nˇeko” lika d˚ uleˇzit´ ych podnˇet˚ u. Katedra informatiky a v´ ypoˇcetn´ı techniky na Z´apadoˇcesk´e univerzitˇe v Plzni se zab´ yv´a projektem experiment´aln´ıho mˇeˇren´ı mozkov´e aktivity. V dobˇe pˇred vznikem port´alu se namˇeˇren´a data ukl´adala neuspoˇra´danˇe na poˇc´ıtaˇc v laboratoˇri na katedˇre. Samotn´a namˇeˇren´a data n´am ale nic neˇreknou o mˇeˇren´e osobˇe, mˇeˇr´ıc´ı osobˇe, pouˇzit´ ych pˇr´ıstroj´ıch a sc´en´aˇr´ıch experiment˚ u. Spoleˇcnˇe s namˇeˇren´ ymi daty bylo nutn´e ukl´adat i informace o jednotliv´ ych experimentech. D´ale bylo zapotˇreb´ı data a informace z experiment˚ u ukl´adat do datab´aze a umoˇznit pˇr´ıstup v´ıce uˇzivatel˚ um pˇres webov´e rozhran´ı. Dalˇs´ım d˚ uvodem, proˇc port´al vznikl, je jeho jedineˇcnost. Po prozkoum´an´ı dostupn´ ych alternativ bylo jednoznaˇcnˇe nutn´e port´al vytvoˇrit od z´akladu a to tak, aby splˇ noval potˇrebn´a krit´eria. ˇ nen´ı jedin´a, kter´a se v´ Samotn´a katedra na ZCU yzkumem EEG zab´ yv´a. Existuje mnoho dalˇs´ıch z´ajmov´ ych skupin s podobn´ ym zamˇeˇren´ım, kter´e by tak´e potˇrebovaly sv´e experimenty sd´ılet s ostatn´ımi. Jedna z viz´ı tohoto projektu je umoˇznit ostatn´ım uˇzivatel˚ um pˇrid´avat a konzultovat sv´e experimenty pˇres webov´e rozhran´ı.”[4]
4.2
Popis port´ alu
Port´al je webov´a aplikace slouˇz´ıc´ı ke spr´avˇe neuroinformatick´ ych dat z´ıskan´ ych mˇeˇren´ım mozkov´e aktivity. Umoˇzn ˇuje skupin´am v´ yzkumn´ık˚ u ukl´adat, aktualizovat, stahovat data a metadata z EEG/ERP experiment˚ u namˇeˇren´ ych v laboratoˇr´ıch. Port´al je vyv´ıjen jako samotn´ y produkt s licenc´ı GNU GPL. Pˇr´ıstup do datab´aze je pomoc´ı webov´eho rozhran´ı. Port´al je naps´an v jazyce Java a je zaloˇzen na frameworku Spring MVC, Spring Security a technologii JSP. Datov´a vrstva pracuje s neuroinformatickou datab´az´ı a pouˇz´ıv´a k tomu syst´em Oracle 11g spolu s objektovˇe relaˇcn´ım mapov´an´ım, kter´e zajiˇst’uje framework Hibernate.
24
EEG/ERP port´al
Popis port´alu
Port´al nab´ız´ı n´asleduj´ıc´ı sadu funkc´ı: • Registrace uˇzivatel˚ u • Ukl´ad´an´ı, aktualizace a stahov´an´ı dat, sc´en´aˇr˚ u a experiment˚ u • N´astroje pro zpracov´an´ı sign´al˚ u • Historie stahov´an´ı • Syst´em pro spr´avu obsahu (CMS) • Fulltextov´e vyhled´av´an´ı Port´al je testov´an na serveru Jetty. Na testovac´ım serveru je dostupn´ y vˇzdy denn´ı build port´alu. Produkˇcn´ı verzi port´alu lze nal´ezt na adrese eegdatabase.kiv.zcu.cz, kter´a bˇeˇz´ı tak´e na serveru Jetty. Cel´ y projekt EEG/ERP je dostupn´ y na veˇrejn´em hostovac´ım serveru Github [1]. Datab´aze nese kromˇe informac´ı o samotn´ ych experimentech a dat jim n´aleˇz´ıc´ıch i dalˇs´ı struktury pro bˇeh samotn´eho port´alu. Mezi ty hlavn´ı patˇr´ı napˇr. informace o uˇzivatel´ıch, v´ yzkumn´ ych skupin´ach, ˇcl´anc´ıch, jejich koment´aˇr´ıch, experimentech, atd. V souˇcasn´e dobˇe se posouv´a v´ yznam port´alu z bˇeˇzn´eho u ´loˇziˇstˇe dat k velk´e webov´e aplikaci schopn´e analyzovat data a pracovat s nimi pˇr´ımo na serveru.[13]
4.2.1
Role port´ alu
Uˇzivatel´e pracuj´ıc´ı s EEG/ERP port´alem jsou vˇetˇsinou pracovn´ıci katedry informatiky a v´ ypoˇcetn´ı techniky, d´ale studenti, kteˇr´ı se pod´ılej´ı na mˇeˇren´ıch, a nakonec i ˇsiˇrˇs´ı komunita zab´ yvaj´ıc´ı se t´ematikou EEG/ERP. Aktu´alnˇe v port´alu rozliˇsujeme celkem pˇet r˚ uzn´ ych rol´ı. • Neregistrovan´ y uˇ zivatel - uˇzivatel m˚ uˇze navˇst´ıvit pouze domovskou str´anku a m˚ uˇze se registrovat ˇ • Cten´ aˇ r - registrovann´ y uˇzivatel, kter´ y si m˚ uˇze st´ahnout veˇrejn´e experimety a nem´a pr´avo prohl´ıˇzet osobn´ı informace o mˇeˇr´ıc´ıch a mˇeˇren´ ych osob´ach. D´ale m˚ uˇze pˇrid´avat n´azory na veˇrejnou n´astˇenku. V pˇr´ıpadˇe, ˇze je ˇclenem skupiny, pak m˚ uˇze pˇrid´avat n´azory i na n´astˇenku skupiny. 25
EEG/ERP port´al
Popis port´alu
• Experiment´ ator - registrovan´ y uˇzivatel, kter´ y m˚ uˇze pˇrid´avat experimenty, v r´amci z´akona m´a povoleno pouˇz´ıvat osobn´ı data subjekt˚ u, na kter´ ych provedl experiment. D´ale m˚ uˇze pˇrisp´ıvat sv´ ymi n´azory na veˇrejnou n´astˇenku a na n´astˇenku skupiny, jej´ıˇz je ˇclenem. • Administr´ ator skupiny - m´a pr´ava spravovat skupiny, pˇrisp´ıvat sv´ ymi n´azory a aktualitami na n´astˇenku skupiny, kterou on s´am vytvoˇril. D´ale m˚ uˇze pˇrisp´ıvat sv´ ymi n´azory na veˇrejnou n´astˇenku a prohl´ıˇzet evidenci stahov´an´ı experiment˚ u ˇclen˚ u sv´e skupiny. • Administr´ ator - uˇzivatel, kter´ y m´a nejˇsirˇs´ı pr´ava ke spr´avˇe port´alu. M˚ uˇze spravovat evidenci stahov´an´ı experiment˚ u vˇsech uˇzivatel˚ u port´alu. [4]
´ Obr´azek 4.1: Uvodn´ ı str´anka EEG/ERP port´alu.[11]
26
EEG/ERP port´al
4.3
Anal´yza datov´eho sch´ematu
Anal´ yza datov´ eho sch´ ematu
C´ılem t´eto anal´ yzy je prozkoumat st´avaj´ıc´ı datov´e sch´ema EEG/ERP port´alu a vybrat vhodnou podmnoˇzinu pouˇzitelnou pro modelov´an´ı datov´e vrstvy v grafov´e datab´azi Neo4j. Datov´e sch´ema EEG/ERP port´alu je zaloˇzen´e na datab´azov´e technologii Oracle 11g. Datab´aze je z vˇetˇs´ı ˇc´asti navrˇzena tak, aby uchov´avala informace o proveden´ ych experimentech. Mimo toho lze ukl´adat do datab´aze tak´e informace o lidech, kteˇr´ı pracuj´ı na nˇejak´em experimentu, v´ yzkumn´ ych skupin´ach, sc´en´aˇr´ıch, ˇcl´anc´ıch, atd. Kompletn´ı datov´e sch´ema EEG/ERP port´alu je k dispozici v pˇr´ıloze. Bˇehem anal´ yzy bylo zjiˇstˇeno chybn´e propojen´ı mezi nˇekter´ ymi tabulkami v datov´em sch´ematu, pˇri kter´em doˇslo ke vzniku cykl˚ u. Takto vznikl´e cykly maj´ı neblah´ y u ´ˇcinek na cel´e sch´ema datab´aze, a proto je nutn´e je odstranit. Na obr´azku 4.2 jsou zobrazeny tabulky, u kter´ ych doˇslo k zacyklen´ı. Ke vzniku cyklu doˇslo n´asleduj´ıc´ım zp˚ usobem. Tabulka EXPERIMENT obsahuje ciz´ı kl´ıˇc, kter´ y odkazuje na tabulku ELECTRODE_CONF. Ta obsahuje ciz´ı kl´ıˇc, kter´ y odkazuje na tabulku DATA_FILE. V t´eto chv´ıli jeˇstˇe k ˇz´adn´emu zacyklen´ı nedoˇslo, ale bohuˇzel tato obsahuje d´ale ciz´ı kl´ıˇc, kter´ y odkazuje zpˇet na tabulku EXPERIMENT a t´ım doˇslo k zacyklen´ı. Tento probl´em vzniku cyklu lze ˇreˇsit v´ıce zp˚ usoby, ale my se spokoj´ıme s jednoduch´ ym ˇreˇsen´ım, kter´e spoˇc´ıv´a v odstranˇen´ı ciz´ıho kl´ıˇce z tabulky DATA_FILE. T´ımto je probl´em zacyklen´ı vyˇreˇsen a m˚ uˇzeme pokraˇcovat ve v´ ybˇeru vhodn´e podmnoˇziny datov´eho sch´ematu.
Obr´azek 4.2: Uk´azka zacyklen´ı v datov´em sch´ematu EEG/ERP port´alu.
27
EEG/ERP port´al
4.4
V´ybˇer vhodn´e podmnoˇziny
V´ ybˇ er vhodn´ e podmnoˇ ziny
V t´eto ˇca´sti anal´ yzy datov´eho modelu je nutn´e vybrat vhodnou podmnoˇzinu datov´eho sch´ematu EEG/ERP port´alu, kter´a bude pouˇzita pˇri modelov´an´ı grafov´e datab´aze. Poˇzadavky na v´ ybˇer podmnoˇziny nebyly stanoven´e, ale je nutn´e, aby ve vybran´e podmnoˇzinˇe byla takov´a ˇca´st datov´eho sch´ematu, kter´a je nejv´ıce pouˇz´ıvan´a. Z d˚ uvodu toho, ˇze vˇetˇs´ı ˇca´st datab´aze tvoˇr´ı informace o experimentech, je zcela ˇz´adouc´ı, aby byla za vhodnou podmnoˇzinu datov´eho sch´ematu vybran´a pr´avˇe tabulka uchov´avaj´ıc´ı informace o experimentech vˇcetnˇe vˇsech z´avisej´ıc´ıch tabulek. Na obr´azku 4.3 je zn´azornˇeno datov´e sch´ema vybran´e podmnoˇziny, kter´a obsahuje tabulku experiment˚ u a tak´e vˇsechny z´avisl´e tabulky. Podmnoˇzina datov´eho sch´ematu jiˇz neobsahuje ˇz´adn´e cykly, kter´e by pˇri modelov´an´ı grafov´e datab´aze nebyly probl´emem, ale bylo nutn´e tento cyklus odstranit v datov´em sch´ematu relaˇcn´ı datab´aze.
28
EEG/ERP port´al
V´ybˇer vhodn´e podmnoˇziny
Obr´azek 4.3: Uk´azka podmnoˇzina datov´eho sch´ematu EEG/ERP port´alu.
29
EEG/ERP port´al
4.4.1
V´ybˇer vhodn´e podmnoˇziny
Popis vybran´ ych tabulek
EXPERIMENT Tabulka experiment˚ u uchov´av´a informace o vˇsech uskuteˇcnˇen´ ych experimentech. V tabulce se zaznamen´av´a hlavnˇe ˇcas zaˇca´tku a ˇcas konce experimentu, teplota, popis prostˇred´ı, poˇcas´ı, konfigurace elektrod, digitalizace, v´ yzkumn´a skupina, druh sc´en´aˇre a dalˇs´ı.
PERSON Tabulka osob uchov´av´a informace o vˇsech registrovan´ ych ˇclenech a testovan´ ych subjekt˚ u, kteˇr´ı se pod´ılej´ı na v´ yzkumn´e ˇcinnosti. Z´akladn´ı informace o tˇehto osob´ach jsou napˇr. uˇzivatelsk´e jm´eno, v´ yzkumn´a skupina a nejvyˇsˇs´ı dosaˇzen´e vzdˇel´an´ı, osobn´ı u ´daje (jm´eno pˇr´ıjmen´ı, email, pohlav´ı, ...), datum registrace, atd.
EDUCATION LEVEL V tabulce se uchov´avaj´ı informace o nejvyˇsˇs´ım dosaˇzen´em vzdˇel´an´ı dan´e osoby, napˇr. n´azev dosaˇzen´eho vzdˇel´an´ı.
SUBJECT GROUP Tabulka obsahuje seznam skupin subjekt˚ u, kter´a slouˇz´ı pro rozliˇsen´ı testovan´ ych subjekt˚ u. Obsahuje informace o n´azvu a popisu skupiny.).
ELECTRODE CONF Tabulka uchov´av´a informace o konfiguraci elektrod pro dan´ y experiment, napˇr. hodnotu maxim´aln´ı impedance, syst´em, dle kter´eho byly elektrody osazeny.
ELETRODE SYSTEM Slouˇz´ı k uchov´av´an´ı informac´ı o jednotliv´ ych syst´emech, na kter´ ych byly elektrody osazeny. Obsahuje informace o n´azvu a popisu syst´emu.
DIGITIZATION Tabulka uchov´av´a informace o procesu pˇrevodu analogov´eho sign´alu do digi-
30
EEG/ERP port´al
V´ybˇer vhodn´e podmnoˇziny
t´aln´ıho k dan´emu experimentu. Obsahuje informace o pouˇzit´em filtru, vzorkovac´ı frekvenci a hodnotˇe zisku (gain).
ANALYSIS V t´eto tabulce se ukl´adaj´ı informace o provedn´e anal´ yze sign´alu k dan´emu syst´emu, napˇr. d´elka sign´alu pˇred a po stimulu, popis anal´ yzy a poˇcet epoch.
ARTEFACT Tabulka artefakt˚ u uchov´av´a informace o metod´ach kompenzace artefakt˚ ua podm´ınky pro zahozen´ı mˇeˇren´ı k dan´emu experimentu.
DATA FILE Tabulka obsahuje informace o datov´ ych souborech, kter´e jsou pˇridruˇzeny k nˇejak´emu experimentu, napˇr. n´azev souboru, typ souboru, popis, n´azev proveden´e anal´ yzy a samotn´ y bin´arn´ı datov´ y soubor ve form´atu BLOB.
SCENARIO Tabulka sc´en´aˇr˚ u uchov´av´a informace k jednotliv´ ym experiment˚ um, jako napˇr. n´azev sc´en´aˇre, popis, typ, osobu odpovˇednou za vytvoˇren´ y sc´en´aˇr a n´azev v´ yzkumn´e skupiny.
WEATHER Do t´eto tabulky se ukl´adaj´ı informace o poˇcas´ı, napˇr. popis aktu´aln´ıho poˇcas´ı a n´azev.
RESEARCH GROUP V t´eto tabulce se uchov´avaj´ı informace o vˇsech v´ yzkumn´ ych skupin´ach, pˇriˇcemˇz kaˇzd´a z tˇechto v´ yzkumn´ ych skupin obsahuje informace jako napˇr. n´azev v´ yzkumn´e skupiny, popis a spr´avce skupiny.
31
5 Generov´an´ı testovac´ıch dat Tato kapitola se zab´ yv´a generov´an´ım testovac´ıch dat nad relaˇcn´ı datab´az´ı Oracle pro EEG/ERP port´alu. Vygenerov´an´ı testovac´ıch dat je nutn´e prov´est jiˇz pˇred samotnou implementac´ı grafov´e datab´aze Neo4j, jelikoˇz pˇri vytv´aˇren´ı grafov´e struktury budou tato data vyˇzadov´ana.
5.1
Datanamic Data Generator for Oracle
Tento n´astroj je urˇcen´ y pr´avˇe pro generov´an´ı testovac´ıch dat nad Oracle datab´az´ı. Produkt je moˇzn´e st´ahnout jako trial verzi na 30 dn´ı zdarma, ale po uplynut´ı doby je nutn´e zakoupit licenci. Pro u ´ˇcely testov´an´ı mi byla poskytnuta licence na tento produkt, kter´a byla vydan´a pro University of West ” Bohemia”. N´astroj poskytuje mnoho funkc´ı, napˇr. • Generov´an´ı smyslupln´ ych testovac´ıch dat • Generov´an´ı dat pˇr´ımo do datab´aze nebo do souboru • Generov´an´ı dat zaloˇzen´e na charakteristice sloupc˚ u • Vytvoˇren´ı vlastn´ıch gener´ator˚ u dat • Sada pˇredpˇripraven´ ych gener´ator˚ u • Podpora pro Oracle 9i, 10g, 11g • Podpora pro datab´aze MySQL, Oracle, MS SQL Server, MS Access a PostgreSQL
5.1.1
Postup vygenerov´ an´ı dat
Neˇz zaˇcneme s generov´an´ım dat, je potˇreba nejprve vytvoˇrit datab´azi na lok´aln´ım u ´loˇziˇsti, z d˚ uvodu snadnˇejˇs´ıho pˇr´ıstupu a pr´ace s datab´az´ı. K tomu je potˇreba nainstalovat datab´azov´ y server Oracle (aktu´aln´ı verze 11g). Cel´ y proces instalace je pops´an v uˇzivatelsk´e pˇr´ıruˇcce, kter´a se nach´az´ı v Pˇr´ıloze
32
Generov´an´ı testovac´ıch dat
Datanamic Data Generator for Oracle
A. D´ale je nutn´e nainstalovat samotn´ y n´astroj pro generov´an´ı dat Datanamic Data Generator for Oracle a pot´e spustit. Po spuˇstˇen´ı zaloˇz´ıme projekt, ve kter´em nastav´ıme parametry pro pˇripojen´ı k lok´alnˇe vytvoˇren´e datab´azi a pot´e vybereme tabulky, kter´e budou zahrnuty do procesu generov´an´ı. Po naˇcten´ı tabulek vybereme u jednotliv´ ych sloupc˚ u tabulek typ gener´atoru dat. N´astroj je natolik inteligentn´ı, ˇze podle n´azvu sloupce rozpozn´a, o jak´ y druh dat by mohl j´ıt, a automaticky pˇriˇrad´ı moˇznou variantu z pˇredem pˇripraven´e sady gener´ator˚ u. Napˇr´ıklad pokud se jedn´a o sloupec s n´azvem FileName” automaticky vybere gener´ator pro n´azev souboru. U ostatn´ıch ” sloupc˚ u, kter´e nerozpozn´a, se vybere gener´ator podle datov´eho typu. V pr˚ ubˇehu nastaven´ı gener´ator˚ u jsem narazil na nˇekolik probl´em˚ u. Napˇr´ıklad tabulka ELECTRODE_CONF obsahuje sloupec s n´azvem IMPEDANCE, kter´ y m´a datov´ y typ Number, coˇz reprezentuje obecnou ˇc´ıselnou hodnotu. Tato hodnota m˚ uˇze nab´ yvat bud’ celoˇc´ıseln´e hodnoty nebo desetinn´e hodnoty. V tomto pˇr´ıpadˇe byla vyˇzadov´ana celoˇc´ıseln´a hodnota, pro kterou nebyl k dispozici vhodn´ y gener´ator. N´astroj sice poskytuje funkci pro vytvoˇren´ı vlastn´ıho gener´atoru hodnot, ale nepodaˇrilo se mi takto vytvoˇren´ y gener´ator um´ıstit do nab´ıdky gener´ator˚ u. Vˇetˇsina pˇreddefinovan´ ych gener´ator˚ u maj´ı moˇznost zvolit si rozsah, v jak´em se maj´ı generovat hodnoty pro dan´ y sloupec a v jak´em intervalu se maj´ı tyto hodnoty opakovat. Ve vlastnostech projektu lze nastavit, napˇr. poˇcet vygenerovan´ ych ˇr´adk˚ u pro vˇsechny tabulky nebo form´at gener´atoru datum˚ u. Poˇcet vygenerov´an´ ych ˇra´dek je moˇzn´e nastavit individu´alnˇe ke kaˇzd´e tabulce. V t´eto chv´ıli jiˇz m´ame nastaven´e generov´an´ı a zb´ yv´a jen nastavit poˇrad´ı tabulek, ve kter´em se maj´ı generovat data, aby se spr´avnˇe uloˇzily hodnoty ciz´ıch kl´ıˇc˚ u. Po tomto kroku spust´ıme proces generov´an´ı, ve kter´em jeˇstˇe definujeme, kam se maj´ı vygenerovan´a data uloˇzit. Prvn´ı moˇznost´ı je uloˇzit data pˇr´ımo do datab´aze. Druh´a moˇznost je generovat data pˇr´ımo do souboru s pˇr´ıponou .sql. My zvol´ıme moˇznost prvn´ı - generov´an´ı dat do datab´aze protoˇze kdybychom zvolili generov´an´ı do souboru, tak by se neuloˇzily hodnoty ciz´ıch kl´ıˇc˚ u. Po dokonˇcen´ı generov´an´ı testovac´ıch dat m˚ uˇzeme ovˇeˇrit jestli se vˇsechna data vygenerovala. Otevˇreme si datab´azi napˇr. v programu SQL Oracle Developer a zkontrolujeme obsah naplnˇen´ ych tabulek. Kaˇzd´a z tabulek obsahuje jeden milion ˇr´adek, aby bylo moˇzn´e d˚ ukladnˇe otestovat v´ ykonost cel´e datab´aze pˇri velk´em mnoˇzstv´ı uloˇzen´ ych dat. Cel´ y proces generov´an´ı trv´a v pr˚ umˇeru mezi 20 - 30 hodinami. Ovˇsem z´aleˇz´ı na fyzick´em stroji, na kter´em tento proces generov´an´ı prob´ıh´a.
33
6 N´avrh datov´eho modelu v Neo4j Pˇredchoz´ı kapitola se zab´ yvala anal´ yzou datov´eho sch´ematu EEG/ERP port´alu, z nˇehoˇz byla vybr´ana vhodn´a podmnoˇzina. C´ılem t´eto kapitoly je navrhnout pro vybranou podmnoˇzinu datov´ y model grafov´e datab´aze Neo4j a popsat, jak vypad´a v´ ysledn´a datov´a struktura.
6.1
Mapov´ an´ı z datov´ eho sch´ ematu relaˇ cn´ı datab´ aze
Datov´e sch´ema v relaˇcn´ıch datab´az´ıch je reprezentov´ano tabulkami, tzn. data jsou uloˇzena do jednotliv´ ych sloupc˚ u a ˇra´dk˚ u. Abychom mohli tato data pˇrev´est do grafov´e struktury je nutn´e nejprve definovat pravidla za jak´ ych je to moˇzn´e. Kaˇzd´a z´aznam v tabulce datov´eho sch´ematu relaˇcn´ı datab´aze je v grafov´e struktuˇre vyj´adˇren jako vrchol. Jednotliv´e sloupce v tabulce jsou v grafov´e struktuˇre uloˇzeny jako vlastnosti, kter´e bl´ıˇze popisuj´ı dan´ y vrchol. Vlastnosti v dan´em vrcholu jsou definov´any jako dvojice kl´ıˇc/hodnota. Kl´ıˇcem je vˇzdy n´azev vlastnosti, kter´ y odpov´ıd´a sloupci v datov´em sch´ematu relaˇcn´ı datab´aze a hodnotou, kter´a odpov´ıd´a ˇra´dku v datov´em sch´ematu relaˇcn´ı datab´aze m˚ uˇze b´ yt libovoln´ y primitivn´ı datov´ y typ (String, integer, boolean, ...). Mezi jednotliv´ ymi tabulkami relaˇcn´ı datab´aze m˚ uˇzou existovat r˚ uzn´e vztahy, kter´e jsou v grafov´e struktuˇre vyj´adˇreny hranou. V relaˇcn´ı datab´azi obvykle rozliˇsujeme dva typy vazby: • 1:N - tato vazba v terminologii relaˇcn´ıch datab´az´ıch znamen´a, ˇze pˇriˇrazujeme jednomu z´aznamu v jedn´e tabulce v´ıce z´aznam˚ u z jin´e tabulky. V grafov´e struktuˇre tato vazba odpov´ıd´a orientovan´e hranˇe, smˇeˇruj´ıc´ı od jednoho vrcholu ke druh´emu. • M:N - v relaˇcn´ıch datab´az´ıch se u t´eto vazby vytv´aˇr´ı tzv. vazebn´ı tabulka, kter´a tvoˇr´ı vazbu mezi dvˇema tabulkami. Tato vazba umoˇzn ˇuje nˇekolika z´aznam˚ um z jedn´e tabulky pˇriˇradit nˇekolik z´aznam˚ u z tabulky druh´e. V grafov´e struktuˇre tato vazba odpov´ıd´a neorientovan´e hranˇe, kterou popisuj´ı vlastnosti obsahuj´ıc´ı data z vazebn´ı tabulky.
34
N´avrh datov´eho modelu v Neo4j
6.2
Sch´ema datov´eho modelu
Sch´ ema datov´ eho modelu
Na obr´azku 6.1 je zobran´e sch´ema datov´e struktury popsan´e grafem, kter´ y se skl´ad´a z vrchol˚ u a hran. Graf obsahuje vˇsechny typy vazeb, kter´e jsou obsaˇzen´e v datov´em sch´ematu relaˇcn´ı datab´aze pro jeden konkr´etn´ı z´aznam. Graf je tvoˇren jedn´ım poˇc´ateˇcn´ım vrcholem oznaˇcen´ ym jako koˇrenov´ y, ze kter´eho jsou postupnˇe vytv´aˇreny dalˇs´ı vrcholy.
Obr´azek 6.1: Uk´azka n´avrhu grafov´e struktury v Neo4j.
35
N´avrh datov´eho modelu v Neo4j
6.3
Popis datov´eho modelu
Popis datov´ eho modelu
Datov´ y model je tvoˇren nˇekolika vrcholy, kter´e jsou mezi sebou nˇejak´ ym zp˚ usobem propojen´e. Spoleˇcn´e vlastnosti vˇsech vrchol˚ u jsou napˇr. identifik´ator vrcholu (ˇc´ıseln´a hodnota) a typ, kter´ y je tvoˇren n´azvem tˇr´ıdy popisuj´ıc´ı danou entitu, napˇr. entities.Experiment. Z´akladn´ım vrcholem t´eto datov´e struktury je koˇrenov´ y vrchol, o kter´eho se postupnˇe vytv´aˇrej´ı ostatn´ı vrcholy. Druh´ ym vytvoˇren´ ym vrcholem je vrchol typu Experiment, kter´ y obsahuj´ıc´ı informace o experimentech. Od tohoto vrcholu se vytv´aˇrej´ı ostatn´ı vrcholy typu napˇr. Digitalization, Artefact, Scenario, atd. Vˇsechny vrcholy jsou propojen´e orientovanou hranou a neobsahuj´ı ˇza´dn´ y cyklus. Kaˇzd´a hrana obsahuje vlastnost, napˇr. REF_EXPERIMENT identifikuj´ıc´ı vrchol, do kter´eho hrana smˇeˇruje. Kompletn´ı statistika o stavu vygenerovan´eho grafu je v tabulce 6.1. Celkov´ y poˇcet vrchol˚ u
20 034 839
Celkov´ y poˇcet hran
20 020 000
Celkov´ y poˇcet vlastnost´ı
94 630 475
Velikost datab´aze
14 GB
Tabulka 6.1: Statistika vytvoˇren´e grafov´e datab´aze Neo4j.
36
7 Implementace datov´eho modelu v Neo4j Tato kapitola popisuje postup implementace datov´eho modelu v grafov´e datab´azi Neo4j za pouˇzit´ı Java API, kter´e bylo pops´ano v kapitole o Neo4j. Vytvoˇren´ı grafov´e datab´aze Neo4j je d˚ uleˇzitou ˇc´asti v cel´em experimentu, aby bylo moˇzn´e porovnat datov´ y model relaˇcn´ı datab´aze s datov´ ym modelem grafov´e datab´aze.
7.1
Pouˇ zit´ e technologie
Pˇri implementaci grafov´e datab´aze v Neo4j byly pouˇzity tyto technologie: • Neo4j Community 2.0.0 M02 - knihovna pro vytvoˇren´ı grafov´e datab´aze • Java (JDK 1.7) - jazyk, ve kter´em se provede implementace grafov´e datab´aze Neo4j • Oracle 11g - datab´azov´ y server, na kter´em bˇeˇz´ı relaˇcn´ı datab´aze st´avaj´ıc´ıho EEG/ERP port´alu
7.2
Popis implementace
Aplikace je ˇclenˇena do nˇekolika logick´ ych blok˚ u tzv. packages, pˇriˇcemˇz samotn´a tˇr´ıda, kter´a spouˇst´ı aplikaci se nach´az´ı v koˇrenov´e ˇca´sti aplikace. Ve struktuˇre aplikace se nach´azej´ı tyto bloky entities, relationships, utils. Podrobnˇejˇs´ı popis vˇsech ˇca´st´ı aplikace bude uveden d´ale. Na obr´azku 7.1 je v´ yvojov´ y diagram, kter´ y obsahuje jednotliv´e kroky, kter´ ymi lze doc´ılit k vytvoˇren´ı kompletn´ı grafov´e datab´aze. V rozhodovac´ı ˇc´asti se algoritmus rozhoduje, zda-li ukonˇcit vytv´aˇren´ı grafov´e datab´aze, v pˇr´ıpadˇe, ˇze jsou vˇsechny data z relaˇcn´ı datab´aze Oracle naˇctena, a nebo pokraˇcovat v naˇc´ıt´an´ı dat. 37
Implementace datov´eho modelu v Neo4j
Popis implementace
Obr´azek 7.1: V´ yvojov´ y diagram vytvoˇren´ı grafov´e datab´aze Neo4j.
Client Hlavn´ı tˇr´ıda, kter´a obsahuje nˇekolik d˚ uleˇzit´ ych metod. Prvn´ı metodou je main(), kter´a vytv´aˇr´ı hlavn´ı vl´akno aplikace. V tˇele t´eto metody se nejprve zpracuj´ı zadan´e argumenty, kde prvn´ı argument je hodnota, od kter´e se budou naˇc´ıtat data z Oracle datab´aze a druh´ y argument pˇredstavuje cestu k vytvoˇren´e grafov´e datab´azi. Pot´e se vytvoˇr´ı grafov´a datab´aze na disku podle zadan´e cesty a nakonec se zavol´a metoda generateGraphDatabase(), kter´a napln´ı vytvoˇrenou grafovou datab´azi daty z datab´aze Oracle. void generateGraphDatabase(BatchInserter batchDb,int startNumber, DdConfig dbConfig) Metoda nejprve naˇcte data v dan´em rozsahu z Oracle datab´aze pomoc´ı metody loadDataFromDb(), vytvoˇr´ı strukturu grafov´e datab´aze a napln´ı j´ı naˇcten´ ymi daty z Oracle datab´aze a uzavˇre datab´azov´e pˇripojen´ı. void clearDb(String pathDb) Vymaˇze celou datab´azi v pˇr´ıpadˇe, ˇze existuje. Tato metoda se vol´a jen v pˇr´ıpadˇe, pokud je hodnota prvn´ıho argumentu rovna nule. Proto aby bylo moˇzn´e vytvoˇrit pr´azdnout datab´azi v prvn´ı iteraci generov´an´ı grafov´e datab´aze. 38
Implementace datov´eho modelu v Neo4j
Popis implementace
DbConfig Tˇr´ıda popisuje vlastnosti pro ukl´ad´an´ı informac´ı o pˇripojen´ı k datab´azi Oracle, napˇr. pˇrihlaˇsovac´ı jm´eno, heslo, n´azev sluˇzby. Tyto informace jsou zadav´any pˇri spuˇstˇen´ı t´eto aplikace.
ImportDataFromDb Tato tˇr´ıda poskytuje prostˇredek pro z´ısk´an´ı dat z Oracle datab´aze prostˇrednictv´ım JDBC ovladaˇce. Obsahuje jedinou metodu loadDataFromDb(), kter´a naˇcte data z Oracle datab´aze. void loadDataFromDb() V tˇele metody dojde nejprve k pˇripojen´ı prostˇrednictv´ım JDBC ovladaˇce k Oracle datab´azi a pot´e se vykon´a dotaz, kter´ y m´a za u ´kol naˇc´ıst urˇciou mnoˇzinu dat podle zadan´e poˇca´teˇcn´ı hodnoty, od kter´e se zaˇcnou data naˇc´ıtat, a poˇctu dat. Takto naˇcten´a data se uloˇz´ı do struktury HashMap, kter´a se zpˇr´ıstupn´ı metodˇe generateGraphDatabase().
Bal´ık relationships V tomto bal´ıku se nach´az´ı v´ yˇctov´ y typ RelationshipTypeEnum, kter´ y obsahuje n´azvy vlastnost´ı hran mezi vrcholy v grafov´e struktuˇre.
Bal´ık entities Tento bal´ık obsahuje jednotliv´e tˇr´ıdy reprezentuj´ıc´ı danou entitu. Vˇsechny tyto tˇr´ıdy jsou oddˇedˇen´e od tˇr´ıdy Entity, kter´a poskytuje vˇsem sv´ ym potomk˚ um spoleˇcn´e vlastnosti (Id, Type). V kaˇzd´e z tˇechto tˇr´ıd se vol´a metoda, kter´a vytvoˇr´ı vrchol s vlastnostmi dan´e entity. Entitou m˚ uˇze b´ yt napˇr. Person, Experiment, DataFile, a dalˇs´ı.
Bal´ık utils Bal´ık obsahuje jedinou tˇr´ıdu Converter, kter´a prim´arnˇe slouˇz´ı pro pˇrevod mezi datov´ ym typem Date a String. Tato tˇr´ıda obsahuje metody convertFromDateToString() a convertFromStringToDate().
39
8 Testov´an´ı a zhodnocen´ı v´ysledk˚ u Prvn´ı ˇc´ast t´eto kapitoly je vˇenov´ana samotn´emu testov´an´ı relaˇcn´ı datab´aze Oracle a grafov´e datab´aze Neo4j s c´ılem zjistit, kter´ y z testovan´ ych datab´azov´ ych syst´emu m´a flexibilnˇejˇs´ı datov´ y model a rychleji vykonan´e dotazy. Vˇsechny z´ıskan´e v´ ysledky z prvn´ı ˇca´sti kapitoly jsou zhodnoceny v druh´e ˇc´asti kapitoly a na z´akladnˇe nich se rozhodne, zda-li se vyplat´ı pouˇz´ıt grafovou datab´azi Neo4j nebo z˚ ustat u relaˇcn´ı datab´aze Oracle.
8.1
Testov´ an´ı
Testov´an´ı je ned˚ uleˇziˇstˇejˇs´ı ˇca´st´ı v t´eto pr´aci, kter´e m´a pomoci rozhodnout, kter´a ze dvou testovan´ ych datab´az´ı je vhodnˇejˇs´ı. Z´akladn´ı poˇzadavky na v´ ybˇer datab´aze jsou: • Flexibiln´ı datov´ y model - moˇznost rozˇs´ıˇren´ı souˇcasn´eho datov´eho modelu o dalˇs´ı entity a zmˇena st´avaj´ıc´ı entity. • Rychlost vykon´ an´ı dotaz˚ u - dotaz by mˇel b´ yt vykon´an rychleji neˇz v dosavadn´ı relaˇcn´ı datab´azi Oracle Proces testov´an´ı prob´ıhal na lok´aln´ım poˇc´ıtaˇci z d˚ uvodu snaˇzˇs´ıho pˇr´ıstupu k datab´azov´ ym server˚ um a v pˇr´ıpadˇe potˇreby zmˇenit nastaven´ı tˇechto server˚ u. D´ale bude uvedena konfigurace poˇc´ıtaˇce, na kter´em prob´ıhalo testov´an´ı.
Konfigurace poˇ c´ıtaˇ ce Testov´an´ı probˇehlo na poˇc´ıtaˇci s touto konfigurac´ı: • Procesor: Intel Core i7 CPU • Pamˇ et’ RAM: 4GB • Operaˇ cn´ı syst´ em: Window 7 Professional • Typ syst´ emu: 64bitov´ y operaˇcn´ı syst´em • Hardisk: WD 300GB 40
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
8.1.1
Testov´an´ı
Flexibilita datov´ eho modelu
Datov´ y model m˚ uˇzeme povaˇzovat za flexibln´ı, pokud ho lze rozˇs´ıˇrit bez toho, aniˇz bychom poruˇsili st´avaj´ıc´ı koncept datov´eho modelu. V pˇr´ıpadˇe relaˇcn´ı datab´aze Oracle je flexibilita z´avisl´a na sloˇzitosti a prov´azanosti datov´eho sch´ematu, tud´ıˇz nemus´ı b´ yt jednoduch´e rozˇs´ıˇrit st´avaj´ıc´ı model o nˇejakou dalˇs´ı entitu. V grafov´e datab´azi Neo4j m´ame v´ıce moˇznost´ı jak rozˇs´ıˇrit st´avaj´ıc´ı datov´ y model o dalˇs´ı entitu. Prvn´ı moˇznost´ı je vytvoˇrit si nejprve novou tˇr´ıdu, kter´a reprezentuje sv´ ymi vlastnostmi danou entitu a tu prostˇrednictv´ım Java API pˇridat do st´avaj´ıc´ıho datov´eho modelu. Druhou moˇznost´ı je pouˇz´ıt nˇekter´ y z dostupn´ ych vizualizaˇcn´ıch n´astroj˚ u, kter´e byly pops´any v kapitole 3. Pomoc´ı tˇechto n´astroj˚ u lze pomˇernˇe snadno pˇridat dalˇs´ı entitu do st´avaj´ıc´ıho datov´eho modelu. D´ale si pop´ıˇseme jak rozˇs´ıˇrit oba datov´e modely (Oracle, Neo4j) o novou entitu nazvanou PHARMACEUTICAL, kter´a uchov´av´a informace informace o lec´ıch souvisej´ıc´ı s jednotliv´ ymi experimenty.
Oracle V datov´em sch´ematu relaˇcn´ı datab´aze Oracle vytvoˇr´ıme novou tabulku s n´azvem PHARMACEUTICAL a pot´e pˇrid´ame nov´e sloupce (title, description), kter´e reprezentuj´ıc´ı n´azev a popis jednotliv´ ych l´ek˚ u uloˇzen´ ych v tabulce. Jelikoˇz poˇzadujeme, aby jeden z´aznam z tabulky EXPERIMENT mohl m´ıt v´ıce z´aznam˚ u z tabulky PHARMACEUTICAL a jeden z´aznam z tabulky PHARMACEUTICAL mohl patˇrit v´ıce z´aznam˚ um z tabulky EXPERIMENT je nutn´e zaloˇzit vazebn´ı tabulku s n´azvem PHARMACEUTICAL_REL, kter´a bude obsahovat ciz´ı kl´ıˇc na tabulku EXPERIMENT a PHARMACEUTICAL. Daleko vˇetˇs´ı probl´em je pokud bychom z tabulky PHARMACEUTICAL odstranili sloupec, kter´ y by pouˇz´ıvala jin´a tabulka. Dalˇs´ı probl´em m˚ uˇze vzniknout pˇri zmˇenˇe datov´eho typu nˇejak´eho sloupce. V pˇr´ıpadˇe pˇrid´an´ı nov´eho sloupce do tabulky, kter´emu nastav´ıme defaultn´ı hodnotu nebo ho nastav´ıme na nepovinn´ y (not null) k probl´emu nedojde.
Neo4j Datov´ y model grafov´e datab´aze Neo4j se skl´ad´a z vrchol˚ u a hran a jeho rozˇs´ıˇren´ı o dalˇs´ı vrchol a hranu je jednoduˇs´ı neˇz v pˇr´ıpadˇe relaˇcn´ıho datov´eho sch´e41
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
matu. K rozˇs´ıˇren´ı pouˇzijeme vizualizaˇcn´ı n´astroj Neoclipse, ve kter´em nejprve vytvoˇr´ıme nov´ y typ hrany s n´azvem REF_EXPERIMENT_PHARMACEUTICAL a pot´e definujeme nov´ y vrchol s vlastnostmi (title, description). Takto vznikl´ y vrchol napoj´ıme do s´ıtˇe st´avaj´ıc´ıho datov´eho modelu. V pˇr´ıpadˇe rozˇs´ıˇren´ı o dalˇs´ı sloupec se jedn´a jen o pˇrid´an´ı nov´e vlastnosti vˇcetnˇe jej´ı hodnoty. Pokud bychom chtˇeli odebrat nˇejak´ y sloupec m´ame dvˇe moˇznosti. Bud’ nechat st´avaj´ıc´ı sloupec a pˇridat jin´ y s t´ım, ˇze ten star´ y se bude pˇri dotazov´an´ı ignorovat, a nebo ho vymazat a pˇridat nov´ y sloupec jako v pˇredchoz´ım pˇr´ıpadˇe.
8.1.2
Rychlost vykon´ an´ı dotaz˚ u
Rychlost vykon´an´ı dotaz˚ u je dalˇs´ım poˇzadavkem pˇri v´ ybˇeru vhodn´eho datab´azov´eho syst´emu. V kapitole porovn´an´ı relaˇcn´ıch a nerelaˇcn´ıch datab´az´ıch byly pops´any rozd´ıly mezi tˇemito datab´azemi, kter´e se liˇsily hlavnˇe v rychlosti proveden´ı dotaz˚ u. V t´eto ˇc´asti kapitoly je hlavn´ım pˇredmˇetem testov´an´ı pr´avˇe rychlost vykonan´ ych dotaz˚ u, pro kter´ y bylo sestaveno pˇet dotaz˚ u a ty budou postupnˇe vykon´any nad relaˇcn´ı datab´az´ı Oracle a pot´e nad grafovou datab´az´ı Neo4j. U kaˇzd´eho dotazu bude uveden struˇcn´ y popis, tzn. co kter´ y dotaz dˇel´a, syntaxe obou dotazovac´ıch jazyk˚ u (SQL, Cypher) a nakonec tabuka namˇeˇren´ ych hodnot ˇcasu str´aven´eho vykon´an´ım dotazu pro oba datab´azov´e syst´emy. Cel´e testov´an´ı prob´ıhalo tak, ˇze kaˇzd´ y dotaz byl vykon´an opakovanˇe pro r˚ uzn´ y poˇcet z´aznam˚ u, nejprve pro 1000 z´aznam˚ u a pot´e pro 10 000 z´aznam˚ u. Kv˚ uli pamˇetov´e nebylo moˇzn´e dotazovat se vˇetˇs´ıho poˇcet z´aznam˚ u. Pˇri pokusu o vˇetˇs´ı mnoˇzstv´ı dat doˇslo ke zpomalen´ı stroje, pˇri kter´em nebylo moˇzn´e pokraˇcovat v testov´an´ı a bylo nutn´e ukonˇcit spuˇstˇen´ y dotaz. Pro r˚ uzn´ y poˇcet z´aznam˚ u se dotaz vykonal pˇetkr´at. Pˇred samotn´ ym mˇeˇren´ım bylo d˚ uleˇzit´e rozhodnout o tom, jak´ ym zp˚ usobem mˇeˇrit ˇcas vykon´an´ı dotazu. Na v´ ybˇer je hodnota ˇcasu vykon´an´ı dotazu, tzv. executing time, kter´a pˇredstavuje ˇcas, za kter´ y se vykon´a dan´ y dotaz bez zobrazen´ı mnoˇziny v´ ysledk˚ u. Druhou moˇznost´ı je vz´ıt ˇcas vykon´an´ı dotazu a zobrazen´ı v´ ysledk˚ u dotazu, tzv. fetch time, kter´ y pˇredstavuje ˇcas, za kter´ y se dan´ y dotaz vykon´a a zobraz´ı se pˇr´ısluˇsn´a mnoˇzina v´ ysledk˚ u. Pˇri tomto testov´an´ı je d˚ uleˇzit´a hodnota vykon´an´ı dotazu a ne hodnota ˇcasu zobrazen´ı, jelikoˇz vykreslen´ı hodnot na v´ ystup m˚ uˇze m´ıt za n´asledek zpoˇzdˇen´ı, kter´e nelze dopˇredu pˇredpov´ıdat. Jednotliv´e hodnoty ˇcas˚ u jsou uvedeny v sekund´ach.
42
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
Jako n´astroj pro testov´an´ı rychlosti vykon´an´ı dotazu v relaˇcn´ı datab´azi Oracle byl pouˇzit SQL Developer Oracle, kter´ y se standardnˇe pouˇz´ıv´a pro pr´aci s touto datab´az´ı. Pro testov´an´ı rychlosti vykon´an´ı dotazu v grafov´e datab´azi Neo4j byl zvolen n´astroj Web admin, kter´ y je souˇca´st´ı knihovny Neo4j, a umoˇzn ˇuje vykon´avat dotazy prostˇrednictv´ım konzole.
Dotaz ˇ c. 1 - Select persons Dotaz vybere vˇsechny osoby a ke kaˇzd´e osobˇe zobraz´ı informace o ni samotn´e vˇcetnˇe nejvyˇsˇs´ıho dosaˇzen´eho vzdˇel´an´ı.
Oracle SELECT p . p e r s o n i d , p . givenname , p . a u t h e n t i c a t i o n , p . surname , p . d a t e o f b i r t h , p . gender , p . email , p . phone number , p . note , p . username , p . password , p . a u t h o r i t y , p . co nfirmed , p . f b u i d , p . r e g i s t r a t i o n d a t e , p . l a t e r a l i t y , e l . t i t l e as education level title FROM p e r s o n p INNER JOIN e d u c a t i o n l e v e l e l ON p. education level id = el . education level id
V´ ypis 8.1: Pˇr´ıklad skriptu pro v´ ybˇer osob v SQL
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,675
0,655
0,662
0,718
0,665
0,675
10 000
2,925
2,525
2,41
2,442
2,483
2,557
Tabulka 8.1: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Oracle.
Neo4j START p = node : e e g i n d e x ( ’_Type : entities . Person ’ ) MATCH p − [ :REF PERSON EDUCATION LEVEL]−>ed
43
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
RETURN p . Id , p . GivenName , p . A u t h e n t i c a t i o n , p . SurName , p . DateOfBirth , p . Gender , p . Email , ed . T i t l e as E d u c a t i o n L e v e l p . Note , p . UserName , p . Password , p . Authority , p . Confirmed , p . FbUID , p . R e g i s t r a t i o n D a t e , p . L a t e r a l i t y , p . PhoneNumber
V´ ypis 8.2: Pˇr´ıklad skriptu pro v´ ybˇer osob v Cypheru
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,422
0,468
0,335
0,322
0,353
0,380
10 000
1,811
1,953
2,045
1,655
1,578
1,808
Tabulka 8.2: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Neo4j.
Dotaz ˇ c. 2 - Select experiment Dotaz vybere vˇsechny informace o experimentech a ke kaˇzd´emu z nich zobraz´ı informace o nˇem samotn´em vˇcetnˇe entit, kter´e jsou s n´ım v relaci.
Oracle SELECT ex . e x p e r i m e n t i d , ex . s t a r t t i m e , ex . e n v i r o n m e n t n o t e , ex . end time , ex . temperature , p . username as Owner , sp . username as S u b j e c t P e r s o n , w . t i t l e as Weather , s g . T i t l e as SubjectGroup , r g . t i t l e as ResearchGroup , d . g a i n as D i g i t i z a t i o n , s c . t i t l e as S c e n a r i o , e c . impedance as E l e c t r o d e C o n f , e s . t i t l e , a . compensation FROM e x p e r i m e n t ex INNER JOIN p e r s o n p ON ex . o w n e r i d = p . p e r s o n i d LEFT JOIN p e r s o n sp ON ex . s u b j e c t p e r s o n i d = sp . p e r s o n i d INNER JOIN s c e n a r i o s c ON ex . s c e n a r i o i d = s c . s c e n a r i o i d INNER JOIN weather w ON ex . w e a t h e r i d = w . w e a t h e r i d INNER JOIN r e s e a r c h g r o u p r g ON ex . r e s e a r c h g r o u p i d = rg . r e s e a r c h g r o u p i d INNER JOIN s u b j e c t g r o u p s g ON ex . s u b j e c t g r o u p i d = s g . s u b j e c t g r o u p i d
44
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
INNER JOIN e l e c t r o d e c o n f e c ON ex . e l e c t r o d e c o n f i d = e c . e l e c t r o d e c o n f i d INNER JOIN d i g i t i z a t i o n d ON ex . d i g i t i z a t i o n i d = d . d i g i t i z a t i o n i d INNER JOIN a r t e f a c t a ON ex . a r t e f a c t i d = a . a r t e f a c t i d INNER JOIN e l e c t r o d e s y s t e m e s ON ec . e l e c t r o d e s y s t e m i d = es . e l e c t r o d e s y s t e m i d
V´ ypis 8.3: Pˇr´ıklad skriptu pro v´ ybˇer experiment˚ u v SQL Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
3,97
4,167
3,575
4,018
3,973
3,941
10 000
43,17
35,155
30,89
36,385
38,365
36,793
Tabulka 8.3: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Oracle.
Neo4j START exp = node : e e g i n d e x ( ’_Type : entities . Experiment ’ ) MATCH exp − [ :REF EXPERIMENT OWNER]−>ow , exp − [ :REF EXPERIMENT SUBJECT PERSON]−>sp , exp − [ :REF EXPERIMENT SCENARIO]−>sc , exp − [ :REF EXPERIMENT WEATHER]−>w, exp − [ :REF EXPERIMENT RESEARCH GROUP]−>rg , exp − [ :REF EXPERIMENT SUBJECT GROUP]−>sg , exp − [ :REF EXPERIMENT ELECTRODE CONF]−>ec , exp − [ :REF EXPERIMENT DIGITIZATION]−>dig , ec − [ :REF ELECTRODE CONF ELECTRODE SYSTEM]−> e s RETURN exp . Id , exp . StartTime , exp . EndTime , exp . Temperature , exp . EnvironmentNote , ow . UserName as Owner , sp . UserName as S u b j e c t P e r s o n , s c . T i t l e as S c e n a r i o , w . T i t l e as Weather , r g . T i t l e as ResearchGroup , s g . T i t l e as SubjectGroup , e c . Impedance as E l e c t r o d e C o n f , d i g . Gain as D i g i t i z a t i o n , e s . T i t l e as E l e c t r o d e S y s
V´ ypis 8.4: Pˇr´ıklad skriptu pro v´ ybˇer experiment˚ u v Cypheru 45
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,458
0,415
0,361
0,387
0,376
0,399
10 000
2,855
3,000
3,261
3,675
3,238
3,206
Tabulka 8.4: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Neo4j. Dotaz ˇ c. 3 - Select scenarios Dotaz vybere vˇsechny sc´en´aˇre a ke kaˇzd´emu sc´en´aˇri zobraz´ı informace o nˇem samotn´em vˇcetnˇe v´ yzkumn´e skupiny a spr´avce sc´en´aˇre.
Oracle SELECT s c . s c e n a r i o i d , s c . t i t l e , s c . s c e n a r i o l e n g t h , s c . d e s c r i p t i o n , s c . p r i v a t e , s c . s c e n a r i o n a m e , s c . mimetype , ow . username , r g . t i t l e as r e s e a r c h g r o u p t i t l e FROM s c e n a r i o s c INNER JOIN p e r s o n ow ON s c . o w n e r i d = ow . p e r s o n i d INNER JOIN r e s e a r c h g r o u p r g ON sc . r e s e a r c h g r o u p i d = rg . r e s e a r c h g r o u p i d
V´ ypis 8.5: Pˇr´ıklad skriptu pro v´ ybˇer sc´en´aˇr˚ u v SQL
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,877
0,767
0,758
0,803
0,648
0,771
10 000
5,553
5,397
6,485
5,295
5,633
5,673
Tabulka 8.5: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Oracle.
46
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
Neo4j START s c = node : e e g i n d e x ( ’_Type : entities . Scenario ’ ) MATCH sc − [ :REF SCENARIO RESEARCH GROUP]−>rg , sc − [ :REF SCENARIO OWNER]−>ow RETURN s c . Id , s c . T i t l e , s c . D e s c r i p t i o n , s c . S c e n a r i o L e n g t h , s c . P r i v a t e , s c . ScenarioName , s c . MimeType , r g . T i t l e as ResearchGroup , ow . UserName
V´ ypis 8.6: Pˇr´ıklad skriptu pro v´ ybˇer sc´en´aˇr˚ u v Cypheru
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,434
0,384
0,238
0,223
0,223
0,211
10 000
1,323
1,294
1,169
0,957
1,105
1,170
Tabulka 8.6: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Neo4j.
Dotaz ˇ c. 4 - Select research groups Dotaz vybere vˇsechny v´ yzkumn´e skupiny a ke kaˇzd´e skupinˇe zobraz´ı informace o ni samotn´e vˇcetnˇe poˇctu uˇzivatel˚ u v dan´e skupinˇe.
Oracle SELECT r g . t i t l e , r g . d e s c r i p t i o n , COUNT( p . p e r s o n i d ) as pocet uzivatelu FROM r e s e a r c h g r o u p r g INNER JOIN p e r s o n p ON p . pe rs on id = rg . owner id GROUP BY r g . t i t l e , r g . d e s c r i p t i o n
V´ ypis 8.7: Pˇr´ıklad skriptu pro v´ ybˇer v´ yzkumn´ ych skupin v SQL
47
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
1,067
0,759
0,938
0,803
0,899
0,893
10 000
2,228
2,052
3,086
1,847
2,717
2,386
Tabulka 8.7: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Oracle. Neo4j START r g = node : e e g i n d e x ( ’_Type : entities . ResearchGroup ’ ) MATCH rg − [ :REF RESEARCH GROUP OWNER]−>ow RETURN r g . Id , r g . T i t l e , r g . D e s c r i p t i o n , COUNT(ow . Id ) as PocetUzivatelu
V´ ypis 8.8: Pˇr´ıklad skriptu pro v´ ybˇer v´ yzkumn´ ych skupin v Cypheru
Jednotliv´e kroky mˇeˇren´ı [s] Poˇ cet z´ aznam˚ u
[s]
1
2
3
4
5
Pr˚ umˇ er
1000
0,21
0,21
0,178
0,148
0,245
0,198
10 000
0,667
0,650
0,517
0,660
0,491
0,593
Tabulka 8.8: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Neo4j.
Dotaz ˇ c. 5 - Select electrode confs Dotaz vybere vˇsechny konfigurace elektrod, kter´e maj´ı menˇs´ı impedanci neˇz 500 a ke kaˇzd´e z nich zobraz´ı informace o ni samotn´e vˇcetnˇe m´ısta osazen´ı elektrod.
48
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Testov´an´ı
Oracle SELECT e c . e l e c t r o d e c o n f i d , e c . impedance , e s . t i t l e as electrode system FROM e l e c t r o d e c o n f e c INNER JOIN e l e c t r o d e s y s t e m e s ON ec . e l e c t r o d e s y s t e m i d = es . e l e c t r o d e s y s t e m i d WHERE e c . impedance < 500
V´ ypis 8.9: Pˇr´ıklad skriptu pro v´ ybˇer konfigurac´ı elektrod v SQL
Poˇ cet z´ aznam˚ u
1
2
3
4
5
Pr˚ umˇ er
1000
0,327
0,296
0,359
0,375
0,395
0,350
10 000
2,373
2,561
2,42
2,39
2,36
2,421
Tabulka 8.9: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Oracle.
Neo4j START e c = node : e e g i n d e x ( ’_Type : entities . ElectrodeConf ’ ) MATCH ec − [ :REF ELECTRODE CONF ELECTRODE SYSTEM]−> e s WHERE e c . Impedance < 500 RETURN e c . Id , e c . Impedance , e s . T i t l e as E l e c t r o d e S y s t e m
V´ ypis 8.10: Pˇr´ıklad skriptu pro v´ ybˇer konfigurac´ı elektrod v Cypheru
Poˇ cet z´ aznam˚ u
1
2
3
4
5
Pr˚ umˇ er
1000
0,08
0,06
0,077
0,085
0,052
0,071
10 000
0,242
0,333
0,655
0,418
0,317
0,393
Tabulka 8.10: Tabulka s namˇeˇren´ ymi ˇcasy vykon´an´ı dotazu nad Neo4j.
49
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
8.2
Zhodnocen´ı v´ysledk˚ u
Zhodnocen´ı v´ ysledk˚ u
V pˇredchoz´ı ˇc´asti kapitoly byly otestov´any dva poˇzadavky na datov´ y model relaˇcn´ı datab´aze Oracle a nerelaˇcn´ı grafov´e datab´aze Neo4j. Prvn´ım poˇzadavkem byla flexibilita datov´ eho modelu, kter´a by umoˇznila snadn´e rozˇs´ıˇren´ı datov´eho modelu o dalˇs´ı entitu. Druh´ ym poˇzadavkem byla rychlost vykon´ an´ı dotazu. Z hlediska flexibility datov´eho modelu lze prohl´asit, ˇze u grafov´e datab´aze Neo4j je rozˇs´ıˇren´ı datov´eho modelu snadnˇejˇs´ı a pˇr´ıstupnˇejˇs´ı neˇz u relaˇcn´ı datab´aze Oracle. D˚ uvodem je skuteˇcnost, ˇze v pˇr´ıpadˇe Neo4j staˇc´ı vytvoˇrit nov´ y vrchol a ten napojit do s´ıtˇe vrchol˚ u a pojmenovat vlastnosti. Tato zmˇena nikterak nenaruˇsuje souˇcasn´ y koncept datov´eho modelu. U relaˇcn´ı datab´aze Oracle je tomu naopak, jelikoˇz rozˇs´ıˇren´ı st´avaj´ıc´ıho datov´eho sch´ematu o dalˇs´ı tabulku vyˇzaduje postup, kter´ y je mnohdy komplikovanˇejˇs´ı. Druh´ ym poˇzadavkem na testov´an´ı byla rychlost vykon´an´ı dotazu nad obˇema datab´azov´ ymi syst´emy. Testov´an´ı rychlosti prob´ıhalo tak, ˇze kaˇzd´ yz dotaz˚ u byl opakovanˇe vykon´an a to vˇzdy pro r˚ uzn´ y poˇcet z´aznam˚ u, tzn. 1000 a 10 000 z´aznam˚ u, aby se ovˇeˇrila v´ ykonost datab´aze pˇri v´ ybˇeru vˇetˇs´ıho poˇctu z´aznam˚ u. Pro detailnˇejˇs´ı pohled namˇeˇren´ ych hodnot ˇcas˚ u obsahuje tabulka 8.11 pr˚ umˇern´e ˇcasy spuˇstˇen´ ych dotaz˚ u v konkr´etn´ım datab´azov´em syst´emu (Oracle, Neo4j) a u kaˇzd´eho z nich pˇr´ıpadn´e zrychlen´ı. U obou datab´azov´ ych syst´emu byla provedena optimalizace a to pˇredevˇs´ım prostˇrednictv´ım vytvoˇren´ı index˚ u. V pˇr´ıpadˇe datab´aze Oracle se jednalo o vytvoˇren´ı index˚ u pro prim´arn´ı a ciz´ı kl´ıˇce. D´ale tak´e optimalizaci spuˇstˇen´ ych dotaz˚ u, kterou nejl´epe zajist´ı datab´azov´ y engine. U grafov´e datab´aze Neo4j byly vytvoˇreny indexy pro vˇsechny vlastnosti popisuj´ıc´ı vrcholy. Indexov´an´ı slouˇz´ı pˇredevˇs´ım ke zrychlen´ı vykon´av´an´ı dotaz˚ u. Z v´ ysledku tˇechto namˇeˇren´ ych pr˚ umˇern´ ych hodnot a urychlen´ı je vidˇet, ˇze vykon´an´ı dotaz˚ u nad grafovou datab´az´ı Neo4j je ˇra´dovˇe rychlejˇs´ı neˇz v pˇr´ıpadˇe relaˇcn´ı datab´aze Oracle. V´ yraznˇe se tento rozd´ıl projevuje u dotaz˚ u, kter´e pˇristupuj´ı k dat˚ um z jin´ ych entit. Napˇr´ıklad u dotazu, kter´ y zobrazuje informace o experimentech a pˇritom pˇristupuje k dat˚ um z jin´ ych entit, je urychlen´ı Neo4j aˇz 11x oproti relaˇcn´ı datab´azi Oracle.
50
Testov´an´ı a zhodnocen´ı v´ysledk˚ u
Zhodnocen´ı v´ysledk˚ u
Velikost grafov´e datab´aze Neo4j m´a vliv na velikost operaˇcn´ı pamˇeti RAM. Tato pamˇet’ov´a z´avislost se projevuje hlavnˇe pˇri vykon´av´an´ı dotaz˚ u, kdy je cel´a datab´aze vloˇzena do operaˇcn´ı pamˇeti RAM, ale jen pˇri prvn´ım spuˇstˇen´ı dotazu. Pˇri dalˇs´ım spuˇstˇen´ı dotazu uˇz jsou data pˇr´ıstupn´a jen z operaˇcn´ı pamˇeti RAM. Operaˇcn´ı pamˇet’ je urˇcen´a pro doˇcasn´e uloˇzen´ı dat a m´a rychlejˇs´ı pˇr´ıstup neˇz vnˇejˇs´ı pamˇet’ (napˇr. pevn´ y disk). Tato skuteˇcnost je podloˇzena v n´asledujic´ı citaci z dokumentace, kter´a je k dispozici na ofici´aln´ıch str´ank´ach Neo4j. Neo4j tries to memory-map as much of the underlying store files as possi” ble. If the available RAM is not sufficient to keep all data in RAM, Neo4j will use buffers in some cases, reallocating the memory-mapped high-performance I/O windows to the regions with the most I/O activity dynamically. Thus, ACID speed degrades gracefully as RAM becomes the limiting factor.”[9] V z´avˇeru zhodnocen´ı testov´an´ı je nutn´e rozhodnout, zda-li je vhodnˇejˇs´ı pouˇz´ıt grafovou datab´azi Neo4j nebo z˚ ustat u souˇcasn´e relaˇcn´ı datab´aze Oracle. Z dosaˇzen´ ych v´ ysledk˚ u testov´an´ı je patrn´e, ˇze v obou krit´eri´ıch (flexibilita, rychlost) je vhodnˇejˇs´ı pouˇz´ıt grafovou datab´azi Neo4j. Jedinou pˇrek´aˇzkou m˚ uˇze b´ yt pamˇet’ov´a z´avislost na fyzick´e pamˇeti RAM, ale z´aleˇz´ı na hardwaru dan´eho stroje, na kter´em datab´aze pobˇeˇz´ı. Z m´eho pohledu se Neo4j jev´ı jako vhodn´a pro pouˇzit´ı v EEG/ERP port´alu, aˇckoliv se mi nepodaˇrilo kv˚ uli pamˇet’ov´e n´aroˇcnosti zajistit u ´plnˇe zat´ıˇzˇen´ı Neo4j datab´aze pˇri vˇetˇs´ım poˇctu z´aznam˚ u v dotazech. I tak si mysl´ım, ˇze tato knihovna m´a velkou budoucnost a uplatnˇen´ı se na trhu. Dotaz
Oracle [s]
Neo4j [s]
Zrychlen´ı
select persons
0,675
0,380
1,41x
select experiments
36,793
3,206
11,48x
select scenarious
5,673
1,170
4,85x
select research groups
2,386
0,593
4,02x
select electrode confs
2,421
0,393
6,16x
Tabulka 8.11: Zrychlen´ı jednotliv´ ych dotaz˚ u pro 10 0000 z´aznam˚ u.
51
9 Z´avˇer V r´amci diplomov´e pr´ace jsem nejprve prostudoval moˇznosti nerelaˇcn´ıch datab´az´ı a pot´e provedl srovn´an´ı s datab´azemi relaˇcn´ımi. Zamˇeˇril jsem se jen na datab´aze grafov´e a vybral tˇri z´astupce (Neo4j, OrientDB a DEX). Z tˇechto tˇr´ı z´astupc˚ u jsem vybral datab´azi, kter´a vyhovovala nejl´epe a tou je Neo4j. V dalˇs´ım kroku jsem se d˚ ukladnˇe sezn´amil s touto grafovou datab´az´ı a pot´e provedl anal´ yzu st´avaj´ıc´ıho datov´eho sch´ematu EEG/ERP port´alu a vybral vhodnou podmnoˇzinu. Na t´eto podmnoˇzinˇe relaˇcn´ı datab´aze Oracle za pomoci n´astroje Datanamic Data for Oracle jsem vygeneroval testovac´ı data, kter´a jsou d˚ uleˇzit´e pro implementaci datov´eho modelu grafov´e datab´aze Neo4j. Na z´akladˇe t´eto vybran´e podmnoˇziny jsem navrhl datov´ y model grafov´e datab´aze Neo4j a ten implementoval pomoc´ı Java API. Po implementaci jsem grafovou datab´azi Neo4j otestoval spolu s relaˇcn´ı datab´az´ı Oracle, kde bylo c´ılem rozhodnout, kter´a z testovan´ ych datab´az´ı je vhodnˇejˇs´ı pro pouˇzit´ı v EEG/ERP port´alu. Testovaly se dva z´akladn´ı poˇzadavky nad obˇema datab´azema - flexibilita datov´eho modelu a rychlost vykon´an´ı dotazu. Podle zhodnocen´ı dosaˇzen´ ych v´ ysledku (viz pˇredchoz´ı kapitola) byla zvolena za vhodnou datab´azi pr´avˇe grafov´a datab´aze Neo4j, kter´a dosahuje lepˇs´ıch v´ ysledk˚ u v testov´an´ı poˇzadavk˚ u na flexibilitu a rychlost vykon´an´ı dotaz˚ u. Samozˇrejmˇe se jedn´a jen o doporuˇcen´ı, kter´e nemus´ı b´ yt realizov´ano z d˚ uvod˚ u, kter´e byly pops´any v pˇredchoz´ı kapitole. Napˇr´ıklad se m˚ uˇze jednat o pamˇet’ovou z´avislost datab´aze na velikosti operaˇcn´ı pamˇeti RAM. Tato pr´ace byla pro mˇe velmi zaj´ımav´a z ohledem na to, ˇze jsem si vyzkouˇsel pr´aci s relativnˇe mladou, ale slibnou datab´az´ı Neo4j, kter´a se ˇrad´ı do skupiny NoSQL datab´az´ı. V souˇcasn´e dobˇe se NoSQL datab´aze st´ale rozv´ıj´ı a do budoucna se mohou st´at velmi vyuˇz´ıvanou skupinou datab´az´ı v mnoha oblastech. Hlavn´ım d˚ uvodem je rostouc´ı objem dat a flexibiln´ı datov´e sch´ema, na kter´e jiˇz klasick´e relaˇcn´ı datab´aze nestaˇc´ı. V´ yˇse uveden´e body dokazuj´ı, ˇze c´ıle diplomov´e pr´ace byly u ´spˇeˇsnˇe splnˇeny a tak´e se vymezuje proti oborov´emu projektu, kter´ y se zab´ yval studi´ı tˇr´ı grafov´ ych datab´az´ı.
52
Literatura [1] Eeg database. URL https://github.com/INCF/eeg-database. Navˇst´ıveno: 20.04.2013. [2] Jacomy M Bastian M., Heymann S. Ofici´aln´ı str´anky vizualizaˇcn´ıho n´astroje gephi. URL http://www.gephi.org. Navˇst´ıveno: 22.04.2013. [3] McCrory’s Blog. Cap theorem and clouds. URL http://blog. mccrory.me/2010/11/03/cap-theorem-and-the-clouds/. Navˇst´ıveno: 08.05.2013. [4] Ing. Petr Br˚ uha. Diplomov´a pr´ace EEG/ERP port´al a prostˇredky s´emantick´eho webu. 2011. [5] Luca Garulli. Ofici´aln´ı str´anky technologie orientdb. URL http://www. orientdb.org/orient-db.htm. Navˇst´ıveno: 15.04.2013. [6] Richard G¨ unzl. Bakal´aˇrsk´a pr´ace na t´ema NoSQL datab´aze. 2012. [7] Aleksa Vukotic Jonas Partner. Neo4j in Action. Manning Publications, 2013. Navˇst´ıveno: 08.04.2013. [8] Sergejus Barinovas | Microsoft MVP. Prezentace na t´ema nosql - what’s that? URL http://www.slideshare.net/sergejus/ nosql-whats-that. Navˇst´ıveno:: 08.05.2013. [9] Inc Neo Technology. Ofici´aln´ı str´anky technologie neo4j. URL http: //www.neo4j.org/. Navˇst´ıveno: 05.04.2013. [10] Peter Neubauer. Graph databases, nosql and neo4j. URL http://www. infoq.com/articles/graph-nosql-neo4j. Navˇst´ıveno: 08.05.2013. [11] The University of West Bohemia. Ofici´aln´ı str´anky eeg/erp port´alu. URL http://eegdatabase.kiv.zcu.cz/home.html. Navˇst´ıveno: 10.04.2013. 53
LITERATURA
LITERATURA
[12] Amit Piplani. U pick 2 selection for nosql providers. URL http://amitpiplani.blogspot.cz/2010/05/ u-pick-2-selection-for-nosql-providers.html. Navˇst´ıveno: 01.05.2013. [13] Martin Strbaˇcka. Diplomov´a pr´ace Vytvoˇren´ı publikaˇcn´ıho standardu v oblasti evokovan´ych potenci´al˚ u. 2012. [14] Sparsity Technologies. Ofici´aln´ı str´anky technologie dex. URL http: //www.sparsity-technologies.com/index/. Navˇst´ıveno: 28.04.2013.
54
A Uˇzivatelsk´a dokumentace Tato kapitola popisuje pr˚ ubˇeh cel´eho procesu testov´an´ı, od samotn´e instalace potˇrebn´ ych n´astroj˚ u aˇz k testov´an´ı poˇzadavk˚ u. Prvn´ı ˇc´ast kapitoly se zab´ yv´a popisem instalace n´astroj˚ u pro samotn´e testov´an´ı a druh´a kapitola popisuje pouˇzit´ı tˇechto n´astroj˚ u pˇri testov´an´ı. Na pˇriloˇzen´em CD se nach´azej´ı n´astroje vyuˇzit´e v pr˚ ubˇehu testov´an´ı kromˇe Oracle serveru, kter´ y je ke staˇzen´ı na ofiici´aln´ıch str´ank´ach spoleˇcnosti Oracle.
A.1
Pˇ r´ıprava n´ astroj˚ u pro testov´ an´ı
Ke zprovoznˇen´ı cel´eho procesu testov´an´ı je d˚ uleˇzit´e nainstalovat nˇekolik n´astroj˚ u, kter´e maj´ı na starosti nˇejakou ˇcinnost spojenou s procesem testov´an´ı. Nejprve nainstalujeme Oracle server v aktu´aln´ı verzi 11g pˇr´ıpadnˇe verzi 10g, kter´a je ke staˇzen´ı na ofici´aln´ıch str´ank´ach spoleˇcnosti Oracle. Po u ´spˇeˇsn´e instalaci je potˇreba vytvoˇrit lok´aln´ı datab´azi. K tomu pouˇzijeme n´astroj Database Configuration Assistant, kter´ y je souˇca´st´ı nainstalovan´eho Oracle serveru. V pr˚ ubˇehu vytv´aˇren´ı lok´aln´ı datab´aze vytvoˇr´ıme uˇzivatele, jehoˇz pˇrihlaˇsovac´ı u ´daje budou slouˇzit pro pˇr´ıstup k vytvoˇren´e datab´azi. D´ale specifikujeme n´azev sluˇzby, pod kterou datab´aze pobˇeˇz´ı. Po tomto kroku m´ame vytvoˇrenou datab´azi, ke kter´e se pˇripoj´ıme napˇr´ıklad pomoc´ı n´astroje Oracle SQL Developer, kter´ y se pouˇz´ıv´a ke spr´avˇe datab´aze. Na pˇriloˇzen´em CD se nach´az´ı sloˇzka scripts, kter´a obsahuje skript pro vytvoˇren´ı datab´aze a skripty testovac´ıch dotaz˚ u pro oba datab´azov´e syst´emy. y otevˇreme poV t´eto sloˇzce najdeme soubor s n´azvem create model.sq, kter´ moc´ı jiˇz zm´ınˇen´eho n´astroje Oracle SQL Developer a pot´e spust´ıme. Tento skript n´am vytvoˇr´ı strukturu tabulek vybran´e podmnoˇziny EEG/ERP port´alu. Kdyˇz m´ame vytvoˇren´e datov´e sch´ema podmnoˇziny EEG/ERP port´alu, je nutn´e jej naplnit testovac´ımi daty. Vyuˇzijeme k tomu n´astroj Datanamic Data for Oracle, prostˇrednictv´ım nˇehoˇz vygenerujeme testovac´ı data pˇr´ımo do vytvoˇren´e datab´aze. V tuto chv´ıli jiˇz m´ame vˇse potˇrebn´e pro otestov´an´ı relaˇcn´ı datab´aze Oracle, ale nejdˇr´ıve vytvoˇr´ıme grafovou datab´azi Neo4j. Ve sloˇzce Apps se nach´az´ı sloˇzka Neo4j Graph Database Creating, ve kter´e je soubor run.bat, kter´ y spust´ı proces vytv´aˇren´ı grafov´e datab´aze Neo4j. V tomto souboru je 55
Uˇzivatelsk´a dokumentace
Spuˇstˇen´ı testov´an´ı
nutn´e pˇred spuˇstˇen´ım nastavit parametry pro pˇripojen´ı k relaˇcn´ı datab´azi Oracle, tzn. pˇrihlaˇsovac´ı jm´eno, heslo a n´azev spuˇstˇen´e sluˇzby. Uk´azka spuˇstˇen´ı procesu vytv´aˇren´ı grafov´e datab´aze Neo4j vˇcetnˇe parametr˚ u je n´ıˇze. Neo4JEEG.jar \%\%i [filePath] [userName] [password] [serviceName] Spuˇstˇen´ı aplikace prob´ıh´a opakovanˇe, a to vˇzdy s jin´ ym vstupn´ım parametrem %%i, ker´ y oznaˇcuje ˇc´ast dat, kter´a se m´a naˇc´ıst z relaˇcn´ı datab´aze Oracle. Dalˇs´ı parametry jako napˇr. userName, password slouˇz´ı pro pˇripojen´ı k datab´azi Oracle. D˚ uvodem opakovan´eho spuˇstˇen´ı aplikace je velk´e mnoˇzˇ sen´ım je tedy stv´ı dat, kter´e nebylo moˇzn´e najednou naˇc´ıst do pamˇeti. Reˇ postupn´e naˇcten´ı ˇca´sti dat z relaˇcn´ı datab´aze Oracle, kter´e se pouˇzij´ı pˇri vytv´aˇren´ı grafov´e datab´aze Neo4j. Tato aplikace vyuˇz´ıv´a k vytvoˇren´ı grafov´e datab´aze prostˇredky, kter´e jsou obsaˇzeny v knihovnˇe Neo4j.
A.2
Spuˇ stˇ en´ı testov´ an´ı
V t´eto f´azi testov´an´ı jiˇz m´ame vytvoˇren´e obˇe datab´aze a naplnˇen´e testovac´ımi daty. Nyn´ı m˚ uˇzeme otestovat oba poˇzadavky, kter´e byly zm´ınˇen´e v kapitole testov´an´ı. Pro upˇresnˇen´ı uvedu, ˇze jde o poˇzadavek na flexibiln´ı datov´ y model datab´aze a rychlost vykon´an´ı dotazu. Testovac´ı sc´en´aˇre dotaz˚ u pro oba datab´azov´e syst´emy jsou um´ıstˇen´e ve sloˇzce scripts.
A.2.1
Testov´ an´ı datab´ aze Oracle
Nejdˇr´ıve otestujeme relaˇcn´ı datab´azi Oracle. K testov´an´ı pouˇzijeme n´astroj SQL Oracle Developer v nˇemˇz otevˇreme konkr´etn´ı skript s dotazem, kter´ y chceme otestovat. Napˇr´ıklad otevˇreme soubor select person.sql a spust´ıme dotaz, kter´ y n´am vr´at´ı seznam osob z tabulky Person. Na obr´azku A1 je vidˇet uk´azka testov´an´ı tohoto dotazu, kter´ y byl vykon´an pro 10 000 z´aznam˚ u. V pˇr´ıpadˇe otestov´an´ı flexibility datov´eho sch´ematu otevˇreme skript s n´azvem pharmaceutical table.sq a spust´ıme. Vytvoˇr´ı se n´am tabulka PHARMACEUTICAL a vazebn´ı tabulka PHARMACEUTICAL_REL.
56
Uˇzivatelsk´a dokumentace
Spuˇstˇen´ı testov´an´ı
Obr´azek A.1: Uk´azka pouˇzit´ı n´astroje SQL Oracle Developer pˇri testov´an´ı.
A.2.2
Testov´ an´ı datab´ aze Neo4j
Pro otestov´an´ı grafov´e datab´aze Neo4j pouˇzijeme webov´e rozhran´ı Web admin, kter´e je souˇc´ast´ı knihovny Neo4j um´ıstˇen´e ve sloˇzce Apps. Soubor ke spuˇstˇen´ı tohoto webov´eho rozhran´ı se nach´az´ı ve sloˇzce bin pod n´azvem neo4j.bat. Samotn´e webov´e rozhran´ı si zobraz´ıme pomoc´ı prohl´ıˇzeˇce, ve kter´em zad´ame adresu http://localhost:7474. Ve webov´em rozhran´ı prostˇrednictv´ım konozle otestujeme rychlost vykon´an´ı dotazu, a to tak, ˇze do konzole vloˇz´ıme dotaz v jazyce Cypher. Dotaz vr´at´ı 10 000 z´aznam˚ u, kter´e obsahuj´ı informace o lidech, kteˇr´ı se pod´ılej´ı na experimentech. Pˇri prvn´ım spuˇstˇen´ı dotazu dojde k naˇcten´ı cel´e grafov´e datab´aze do operaˇcn´ı pamˇeti RAM, proto je lepˇs´ı zmˇeˇrit rychlost v´ ykonu dotazu aˇz pˇri dalˇs´ım spuˇstˇen´ı. Uk´azka spuˇstˇen´ı dotazu v n´astroji Web admin je vidˇet na obr´azku A2.
57
Uˇzivatelsk´a dokumentace
Spuˇstˇen´ı testov´an´ı
Obr´azek A.2: Uk´azka pouˇzit´ı n´astroje Web admin pˇri testov´an´ı.
58
B Sch´ema grafov´e struktury v Neo4j
Obr´azek B.1: Uk´azka grafov´e struktury v Neo4j bez vlastnost´ı. 59
Sch´ema grafov´e struktury v Neo4j
Obr´azek B.2: Uk´azka rozˇs´ıˇren´ı grafov´e struktury o entitu Pharmaceutical
60
C Obsah pˇriloˇzen´e CD Na CD, jeˇz je pˇriloˇzeno k t´eto diplomov´e pr´ac, se nach´az´ı tato struktura: • Doc - obsahuje elektronickou podobu t´eto dokumentace • Apps - v t´eto sloˇzce jsou n´astroje pro spuˇstˇen´ı cel´eho procesu testov´an´ı – Datanamic Data Generator for Oracle - n´astroj pro spuˇstˇen´ı generov´an´ı testovac´ıch dat k relaˇcn´ı datab´azi Oracle – Neo4j Community 2.0.0.2 - knihovna pr´aci s grafovou datab´az´ı Neo4j obsahuj´ıc´ı n´astroj Web admin – Neo4j Graph Database Creating - aplikace pro vytvoˇren´ı grafov´e datab´aze podle vybran´e podmnoˇziny EEG/ERP port´alu • Scripts - v t´eto sloˇzce se nach´azej´ı veˇsker´e testovac´ı skripty dostupn´e v jazyku SQL a Cypher
C.1
Struktura aplikace Neo4j Graph Database Creating
• dist - obsahuje spustiteln´ y soubor s pˇr´ıponou .jar • run.bat - soubor, kter´ y spust´ı aplikaci opakovanˇe s r˚ uzn´ ym parametrem pro zad´an´ı zaˇc´atku naˇc´ıt´an´ı dat z datab´aze • src - sloˇzka obsahuj´ıc´ı zdrojov´e k´ody aplikace – entities - bal´ıˇcek obsahuj´ıc´ı tˇr´ıdy reprezentuj´ıc´ı jednotliv´e entity – relationships - bal´ıˇcek obsahuj´ıc´ı v´ yˇctov´ y typ definuj´ıc´ı jednotliv´e vztahy v grafu – utils - obsahuje jedinou tˇr´ıdu s pomocn´ ymi metodami
61