DocumentDB SQL - Présentation
DocumentDB est la dernière plate-forme de base de données de documents NoSQL de Microsoft qui s'exécute sur Azure. Dans ce didacticiel, nous allons tout apprendre sur l'interrogation de documents à l'aide de la version spéciale de SQL prise en charge par DocumentDB.
Base de données de documents NoSQL
DocumentDB est la dernière base de données de documents NoSQL de Microsoft, cependant, quand nous parlons de base de données de documents NoSQL, qu'entendons-nous précisément par NoSQL et base de données de documents?
SQL signifie langage de requête structuré qui est un langage de requête traditionnel des bases de données relationnelles. SQL est souvent assimilé à des bases de données relationnelles.
Il est vraiment plus utile de considérer une base de données NoSQL comme une base de données non relationnelle, donc NoSQL signifie vraiment non relationnelle.
Il existe différents types de bases de données NoSQL qui incluent des magasins de valeurs clés tels que -
- Stockage de table Azure
- Magasins basés sur des colonnes, comme Cassandra
- Bases de données graphiques, comme NEO4
- Bases de données de documents, comme MongoDB et Azure DocumentDB
Pourquoi la syntaxe SQL?
Cela peut sembler étrange au début, mais dans DocumentDB qui est une base de données NoSQL, nous interrogeons en utilisant SQL. Comme mentionné ci-dessus, il s'agit d'une version spéciale de SQL enracinée dans la sémantique JSON et JavaScript.
SQL n'est qu'un langage, mais c'est aussi un langage très populaire, riche et expressif. Ainsi, il semble certainement être une bonne idée d'utiliser un dialecte de SQL plutôt que de proposer une toute nouvelle façon d'exprimer des requêtes que nous aurions besoin d'apprendre si vous vouliez extraire des documents de votre base de données.
SQL est conçu pour les bases de données relationnelles et DocumentDB est une base de données de documents non relationnelle. L'équipe DocumentDB a en fait adapté la syntaxe SQL pour le monde non relationnel des bases de données documentaires, et c'est ce que signifie l'enracinement de SQL en JSON et JavaScript.
Le langage se lit toujours comme du SQL familier, mais la sémantique est basée sur des documents JSON sans schéma plutôt que sur des tables relationnelles. Dans DocumentDB, nous travaillerons avec des types de données JavaScript plutôt qu'avec des types de données SQL. Nous connaîtrons SELECT, FROM, WHERE, etc., mais avec les types JavaScript, qui sont limités aux nombres et aux chaînes, les objets, les tableaux, les valeurs booléennes et nulles sont bien moins nombreux que le large éventail de types de données SQL.
De même, les expressions sont évaluées comme des expressions JavaScript plutôt que comme une forme de T-SQL. Par exemple, dans un monde de données dénormalisées, nous ne traitons pas des lignes et des colonnes, mais des documents sans schéma avec des structures hiérarchiques qui contiennent des tableaux et des objets imbriqués.
Comment fonctionne SQL?
L'équipe DocumentDB a répondu à cette question de plusieurs manières innovantes. Peu d'entre eux sont répertoriés comme suit -
Tout d'abord, en supposant que vous n'ayez pas modifié le comportement par défaut pour indexer automatiquement chaque propriété d'un document, vous pouvez utiliser la notation en pointillé dans vos requêtes pour naviguer dans un chemin vers n'importe quelle propriété, quelle que soit son imbrication dans le document.
Vous pouvez également effectuer une jointure intra-document dans laquelle des éléments de tableau imbriqués sont joints à leur élément parent dans un document d'une manière très similaire à la manière dont une jointure est effectuée entre deux tables dans le monde relationnel.
Vos requêtes peuvent renvoyer des documents de la base de données tels quels, ou vous pouvez projeter n'importe quelle forme JSON personnalisée de votre choix en fonction de la quantité ou du minimum de données de document que vous souhaitez.
SQL dans DocumentDB prend en charge de nombreux opérateurs courants, notamment -
Opérations arithmétiques et au niveau du bit
Logique ET et OU
Comparaisons d'égalité et de plage
Concaténation de chaînes
Le langage de requête prend également en charge une multitude de fonctions intégrées.