SlideShare a Scribd company logo
1 of 38
Download to read offline
JSONiq - The SQL of NoSQL
msec   William Candillon {wcandillon@28.io}
Two Drivers
Scalability
Flexible Data
NoSQL Checklist   28
NoSQL Checklist                       28
                    Document Stores

High Availability         ✔
NoSQL Checklist                       28
                    Document Stores

High Availability         ✔
Sharding                  ✔
NoSQL Checklist                            28
                         Document Stores

High Availability              ✔
Sharding                       ✔
Available as a Service         ✔
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language
Standardization (1)   28
Standardization (2)   28
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X
Modern Query Processing
Modern Query Processing (2)   28
Modern Query Processing (1)   28
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X
Modern Query Processing             X
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X
Modern Query Processing             X
Rich Data Model
Rich Data Model (1)   28
Rich Data Model (2)   28
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X
Modern Query Processing             X
Rich Data Model                     X
NoSQL Checklist                                 28
                              Document Stores

High Availability                   ✔




                                                Scalability
Sharding                            ✔
Available as a Service              ✔
Standardized Query Language         X




                                                Flexible Data
Modern Query Processing             X
Rich Data Model                     X
The SQL of NoSQL
JSONiq (1)                                28


       Declarative JSON Query Language
               Fully Composable

Extension of XQuery, a mature W3C standard,
          with native JSON support


      Contributors: 28msec, Oracle, EMC
JSONiq (2)                                28


  Updates, Indexes, Search, Transform &
  Filter, Join, Group, and more

  Open Source Implementation: Zorba

  Drivers: MongoDB, CouchDB, AmazonDB,
  SQLite, Oracle NoSQL
{
    "question_id" : 42,
    "title" : "NoSQL: Help me to choose",
    "tags" : [ "mongodb", "couchdb" ],
    "answered" : true,
}
let $question :=
{
  "question_id" : 42,
  "title" : "NoSQL: Help me to choose",
  "tags" : [ "mongodb", "couchdb" ],
  "answered" : true,
}
return $question("title")
for $answers in mongo:find("answers")
group by $id := $answers("question_id")
order by count($answers) descending
let $faq := mongo:find("faq")
return
  <h1>{
    $faq[.("id") eq $id]("title")
  }</h1>


<h1>NoSQL: Help me to Choose</h1>
<h1>What NoSQL solutions for .NET?</h1>
<h1>The Next-gen Databases</h1>
...
for $question in mongo:find("faq")
let $user := $question("owner")
group by $user := $user("user_id")
return {
  "user" : $user[last()]("display_name"),
  "count" : count($question)
}



{ "user": "jbellis", "count": 6 }
{ "user": "user1557698", "count": 5 }
{ "user": "nawroth", "count": 5 }
...
max(
   for tumbling window $answers
                in mongo:find("answers")
   start $start when true
   only end $end next $next
   when $next("date") - $end("date") gt
        xs:dayTimeDuration("P1D")
   return $end("date") - $start("date")
 )

{ "user": "jbellis", "streak": 2 }
{ "user": "user1557698", "streak": 1 }
{ "user": "nawroth", "streak": 1 }
...
"Luke, I am your father"
 contains text "dad"




false
"Luke, I am your father"
 contains text "dad"
 using thesaurus default




true
let $s := "These are not the droids you
 are looking for"
 let $tokens := ft:tokenize-string($s)
 for $token in $tokens
 where not(ft:is-stop-word($token))
 return ft:stem($token)




droid look
...
MongoDB Driver                                       28




   Zorba    Runtime   XDM    Collections   Indexes




MongoDB     MongoS    BSON   Collections   Indexes
28.io                                                    28

• Seamless JSONiq Integration into MongoDB
• Automatic Scale out of the Query Processing


   Zorba     Runtime    XDM      Collections   Indexes




MongoDB      MongoS     BSON     Collections   Indexes
28.io   28
Put the Pressure back to
  the Query Language
Take Away                                28

• JSONiq.org - The SQL of NoSQL
• Open Source Implementation: Zorba
• Next Stop: Automatic Index Detection
             Query Parallelization

