Databázi můžeme ovládat pomocí přiložené aplikace, která využívá grafového dotazovacího jazyka Gremlin nebo pomocí Blueprints. Blueprints je uváděno jako standard API grafových databází.
Gremlin
Spuštěním následujícího příkazu se spustí terminál Gregmlin, ve kterém je již možné spouštět dotazy a příkazy ve stejnojmenném dotazovacím jazyce../bin/gramlin.shDále, pro připojení k databázi a případnému vytvoření databáze, je nutné zadat adresu ke konfiguračnímu souboru. Příazy jsou připojení databáze a k ukončení připojení jsou následující:
g=TitanFactory.open('/directory/file')Podrobný popis tvorby konfiguračního souboru lze nalézt ve složce conf stažené knihovny Titan, kde je to popsáno v souboru titan-cassandra-es.properties. Jednoduchým příkladem funkční konfigurace může být následující text tohoto konfiguračního souboru:
g.shutdown()
storage.backend=berkeleyjeKlíčovou informací z configuračního souboru je použití úložného back-endu, který je v tomto případě BerkleyDB (berkeleyje).
storage.directory=db/berkeley
index.search.backend=elasticsearch
index.search.directory=db/es
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true
Pro vytvoření vrcholu se použije funkce addVertex() a následně se vrcholu funkcí setProperty() nastaví požadované vlastnosti.
prom1 = g.addVertex()K vytvoření hrany se potom použije funkce addEdge(), kde se spojí například hrana prom1 a prom2 a nastaví se typ resp. popisek. Dále je samozřejmě zase možné dát hraně další vlastnosti podobně jako vrcholu.
prom1.setProperty('name','Jirka')
g.addEdge(null,prom1,prom2,'KNOWS')
Jednudochý dotaz může vypadat následovně, kdy se grafové databáze ptáme na vrchol, který má vlastnost name s hodnotou "Jirka"
g.V.has('name','Jirka')
Blueprint API
Aplikaci Gremlin a tento standard API vyvíjí stejná skupina lidí (TinkerPop), díky tomu je použití Blueprint v Javě velice podobné příkazům v aplikaci Gremlin. Zpracování databáze je zde transakční, proto je vhodné operace nad databází uzavírat do klauzule pro odchytávání vyjímek a po ukončení bloku příkazů zakončit příkazem shutdown().Za zmínku už zde stojí asi jen fakt, že proměnná g, která se používala i v aplikaci Gremlin (zde má stejný význam) je datového typu TitanGraph, vrcholy vytvořené funkcí addVertex() jsou datového typu Vertex a hrany jsou typu Edge.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import com.thinkaurelius.titan.core.TitanFactory; import com.thinkaurelius.titan.core.TitanGraph; import com.tinkerpop.blueprints.*; public class test { public static void main(String[] args) { TitanGraph g = TitanFactory.open("/home/greg/Plocha/experiment/soub"); Vertex oz = g.addVertex(null); oz.setProperty("name", "Jiri Bilek"); oz.setProperty("age", "24"); Vertex sz = g.addVertex(null); sz.setProperty("name", "Tatka Bilek"); Edge e = g.addEdge( null, sz, oz, "parent"); g.commit(); if (g.getVertices("name", (Object)"Jiri Bilek").iterator().hasNext()) System.out.println("Jiri Bilek is "+g.getVertices("name", (Object)"Jiri Bilek").iterator().next().getProperty("age")+" years old"); else System.out.println("Zadny Jiri Bilek v databazi neni"); g.shutdown(); } } |
Zdroje:
http://www.tinkerpop.com/
http://s3.thinkaurelius.com/docs/titan/0.5.0/
http://titanium.clojurewerkz.org/articles/getting_started.html
http://thinkaurelius.github.io/titan/
http://euranova.eu/upl_docs/publications/an-empirical-comparison-of-graph-databases.pdf
http://clojure.org/
Žádné komentáře:
Okomentovat