5. Způsoby dotazování v NoSQL
• jednoduché dotazy pomocí URL parametrů
přes REST rozhraní
• dotazy zapsané jako JSON
• map/reduce dotazy zapsané jako funkce (JS,
Ruby, Erlang, …)
9. XQuery
• dotazovací jazyk pro nestrukturované
dokumenty (původně XML)
• úsporná a jednoduchá syntaxe
• mnoho let vývoje a zkušeností
• přes 20 různých implementací
• další moduly jazyka
– XQuery Update (CRUD)
– XQuery Full-text
10. XQuery
• dotazovací jazyk pro nestrukturované
dokumenty (původně XML)
• úsporná a jednoduchá syntaxe
• mnoho let vývoje a zkušeností
• přes 20 různých implementací
• další moduly jazyka
– XQuery Update (CRUD)
– XQuery Full-text
11. JSONiq
• JSONiq = XQuery – XML + JSON
Vstup
{
"name" : "Sarah",
"age" : 13,
"gender" : "female",
"friends" : [ "Jim", "Mary",
"Jennifer"]
}
Dotaz
for $sarah in collection("users"),
$friend in collection("users")
where $sarah.name eq "Sarah"
and
(some $name in $sarah.friends[]
satisfies $friend.name eq $name)
return $friend
Výsledek
{
"name" : "Jim",
"age" : 13,
"gender" : "male",
"friends" : [ "Sarah" ]
{
"name" : "Jim",
"age" : 13,
"gender" : "male",
"friends" : [ "Sarah" ]
}
}
12. JSONiq
• JSONiq = XQuery – XML + JSON
Vstup
{
"name" : "Sarah",
"age" : 13,
"gender" : "female",
"friends" : [ "Jim", "Mary",
"Jennifer"]
}
Dotaz
for $sarah in collection("users"),
$friend in collection("users")
where $sarah.name eq "Sarah"
and
(some $name in $sarah.friends[]
satisfies $friend.name eq $name)
return $friend
Výsledek
{
"name" : "Jim",
"age" : 13,
"gender" : "male",
"friends" : [ "Sarah" ]
{
"name" : "Jim",
"age" : 13,
"gender" : "male",
"friends" : [ "Sarah" ]
}
}
16. Jednotný dotazovací jazyk
• JSONiq/XQuery engine mapuje dotaz na
primitivní operace a indexy použitého úložiště
• Možnosti JSONiq/XQuery splňují pravidlo
80/20
• Velice specifické vlastnosti jednotlivých NoSQL
databází mohou být mapovány na nové funkce
nebo operátory
17. Implementace
• Zorba (zorba.io)
– JSONiq dotazy nad CouchDB, MongoDB, relačními
DB, SQLLite, Oracle NoSQL, …
– přidat podporu pro nové úložiště je relativně
jednoduché
• Lux (github.com/msokolov/lux)
– XQuery dotazy nad Lucene/Sorl
• Komeční XML databáze často podporují i
přímou práci a ukládání JSON
18. Vyžadujte od své oblíbené NoSQL databáze
dotazovací jazyk hodný roku 2013
19. Kde se dozvědět více
• Stahujte a zkoušejte
• http://jsoniq.org/
• Seznamte se s horkými novinkami na poli
dotazovacích jazyků a semistrukturovaných
dat
Konference XMLPrague 2014
14. až 16. únor 2014
http://xmlprague.cz
http://m.doporucim.cz/Kosek
20. Kde se dozvědět více
• Stahujte a zkoušejte
• http://jsoniq.org/
• Seznamte se s horkými novinkami na poli
dotazovacích jazyků a semistrukturovaných
dat
Konference XMLPrague 2014
14. až 16. únor 2014
http://xmlprague.cz
http://m.doporucim.cz/Kosek