Service très convoité dans le monde des développeurs Azure, DocumentDB se présente devant vous avec toutes les nouveautés ainsi que des expériences et cas d'utilisation.
3. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• NoSQL
• DocumentDB
– Introduction
– Fonctions avancées
– Performance
– Sécurité
SOMMAIRE
3
4. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
La base du noSQL
Shard 1 Shard 2 Shard 3
Sharded Database
Adam
Andrew
Anusha
Bertrand
Bill
Carl
Catherine
Cynthia
Relational Database
Adam Andrew
Anusha Bertrand
Bill
Carl
Catherine
Cynthia
Une transaction ne peut s’étendre
que dans un seul shard
6. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Column Family Stores
Les familles de bases de données noSQL
Column Family
Row 1
Row Key
Column1
Name1: Value1
ColumnN
NameN: ValueN
Row N
Row Key
Column2
Name2: Value2
ColumnN
NameN: ValueN
7. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Document database
Les familles de bases de données noSQL
Document
Articles
Title Comment
CommentURL
Title CommentAuthor
URL Author
Author
8. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Graph database
Les familles de bases de données noSQL
John
Eddie
Karl
manages
manages
reports_for_project
9. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
« Azure DocumentDB is a NoSQL document
database managed service designed for high
performance, scalability and flexibility. »
Azure DocumentDB
10. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
Document database
• JSON
- Un format standard cross plateforme
• Valeurs JSON
- « Self-describing », « self-contained »
- Pas de comportement, d’héritage, de
règles…
- Sérialisable facilement
• Schéma
- Pas de schéma mais requêtable
{
“locations”:
[
{“country”: “Germany”, “city”: “Berlin”},
{“country”: “France”, “city”: “Paris”},
],
“headquarter”: “Belgium”,
“exports”:[{“city”; “Moscow”},{“city: ”Athens”}]
};
JSON document as tree
Locations Headquarter
Belgium
Country City Country City
Germany Berlin France Paris
Exports
CityCity
Moscow Athens
0 10 1
13. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Pièces jointes
– Propriétés : id, contentType, media (url)
– Contenu stocké par DocumentDB ou non (OneDrive, Dropbox...)
• Code serveur (JavaScript)
– Procédures Stockées
– Fonctions Utilisateurs (UDFs)
– Déclencheurs (non automatiques !)
Fonctions avancées
x-ms-documentdb-pre-trigger-include
x-ms-documentdb-post-trigger-include
14. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Pricing
– Séparation throughput et volume
de stockage
– Incréments plus fins
• Collection partitionnée
• Global databases (geo-
réplication) (preview)
• Support MongoDB API (preview)
//BUILD 2016
14
22. Global Azure Bootcamp#GlobalAzure @AZUGFR PARIS - FRANCE
• Clés d’accès (256-bit)
– Clés maîtres : primaire, secondaire
– Deux jeux de clés : accès total, lecture seule
• Utilisateurs & Permissions
– Utilisateurs : définis au niveau base
– Droits (Mode) : All, Read
– Permission unique: Utilisateur – Droit – Collection/doc (_rid)
Sécurité
Simple, rapide, flexible
Limité dans les possibilités de requêtage, d’aggrégation, …
Schéma complexe, requêtage avancé
Pas de support de transactions entre documents
Accès en REST via HTTP, connexion directe en TCP, SDKs .NET, Node.js, Python, Javascript, Java, …
Toutes les informations dont on a besoin sont dans le document, pour ne pas avoir à parcourir plusieurs emplacements de la base de données à la recherche des bonnes relations.
C’est notamment grâce à cela qu’on a de telles performances.
Pas de schéma à priori. On stocke ce que l’on souhaite de la manière dont on le souhaite.
Cela permet d’être très agile et de rajouter des informations à la volée.
Ex : une application qui stocke des posts Facebook et Twitter peut utiliser le même store.
Self describing car on a le nom des propriétés directement dans le document,
Source: http://azure.microsoft.com/en-us/documentation/articles/documentdb-resources/#documents
You can insert, replace, delete, read, enumerate and query arbitrary JSON documents in a collection. DocumentDB does not mandate any schema and does not require secondary indexes in order to support querying over documents in a collection.
Being a truly open database service, DocumentDB does not invent any specialized data types (e.g. date time) or specific encodings for JSON documents. Note that DocumentDB does not require any special JSON conventions to codify the relationships among various documents; the SQL query language of DocumentDB provides very powerful hierarchical and relational query operators to query and project documents without any special annotations or need to codify relationships among documents using distinguished properties.
As with all other resources, documents can be created, replaced, deleted, read, enumerated and queried easily using either REST APIs or any of the client SDKs. Deleting a document instantly frees up the quota corresponding to all of the nested attachments. The read consistency level of documents follows the consistency policy on the database account. This policy can be overridden on a per-request basis depending on data consistency requirements of your application. When querying documents, the read consistency follows the indexing mode set on the collection. For “consistent”, this follows the account’s consistency policy.
1 base = infinité de collections. Porte les éléments liés à la sécurité
1 collection = 1 shard mais pas une table (ne pas tomber dans le piège). Pas de requêtes multi-collection. Porte des éléments d’extension, comme les procédures stockées, les triggers ou les user-defined functions, développé en JavaScript, ce qui est le plus logique pour du json.
1 fichier joint = stocké dans Azure Storage, en dehors de la collection mais avec un lien
L’index est automatique sur l’ensemble des champs. Le niveau de cohérence peut-être défini sur la collection ou par requête pour optimiser les performances.
Un langage puissant sur du non-relationnel, subset du langage SQL, avec ajouts réguliers
C’est certainement l’un des plus grands avantages de DocumentDB !
Server Code:
https://azure.microsoft.com/fr-fr/documentation/articles/documentdb-programming/
Self-Links:
https://azure.microsoft.com/fr-fr/blog/azure-documentdb-bids-fond-farewell-to-self-links/
Search:
https://azure.microsoft.com/fr-fr/blog/searching-for-text-with-documentdb/
Migration avec Data sample:
https://azure.microsoft.com/fr-fr/blog/import-sample-data-to-azure-documentdb/
https://azure.microsoft.com/fr-fr/blog/easily-transform-data-when-importing-to-azure-documentdb-2/
https://azure.microsoft.com/fr-fr/blog/load-data-into-azure-search-with-zero-code-required/
https://azure.microsoft.com/fr-fr/blog/import-geospatial-data-into-documentdb/
!! Download sqlsysclrtypes.msi (Microsoft.SqlServer.Types, Version=11.0.0.0) at http://www.microsoft.com/en-us/download/details.aspx?id=35580