Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Jiří Kosek: Potřebujeme dotazovací jazyky pro NoSQL

  1. 1. Potřebujeme dotazovací jazyky pro NoSQL? @jirkakosek
  2. 2. Potřebujeme dotazovací jazyky pro NoSQL? @jirkakosek
  3. 3. NoSQL Photo by Marshall Astor
  4. 4. Typické charakteristiky NoSQL • • • • • žádné nejsou velké objemy dat distribuované zpracování odolnost proti výpadku jednoduché úložiště – klíč/hodnota – dokumenty (JSON)
  5. 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, …)
  6. 6. by John Muellerleile
  7. 7. JSON is simply cool! { "query": { "filtered": { "query": { "query_string": { "query": "drama" } }, "filter": { "term": { "year": 1962 } } } } }
  8. 8. Photo by Atelier Graphique
  9. 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. 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. 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. 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" ] } }
  13. 13. FLWOR výrazy FOR LET WHERE GROUP BY ORDER BY COUNT RETURN
  14. 14. FLWOR výrazy FOR LET WHERE GROUP BY ORDER BY COUNT RETURN
  15. 15. 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
  16. 16. 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
  17. 17. Vyžadujte od své oblíbené NoSQL databáze dotazovací jazyk hodný roku 2013
  18. 18. 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
  19. 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

×