• Hosting: 28.io
• Demo: http://28.io/mongodb
Thank You!
msec   Questions?

More Related Content

What's hot

Logs @ OVHcloud
Logs @ OVHcloudLogs @ OVHcloud
Logs @ OVHcloudOVHcloud
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)gdusbabek
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in PostgresEDB
 
Druid realtime indexing
Druid realtime indexingDruid realtime indexing
Druid realtime indexingSeoeun Park
 
Webinar: Schema Patterns and Your Storage Engine
Webinar: Schema Patterns and Your Storage EngineWebinar: Schema Patterns and Your Storage Engine
Webinar: Schema Patterns and Your Storage EngineMongoDB
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDBMongoDB
 
Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Kai Zhao
 
MongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataMongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataSteven Francia
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMongoDB
 
Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL Databases Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL Databases MongoDB
 
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasWebinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasMongoDB
 
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья Свиридов
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья СвиридовManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья Свиридов
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья СвиридовGeeksLab Odessa
 
MongoDB, Hadoop and humongous data - MongoSV 2012
MongoDB, Hadoop and humongous data - MongoSV 2012MongoDB, Hadoop and humongous data - MongoSV 2012
MongoDB, Hadoop and humongous data - MongoSV 2012Steven Francia
 
TechEd AU 2014: Microsoft Azure DocumentDB Deep Dive
TechEd AU 2014: Microsoft Azure DocumentDB Deep DiveTechEd AU 2014: Microsoft Azure DocumentDB Deep Dive
TechEd AU 2014: Microsoft Azure DocumentDB Deep DiveIntergen
 
Tweaking perfomance on high-load projects_Думанский Дмитрий
Tweaking perfomance on high-load projects_Думанский ДмитрийTweaking perfomance on high-load projects_Думанский Дмитрий
Tweaking perfomance on high-load projects_Думанский ДмитрийGeeksLab Odessa
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPyData
 

What's hot (20)

MongoDB and hadoop
MongoDB and hadoopMongoDB and hadoop
MongoDB and hadoop
 
Logs @ OVHcloud
Logs @ OVHcloudLogs @ OVHcloud
Logs @ OVHcloud
 
Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)Introduction to Cassandra (June 2010)
Introduction to Cassandra (June 2010)
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in Postgres
 
Wmware NoSQL
Wmware NoSQLWmware NoSQL
Wmware NoSQL
 
Druid realtime indexing
Druid realtime indexingDruid realtime indexing
Druid realtime indexing
 
Webinar: Schema Patterns and Your Storage Engine
Webinar: Schema Patterns and Your Storage EngineWebinar: Schema Patterns and Your Storage Engine
Webinar: Schema Patterns and Your Storage Engine
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
 
Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)
 
MongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous DataMongoDB, Hadoop and Humongous Data
MongoDB, Hadoop and Humongous Data
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDB
 
Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL Databases Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL Databases
 
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB AtlasWebinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
Webinar: Serverless Architectures with AWS Lambda and MongoDB Atlas
 
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья Свиридов
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья СвиридовManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья Свиридов
ManetoDB: Key/Value storage, BigData in Open Stack_Сергей Ковалев, Илья Свиридов
 
MongoDB, Hadoop and humongous data - MongoSV 2012
MongoDB, Hadoop and humongous data - MongoSV 2012MongoDB, Hadoop and humongous data - MongoSV 2012
MongoDB, Hadoop and humongous data - MongoSV 2012
 
TechEd AU 2014: Microsoft Azure DocumentDB Deep Dive
TechEd AU 2014: Microsoft Azure DocumentDB Deep DiveTechEd AU 2014: Microsoft Azure DocumentDB Deep Dive
TechEd AU 2014: Microsoft Azure DocumentDB Deep Dive
 
Tweaking perfomance on high-load projects_Думанский Дмитрий
Tweaking perfomance on high-load projects_Думанский ДмитрийTweaking perfomance on high-load projects_Думанский Дмитрий
Tweaking perfomance on high-load projects_Думанский Дмитрий
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James Blackburn
 
MongoTokyo
MongoTokyoMongoTokyo
MongoTokyo
 

Viewers also liked

Viewers also liked (17)

