+ All Categories
Home > Technology > Jiří Kosek: Potřebujeme dotazovací jazyky pro NoSQL

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

Date post: 06-May-2015
Category:
Upload: develcz
View: 247 times
Download: 4 times
Share this document with a friend
20
Potřebujeme dotazovací jazyky pro NoSQL? @jirkakosek
Transcript
Page 1: Jiří Kosek: Potřebujeme dotazovací jazyky pro NoSQL

Potřebujeme dotazovací jazyky pro NoSQL?

@jirkakosek

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

Potřebujeme dotazovací jazyky pro NoSQL?

@jirkakosek

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

NoSQL

Photo by Marshall Astor

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

Typické charakteristiky NoSQL

• žádné nejsou

• velké objemy dat

• distribuované zpracování

• odolnost proti výpadku

• jednoduché úložiště

– klíč/hodnota

– dokumenty (JSON)

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

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, …)

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

by John Muellerleile

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

{ "query": { "filtered": { "query": { "query_string": { "query": "drama" } }, "filter": { "term": { "year": 1962 } } } } }

JSON is simply cool!

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

Photo by Atelier Graphique

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

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

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

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

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

JSONiq

• JSONiq = XQuery – XML + JSON

{ "name" : "Jim", "age" : 13, "gender" : "male", "friends" : [ "Sarah" ] }

{ "name" : "Sarah", "age" : 13, "gender" : "female", "friends" : [ "Jim", "Mary", "Jennifer"] } { "name" : "Jim", "age" : 13, "gender" : "male", "friends" : [ "Sarah" ] }

Vstup

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

Dotaz

Výsledek

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

JSONiq

• JSONiq = XQuery – XML + JSON

{ "name" : "Jim", "age" : 13, "gender" : "male", "friends" : [ "Sarah" ] }

{ "name" : "Sarah", "age" : 13, "gender" : "female", "friends" : [ "Jim", "Mary", "Jennifer"] } { "name" : "Jim", "age" : 13, "gender" : "male", "friends" : [ "Sarah" ] }

Vstup

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

Dotaz

Výsledek

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

FLWOR výrazy

FOR

LET

WHERE

GROUP BY

ORDER BY

COUNT

RETURN

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

FLWOR výrazy

FOR

LET

WHERE

GROUP BY

ORDER BY

COUNT

RETURN

Page 15: Jiří Kosek: Potřebujeme dotazovací jazyky pro NoSQL
Page 16: Jiří Kosek: Potřebujeme dotazovací jazyky pro NoSQL

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

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

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

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

Vyžadujte od své oblíbené NoSQL databáze dotazovací jazyk hodný roku 2013

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

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

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

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


Recommended