Microsoft Azure:
Document DB
and other
noSQL databases
Benjamin Guinebertiere
Technical Evangelist, Microsoft France
@benjguin
noSQL matters on Azure
Other related managed services (PaaS)
Azure Search
Redis Cache
HDInsight : Hive + ORC Hadoop with Column
storage + SQL
SQL Database Elastic Scale Relational + Sharding
Managed databases (PaaS)
Azure Storage Tables Clef/valeur
HDInsight HBase Column
DocumentDB Document JSON
IaaS
MongoDB Document
In IaaS, or managed by MongoLabs,
or MongoDB
Cassandra Column
In IaaS, may be initiated thru the
Marketplace
Titan Graph
… Any database that installs on
Windows or Linux
DocumentDB
DocumentDB at Microsoft
user data store
{
"id": "AzureDocumentDB",
"servicetype": "Data Platform",
"servicename": "Azure DocumentDB",
"releasetype": "Preview",
"public": true,
"regions": [
{
"name": "North Europe",
"visible": true,
"capacity": 230034
},
{
"name": "West US",
"visible": true,
"capacity": 800034
},
{
"name": "East US",
"visible": false,
"capacity": 1000034
}
]
}
{
"id": "MS_125734",
"name": "John Macintyre",
"jobrole": "Program Manager",
"companyname": "Microsoft",
"photo": null,
"bio": "John builds stuff at Microsoft.",
"topicids": [
"MS_Azure_12",
"MS_Azure_23",
"MS_Azure_44"
],
"sessonids": [
"MS_TEE_DBIB318",
"MS_TEE_DBI212"
]
}
designed, built and optimized for JSON
{ }JSON
schema-free and queryable
SQL
multi-document transactions
JS
tunable and fast
scalable and fully managed
{ }
{ }
JS
JS
JS
The Basics
The Basics
Resource Model
 Entities addressable by logical URI
 Partitioned for scale out
 Replicated for HA
 Entities represented as JSON
 Accounts scale out through addition
of capacity units






{ }
{ }
JS
JS
JS
JSON + SQL
 Query arbitrary paths,
properties and values
 No secondary index
definitions required
 Consistent Query Results in
the face of heavy writes
 Query through SQL (or LINQ
in .NET)
 JavaScript UDFs Extensibility