Jolt Overview-min
Jolt Overview-minJolt Overview-min
Jolt Overview-min
 
XREST Protocol
XREST ProtocolXREST Protocol
XREST Protocol
 
XQuery in the Cloud
XQuery in the CloudXQuery in the Cloud
XQuery in the Cloud
 
Memorias ram2
Memorias ram2Memorias ram2
Memorias ram2
 
Aspect-Oriented Programming for PHP
Aspect-Oriented Programming for PHPAspect-Oriented Programming for PHP
Aspect-Oriented Programming for PHP
 
Ortografía
OrtografíaOrtografía
Ortografía
 
Carrillo carrillo cevallos_presentacionfinal (1)
Carrillo carrillo cevallos_presentacionfinal  (1)Carrillo carrillo cevallos_presentacionfinal  (1)
Carrillo carrillo cevallos_presentacionfinal (1)
 
распутин григорий ефимович
распутин григорий ефимовичраспутин григорий ефимович
распутин григорий ефимович
 
Краса у сучасному світі
Краса у сучасному світі Краса у сучасному світі
Краса у сучасному світі
 
Arbitration and Choice of Law in Sub-Saharan Africa, Peter N. Levenberg, Flor...
Arbitration and Choice of Law in Sub-Saharan Africa, Peter N. Levenberg, Flor...Arbitration and Choice of Law in Sub-Saharan Africa, Peter N. Levenberg, Flor...
Arbitration and Choice of Law in Sub-Saharan Africa, Peter N. Levenberg, Flor...
 
Mapa mental
Mapa mentalMapa mental
Mapa mental
 
Nrf 237-pemex-2009
Nrf 237-pemex-2009Nrf 237-pemex-2009
Nrf 237-pemex-2009
 
D01 c
D01 cD01 c
D01 c
 
Plan 2017 SOLAIAPPAN
Plan 2017 SOLAIAPPANPlan 2017 SOLAIAPPAN
Plan 2017 SOLAIAPPAN
 
Nrf 053-pemex-2006 (1)
Nrf 053-pemex-2006 (1)Nrf 053-pemex-2006 (1)
Nrf 053-pemex-2006 (1)
 
Cibernetica 2
Cibernetica 2Cibernetica 2
Cibernetica 2
 
Concierge development program 2016
Concierge development program 2016 Concierge development program 2016
Concierge development program 2016
 

Similar to JSONiq - The SQL of NoSQL

Big Data Paris : Hadoop and NoSQL
Big Data Paris : Hadoop and NoSQLBig Data Paris : Hadoop and NoSQL
Big Data Paris : Hadoop and NoSQLTugdual Grall
 
Intro to NoSQL and MongoDB
 Intro to NoSQL and MongoDB Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDBMongoDB
 
Insights into Customer Behavior from Clickstream Data by Ronald Nowling
Insights into Customer Behavior from Clickstream Data by Ronald NowlingInsights into Customer Behavior from Clickstream Data by Ronald Nowling
Insights into Customer Behavior from Clickstream Data by Ronald NowlingSpark Summit
 
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages  NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages DATAVERSITY
 
Solr cloud the 'search first' nosql database extended deep dive
Solr cloud the 'search first' nosql database   extended deep diveSolr cloud the 'search first' nosql database   extended deep dive
Solr cloud the 'search first' nosql database extended deep divelucenerevolution
 
No SQL : Which way to go? Presented at DDDMelbourne 2015
No SQL : Which way to go?  Presented at DDDMelbourne 2015No SQL : Which way to go?  Presented at DDDMelbourne 2015
No SQL : Which way to go? Presented at DDDMelbourne 2015Himanshu Desai
 
Autogenerate Awesome GraphQL Documentation with SpectaQL
Autogenerate Awesome GraphQL Documentation with SpectaQLAutogenerate Awesome GraphQL Documentation with SpectaQL
Autogenerate Awesome GraphQL Documentation with SpectaQLNordic APIs
 
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014NoSQLmatters
 
Big Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and CassasdraBig Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and CassasdraBrian Enochson
 
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»Anna Shymchenko
 
Scaling for Performance
Scaling for PerformanceScaling for Performance
Scaling for PerformanceScyllaDB
 
