Rappel des différents services de stockage NoSQL présents dans Microsoft Azure, puis approfondissement du service DocumentDB, ses fonctionnalités ainsi que les options d'administration.
2. #JSS2015
Les journées
SQL Server 2015
Un événement organisé par GUSS
DocumentDB & NoSQL
Jean-Luc Boucho
Architecte, Infosys
MVP Azure @JeanLucBoucho
Benjamin Talmard
Technical Evangelist Azure, Microsoft
@Benjiiim
4. #JSS2015
La communauté Data & BI Microsoft
Webcasts, Conférences, Afterworks
http://GUSS.pro
Session donnée pour
@GUSS_FRANCE
/GUSS
/GUSS.FR
#JSS2015
Les journées
SQL Server 2015
5. #JSS2015
AZUGFR
Azure User Group France, Communauté
Microsoft Azure francophone.
Echange de conseils techniques, et de retour
d'expériences autour de la plateforme de cloud
computing de Microsoft.
16 Avril
6. #JSS2015
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
8. #JSS2015
Les familles de bases de données noSQL
• Column Family Stores
Column Family
Row 1
Row Key
Column1
Name1: Value1
ColumnN
NameN: ValueN
Row N
Row Key
Column2
Name2: Value2
ColumnN
NameN: ValueN
9. #JSS2015
Les familles de bases de données noSQL
• Document database
Document
Articles
Title Comment
CommentURL
Title CommentAuthor
URL Author
Author
10. #JSS2015
Les familles de bases de données noSQL
• Graph Databases
John
Eddie
Karl
manages
manages
reports_for_project
11. #JSS2015
Azure DocumentDB
« Azure DocumentDB is a NoSQL document
database managed service designed for high
performance, scalability and flexibility. »
13. #JSS2015
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
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
MSN :
425 million d’utilisateurs uniques globalement.
Plus de 40 applications avec des besoins en lecture et écriture exigeants.
News Republic
Agrégation des news provenant de multiples sources.
Stockent énormément de données, ont des exigences en terme de performances et de flexibilité.
Real Madrid
Capturent chacune des interactions entre la marque et ses 450 millions de fans (interaction sur les réseaux sociaux, achat de produits dérivés, modification du profil sur le site du club, …) et stocke tout cela dans DocumentDB
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.
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 !
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
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
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/