-- Nested lookup against index
SELECT B.Author
FROM Books B
WHERE B.Author.Name = "Leo Tolstoy"
-- Transformation, Filters, Array access
SELECT { Name: B.Title, Author: B.Author.Name }
FROM Books B
WHERE B.Price > 10 AND B.Language[0] = "English"
-- Joins, User Defined Functions (UDF)
SELECT CalculateRegionalTax(B.Price, "USA", "WA")
FROM Books B
JOIN L IN B.Languages
WHERE L.Language = "Russian"
The choice of consistency level has performance implications
for both write and read operations
• Write operations
• Consistency level changes impact request latency
• Stronger consistency levels result in higher write
latencies
• Read operations
• Consistency level changes impact throughput
• Weaker consistency levels result in higher read
throughput
Tip: You can lower the consistency level of a specific read or query
request by specifying [x-ms-consistency-level] request header or by
using RequestOptions in the SDKs
Document myDoc = await
client.ReadDocumentAsync(documentLink,
new RequestOptions
{ ConsistencyLevel = ConsistencyLevel.Eventual });
Lower consistency level on read operation
How it works
Automatic indexing of documents
JSON documents are represented as
trees
Structural information and instance
values are normalized into a JSON-Path
Example
{"headquarters": "Belgium"}  /"headquarters"/"Belgium"
{"exports": [{"city": “Moscow"}, {"city": Athens"}]}  /"exports"/0/"city"/"Moscow"
and /"exports"/1/"city"/"Athens".
Configuration Level Options
Automatic Per collection True (default) or False
Override with each document write
Indexing Mode Per collection Consistent or Lazy
Lazy for eventual updates/bulk ingestion
Included and excluded
paths
Per path Individual path or recursive includes (? And *)
Indexing Type Per path Support Hash (Default) and Range
Hash for equality, range for range queries
Indexing Precision Per path Supports 3 – 7 per path
Tradeoff storage, query RUs and write RUs
Path Description/use case
/ Default path for collection. Recursive and applies to whole document tree.
/"prop"/? Serve queries like the following (with Hash or Range types respectively):
SELECT * FROM collection c WHERE c.prop = "value"
SELECT * FROM collection c WHERE c.prop > 5
/"prop"/* All paths under the specified label.
/"prop"/"subprop"/ Used during query execution to prune documents that do not have the
specified path.
/"prop"/"subprop"/? Serve queries (with Hash or Range types respectively):
SELECT * FROM collection c WHERE c.prop.subprop = "value"
SELECT * FROM collection c WHERE c.prop.subprop > 5
Transactionally
process multiple
documents with
application defined
stored procedures
and triggers
 JavaScript as the procedural language
 Language integrated
 Execution wrapped in an implicit transaction
 Preregistered and scoped to a collection
 Performed with ACID guarantees
 Triggers invoked as pre or post operations
Get started with Azure DocumentDB
http://aka.ms/documentdb
DocumentDB Documentation, Videos & Tutorials
http://aka.ms/documentdbdocs
Submit DocumentDB Feedback & Vote for Features
http://aka.ms/documentdbfeedback
Sample Code
http://aka.ms/documentdbsamples
Team Blog
http://aka.ms/documentdbblog
DocumentDB Resources
Other noSQL databases on Azure
tech.days 2015#mstechdays
Activez vos bénéfices Azure jusqu’à
115€ de ressources mensuelles
offertes
115€ /mois
x5 membres
x3 ans
= 4 175€ de ressources offertes
http://azure.com http://aka.ms/azurepourmsdn
150€ de ressources offertes
Sans engagement
Pour tous
Un mois d’essai offert
http://www.microsoft.com/bizspark/
Pour les startups
Bizspark
= 49 000€ de ressources offertes
pendant un an
Pour les abonnés
MSDN
tech.days 2015#mstechdays
Inscrivez-vous : http://aka.ms/pepiniereazure
Coaching technique et business
Ressources
Une équipe à Microsoft pour vous accompagner dans votre projet cloud et mettre à
votre disposition de l’aide personnalisée.
Visibilité
Benjamin Guinebertière
Technical Evangelist, Microsoft France
Azure, data insights, machine learning
@benjguin | http://3-4.fr
Démo screen shots
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015
Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015

Benjamin Guinebertière - Microsoft Azure: Document DB and other noSQL databases - NoSQL matters Paris 2015

  • 1.
    Microsoft Azure: Document DB andother noSQL databases Benjamin Guinebertiere Technical Evangelist, Microsoft France @benjguin
  • 2.
  • 3.
    Other related managedservices (PaaS) Azure Search Redis Cache HDInsight : Hive + ORC Hadoop with Column storage + SQL SQL Database Elastic Scale Relational + Sharding Managed databases (PaaS) Azure Storage Tables Clef/valeur HDInsight HBase Column DocumentDB Document JSON IaaS MongoDB Document In IaaS, or managed by MongoLabs, or MongoDB Cassandra Column In IaaS, may be initiated thru the Marketplace Titan Graph … Any database that installs on Windows or Linux
  • 4.
  • 5.
  • 6.
    { "id": "AzureDocumentDB", "servicetype": "DataPlatform", "servicename": "Azure DocumentDB", "releasetype": "Preview", "public": true, "regions": [ { "name": "North Europe", "visible": true, "capacity": 230034 }, { "name": "West US", "visible": true, "capacity": 800034 }, { "name": "East US", "visible": false, "capacity": 1000034 } ] } { "id": "MS_125734", "name": "John Macintyre", "jobrole": "Program Manager", "companyname": "Microsoft", "photo": null, "bio": "John builds stuff at Microsoft.", "topicids": [ "MS_Azure_12", "MS_Azure_23", "MS_Azure_44" ], "sessonids": [ "MS_TEE_DBIB318", "MS_TEE_DBI212" ] } designed, built and optimized for JSON { }JSON
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    The Basics Resource Model Entities addressable by logical URI  Partitioned for scale out  Replicated for HA  Entities represented as JSON  Accounts scale out through addition of capacity units       { } { } JS JS JS
  • 14.
  • 15.
     Query arbitrarypaths, properties and values  No secondary index definitions required  Consistent Query Results in the face of heavy writes  Query through SQL (or LINQ in .NET)  JavaScript UDFs Extensibility -- Nested lookup against index SELECT B.Author FROM Books B WHERE B.Author.Name = "Leo Tolstoy" -- Transformation, Filters, Array access SELECT { Name: B.Title, Author: B.Author.Name } FROM Books B WHERE B.Price > 10 AND B.Language[0] = "English" -- Joins, User Defined Functions (UDF) SELECT CalculateRegionalTax(B.Price, "USA", "WA") FROM Books B JOIN L IN B.Languages WHERE L.Language = "Russian"
  • 16.
    The choice ofconsistency level has performance implications for both write and read operations • Write operations • Consistency level changes impact request latency • Stronger consistency levels result in higher write latencies • Read operations • Consistency level changes impact throughput • Weaker consistency levels result in higher read throughput Tip: You can lower the consistency level of a specific read or query request by specifying [x-ms-consistency-level] request header or by using RequestOptions in the SDKs Document myDoc = await client.ReadDocumentAsync(documentLink, new RequestOptions { ConsistencyLevel = ConsistencyLevel.Eventual }); Lower consistency level on read operation
  • 17.
    How it works Automaticindexing of documents JSON documents are represented as trees Structural information and instance values are normalized into a JSON-Path Example {"headquarters": "Belgium"}  /"headquarters"/"Belgium" {"exports": [{"city": “Moscow"}, {"city": Athens"}]}  /"exports"/0/"city"/"Moscow" and /"exports"/1/"city"/"Athens".
  • 18.
    Configuration Level Options AutomaticPer collection True (default) or False Override with each document write Indexing Mode Per collection Consistent or Lazy Lazy for eventual updates/bulk ingestion Included and excluded paths Per path Individual path or recursive includes (? And *) Indexing Type Per path Support Hash (Default) and Range Hash for equality, range for range queries Indexing Precision Per path Supports 3 – 7 per path Tradeoff storage, query RUs and write RUs
  • 19.
    Path Description/use case /Default path for collection. Recursive and applies to whole document tree. /"prop"/? Serve queries like the following (with Hash or Range types respectively): SELECT * FROM collection c WHERE c.prop = "value" SELECT * FROM collection c WHERE c.prop > 5 /"prop"/* All paths under the specified label. /"prop"/"subprop"/ Used during query execution to prune documents that do not have the specified path. /"prop"/"subprop"/? Serve queries (with Hash or Range types respectively): SELECT * FROM collection c WHERE c.prop.subprop = "value" SELECT * FROM collection c WHERE c.prop.subprop > 5
  • 20.
    Transactionally process multiple documents with applicationdefined stored procedures and triggers  JavaScript as the procedural language  Language integrated  Execution wrapped in an implicit transaction  Preregistered and scoped to a collection  Performed with ACID guarantees  Triggers invoked as pre or post operations
  • 23.
    Get started withAzure DocumentDB http://aka.ms/documentdb DocumentDB Documentation, Videos & Tutorials http://aka.ms/documentdbdocs Submit DocumentDB Feedback & Vote for Features http://aka.ms/documentdbfeedback Sample Code http://aka.ms/documentdbsamples Team Blog http://aka.ms/documentdbblog DocumentDB Resources
  • 24.
  • 49.
    tech.days 2015#mstechdays Activez vosbénéfices Azure jusqu’à 115€ de ressources mensuelles offertes 115€ /mois x5 membres x3 ans = 4 175€ de ressources offertes http://azure.com http://aka.ms/azurepourmsdn 150€ de ressources offertes Sans engagement Pour tous Un mois d’essai offert http://www.microsoft.com/bizspark/ Pour les startups Bizspark = 49 000€ de ressources offertes pendant un an Pour les abonnés MSDN
  • 50.
    tech.days 2015#mstechdays Inscrivez-vous :http://aka.ms/pepiniereazure Coaching technique et business Ressources Une équipe à Microsoft pour vous accompagner dans votre projet cloud et mettre à votre disposition de l’aide personnalisée. Visibilité
  • 51.
    Benjamin Guinebertière Technical Evangelist,Microsoft France Azure, data insights, machine learning @benjguin | http://3-4.fr
  • 53.