Nashville analytics summit aug9 no sql mike king dell v1.5
Nashville analytics summit aug9 no sql mike king dell v1.5Nashville analytics summit aug9 no sql mike king dell v1.5
Nashville analytics summit aug9 no sql mike king dell v1.5Mike King
 
SDEC2011 NoSQL concepts and models
SDEC2011 NoSQL concepts and modelsSDEC2011 NoSQL concepts and models
SDEC2011 NoSQL concepts and modelsKorea Sdec
 
Mindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenesMindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenesrobin_sy
 
Oracle day co_opensource_final
Oracle day co_opensource_finalOracle day co_opensource_final
Oracle day co_opensource_finalManuel Contreras
 

Similar to JSONiq - The SQL of NoSQL (20)

Big Data Paris : Hadoop and NoSQL
Big Data Paris : Hadoop and NoSQLBig Data Paris : Hadoop and NoSQL
Big Data Paris : Hadoop and NoSQL
 
Intro to NoSQL and MongoDB
 Intro to NoSQL and MongoDB Intro to NoSQL and MongoDB
Intro to NoSQL and MongoDB
 
Insights into Customer Behavior from Clickstream Data by Ronald Nowling
Insights into Customer Behavior from Clickstream Data by Ronald NowlingInsights into Customer Behavior from Clickstream Data by Ronald Nowling
Insights into Customer Behavior from Clickstream Data by Ronald Nowling
 
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages  NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
NoSQL Now! Webinar Series: Innovations in NoSQL Query Languages
 
Solr cloud the 'search first' nosql database extended deep dive
Solr cloud the 'search first' nosql database   extended deep diveSolr cloud the 'search first' nosql database   extended deep dive
Solr cloud the 'search first' nosql database extended deep dive
 
Nosql
NosqlNosql
Nosql
 
Mongodb lab
Mongodb labMongodb lab
Mongodb lab
 
No SQL : Which way to go? Presented at DDDMelbourne 2015
No SQL : Which way to go?  Presented at DDDMelbourne 2015No SQL : Which way to go?  Presented at DDDMelbourne 2015
No SQL : Which way to go? Presented at DDDMelbourne 2015
 
NoSQL, which way to go?
NoSQL, which way to go?NoSQL, which way to go?
NoSQL, which way to go?
 
Autogenerate Awesome GraphQL Documentation with SpectaQL
Autogenerate Awesome GraphQL Documentation with SpectaQLAutogenerate Awesome GraphQL Documentation with SpectaQL
Autogenerate Awesome GraphQL Documentation with SpectaQL
 
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014
Sebastian Cohnen – Building a Startup with NoSQL - NoSQL matters Barcelona 2014
 
Big Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and CassasdraBig Data, NoSQL with MongoDB and Cassasdra
Big Data, NoSQL with MongoDB and Cassasdra
 
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»
Артем Логинов «NoSQL DBMSs review and non-relational approaches to store data»
 
Scaling for Performance
Scaling for PerformanceScaling for Performance
Scaling for Performance
 
Apache hadoop
Apache hadoopApache hadoop
Apache hadoop
 
Hadoop Overview kdd2011
Hadoop Overview kdd2011Hadoop Overview kdd2011
Hadoop Overview kdd2011
 
Nashville analytics summit aug9 no sql mike king dell v1.5
Nashville analytics summit aug9 no sql mike king dell v1.5Nashville analytics summit aug9 no sql mike king dell v1.5
Nashville analytics summit aug9 no sql mike king dell v1.5
 
SDEC2011 NoSQL concepts and models
SDEC2011 NoSQL concepts and modelsSDEC2011 NoSQL concepts and models
SDEC2011 NoSQL concepts and models
 
Mindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenesMindtalk Tech - Behind the scenes
Mindtalk Tech - Behind the scenes
 
Oracle day co_opensource_final
Oracle day co_opensource_finalOracle day co_opensource_final
Oracle day co_opensource_final
 

More from William Candillon

More from William Candillon (6)

XQuery Rocks
XQuery RocksXQuery Rocks
XQuery Rocks
 
Cutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQueryCutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQuery
 
