A cayley query
parancs
#
A cayley query
paranccsal végrehajthatunk egy query-t egy létező adatbázison.
A query kifejezést, amit végre kívánunk hajtani, a standard input-on keresztül továbbíthatjuk a parancshoz. Az egyszerűbb kifejezések esetében elegendő lehet, ha azokat az echo
utility-vel továbbítjuk, és közvetlenül beírjuk a parancssorba. A hosszabb kifejezéseket célszerűbb lehet query file-okban elhelyezni, és a cat
utility-vel továbbítani a parancs számára..
A --lang <query-language-type>
paraméterrel kijelölhetjük, hogy a query kifejezést melyik nyelven írtuk. A lehetséges választható nyelvek: “gizmo”, “graphql”, “mql”, “sexp”. Az alapértelmezett query nyelv a “gizmo”.

Figure 4.: cayley query
Futtassunk egy query-t egy korábban létrehozott store tartalmán:
echo "g.V().All();" | cayley query --logtostderr false --db bolt --dbpath /home/tombenke/tmp/cayley --logs ~/tmp
{"id":"bob"}
{"id":"status"}
{"id":"cool_person"}
{"id":"alice"}
{"id":"greg"}
{"id":"emily"}
{"id":"smart_graph"}
{"id":"predicates"}
{"id":"dani"}
{"id":"fred"}
{"id":"smart_person"}
{"id":"charlie"}
{"id":"are"}
{"id":"follows"}
Amennyiben a query eredményét közvetlenül egy másik programba szeretnénk betáplálni, akkor szükségünk lehet arra, hogy a logokat eltüntessük.
Az alábbi példa bemutatja, hogyan tehetjük ezt meg.
A logok a /home/tombenke/tmp
directory-ban lesznek elhelyezve:
$ cat ~/tmp/cayley.tombenke-Latitude-E5470.tombenke.log.INFO.20200915-182850.27351
Log file created at: 2020/09/15 18:28:50
Running on machine: tombenke-Latitude-E5470
Binary: Built with gc go1.11.2 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
Ezt a trükköt, szükség esetén, a többi parancs esetében is alkalmazhatjuk.
Gyakran előfordul, hogy a query-k fejlesztése, tesztelése során valójában nincs szükségünk perzisztens store-ra. Ilyenkor sokkal egyszerűbb lehet egy átmeneti, in-memory adatbázis használata, amibe a futás idejére betöltjük a teszteléshez szükséges adatokat a --load <data-file>
parancssori paraméterrel
Az alábbi parancs ugyanazt a műveletet hajtja végre, mint a fentebb bemutatott példa, de a query-t egy in-memory adatbázison hajtja végre:
$ echo "g.V().All();" | cayley query --logtostderr false --load data/testdata.nq --logs ~/tmp
{"id":"alice"}
{"id":"follows"}
{"id":"bob"}
{"id":"fred"}
{"id":"status"}
{"id":"cool_person"}
{"id":"dani"}
{"id":"charlie"}
{"id":"greg"}
{"id":"emily"}
{"id":"predicates"}
{"id":"are"}
{"id":"smart_person"}
{"id":"smart_graph"}