Not your Grandma's XQuery
Not your Grandma's XQueryNot your Grandma's XQuery
Not your Grandma's XQuery
 
XQuery Design Patterns
XQuery Design PatternsXQuery Design Patterns
XQuery Design Patterns
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
My Summer of Code
My Summer of CodeMy Summer of Code
My Summer of Code
 

JSONiq - The SQL of NoSQL

  • 1. JSONiq - The SQL of NoSQL msec William Candillon {wcandillon@28.io}
  • 6. NoSQL Checklist 28 Document Stores High Availability ✔
  • 7. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔
  • 8. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔
  • 9. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language
  • 12. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language X
  • 13. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language X Modern Query Processing
  • 16. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language X Modern Query Processing X
  • 17. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language X Modern Query Processing X Rich Data Model
  • 18. Rich Data Model (1) 28
  • 19. Rich Data Model (2) 28
  • 20. NoSQL Checklist 28 Document Stores High Availability ✔ Sharding ✔ Available as a Service ✔ Standardized Query Language X Modern Query Processing X Rich Data Model X
  • 21. NoSQL Checklist 28 Document Stores High Availability ✔ Scalability Sharding ✔ Available as a Service ✔ Standardized Query Language X Flexible Data Modern Query Processing X Rich Data Model X
  • 22. The SQL of NoSQL
  • 23. JSONiq (1) 28 Declarative JSON Query Language Fully Composable Extension of XQuery, a mature W3C standard, with native JSON support Contributors: 28msec, Oracle, EMC
  • 24. JSONiq (2) 28 Updates, Indexes, Search, Transform & Filter, Join, Group, and more Open Source Implementation: Zorba Drivers: MongoDB, CouchDB, AmazonDB, SQLite, Oracle NoSQL
  • 25. { "question_id" : 42, "title" : "NoSQL: Help me to choose", "tags" : [ "mongodb", "couchdb" ], "answered" : true, }
  • 26. let $question := { "question_id" : 42, "title" : "NoSQL: Help me to choose", "tags" : [ "mongodb", "couchdb" ], "answered" : true, } return $question("title")
  • 27. for $answers in mongo:find("answers") group by $id := $answers("question_id") order by count($answers) descending let $faq := mongo:find("faq") return <h1>{ $faq[.("id") eq $id]("title") }</h1> <h1>NoSQL: Help me to Choose</h1> <h1>What NoSQL solutions for .NET?</h1> <h1>The Next-gen Databases</h1> ...
  • 28. for $question in mongo:find("faq") let $user := $question("owner") group by $user := $user("user_id") return { "user" : $user[last()]("display_name"), "count" : count($question) } { "user": "jbellis", "count": 6 } { "user": "user1557698", "count": 5 } { "user": "nawroth", "count": 5 } ...
  • 29. max( for tumbling window $answers in mongo:find("answers") start $start when true only end $end next $next when $next("date") - $end("date") gt xs:dayTimeDuration("P1D") return $end("date") - $start("date") ) { "user": "jbellis", "streak": 2 } { "user": "user1557698", "streak": 1 } { "user": "nawroth", "streak": 1 } ...
  • 30. "Luke, I am your father" contains text "dad" false
  • 31. "Luke, I am your father" contains text "dad" using thesaurus default true
  • 32. let $s := "These are not the droids you are looking for" let $tokens := ft:tokenize-string($s) for $token in $tokens where not(ft:is-stop-word($token)) return ft:stem($token) droid look ...
  • 33. MongoDB Driver 28 Zorba Runtime XDM Collections Indexes MongoDB MongoS BSON Collections Indexes
  • 34. 28.io 28 • Seamless JSONiq Integration into MongoDB • Automatic Scale out of the Query Processing Zorba Runtime XDM Collections Indexes MongoDB MongoS BSON Collections Indexes
  • 35. 28.io 28
  • 36. Put the Pressure back to the Query Language
  • 37. Take Away 28 • JSONiq.org - The SQL of NoSQL • Open Source Implementation: Zorba • Next Stop: Automatic Index Detection Query Parallelization • Hosting: 28.io • Demo: http://28.io/mongodb
  • 38. Thank You! msec Questions?