SQL est le moyen le plus préféré d'engager des bases de données relationnelles en ce qui concerne l'interrogation. Il est entendu que les utilisateurs auraient travaillé avec des bases de données relationnelles telles que MySQL et PostgreSQL qui utilisent la fonction d'interrogation SQL. Généralement, SQL est facile à comprendre et est donc devenu largement utilisé, en particulier dans les bases de données relationnelles.
Cependant, SQL est assez complexe lorsqu'il s'agit d'engager un large ensemble de documents dans une base de données. En un mot, il n'est pas destiné aux bases de données documentaires car il comporte un certain nombre de revers. Par exemple, vous ne pouvez pas interroger facilement les documents de tableau intégrés ou vous devrez plutôt concevoir un sous-programme pour itérer et filtrer les données renvoyées pour donner les résultats requis. Par conséquent, cela se traduira par un incrément de la durée d'exécution. Mais avoir une bonne compréhension de SQL fournira une meilleure base pour interagir avec MongoDB à partir d'un certain point plutôt que de partir de zéro.
Dans ce blog, nous utiliserons le programme Studio 3T pour montrer les différentes requêtes de jointure SQL et comment vous pouvez les reconcevoir en requêtes MongoDB pour obtenir de meilleures performances. Le programme peut être téléchargé à partir de ce lien.
Connexion SQL à MongoDB
Il existe plusieurs pilotes ou plutôt des interfaces à travers lesquelles vous pouvez utiliser SQL pour communiquer avec MongoDB, par exemple, ODBC. ODBC signifie Open Database Connectivity. Il s'agit simplement d'une interface qui permet aux applications d'accéder aux données dans les systèmes de gestion de base de données en utilisant SQL comme processus standard d'accès à ces données. Il est livré avec un avantage d'interopérabilité supplémentaire grâce auquel une seule application peut accéder à plusieurs systèmes de gestion de base de données.
Dans ce blog, nous allons produire et tester du code à partir de SQL puis l'optimiser via un éditeur d'agrégation pour produire une requête MongoDB.
Tableau de mappage pour SQL vers MongoDB
Avant d'entrer dans les détails, nous devons comprendre les relations de base entre ces 2 bases de données, en particulier les mots-clés dans le concept d'interrogation.
Terminologie et concepts
SQL | MongoDB |
---|---|
Table Ligne Colonne Jointures de table | Collection Document BSON Champ $lookup |
La clé primaire dans SQL définit une colonne unique qui organise essentiellement les lignes par ordre de temps d'enregistrement. D'autre part, la clé primaire dans MongoDB est un champ unique pour contenir un document et garantir que les champs indexés ne stockent pas de valeurs en double.
Plusieursnines Devenez un administrateur de base de données MongoDB – Amener MongoDB en productionDécouvrez ce que vous devez savoir pour déployer, surveiller, gérer et faire évoluer MongoDBDélécharger gratuitementCorrélation entre SQL et MongoDB
Supposons que nous ayons des données sur un étudiant et que nous souhaitions enregistrer ces données à la fois dans la base de données SQL et dans MongoDB. Nous pouvons définir un simple objet étudiant comme :
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Lors de la création d'une table SQL, nous devons définir les noms des colonnes et le type de données alors que dans MongoDB, une collection sera automatiquement créée lors de la première insertion.
Le tableau ci-dessous nous aidera à comprendre comment certaines instructions SQL peuvent être écrites dans MongoDB.
Instruction de schéma SQL | Instructions de schéma MongoDB |
---|---|
Pour insérer un document dans la base de données | Nous pouvons définir une conception de schéma en utilisant certains modules tels que mongoose et définir les champs comme un objet plutôt que d'insérer directement un document pour montrer la corrélation. L'identifiant de fichier principal sera généré automatiquement lors de l'insertion d'un document. Insertion d'un nouveau document pour créer la collection |
Utilisation de l'instruction ADD pour ajouter une nouvelle colonne à la table existante. | La structure des documents de collection n'est pas bien définie et met donc à jour les documents au niveau du document à l'aide de updateMany() |
Pour supprimer une colonne (unités) | Pour déposer un champ (unités) |
Déposer un tableau élèves | Pour déposer les élèves de collection |
Instruction SQL Select | Instructions de recherche MongoDB |
---|---|
Sélectionner toutes les lignes | Sélectionner tous les documents |
Pour renvoyer uniquement des colonnes spécifiques. | Pour renvoyer uniquement des champs spécifiques. Par défaut, le champ _id est renvoyé sauf indication contraire dans le processus de projection. Définir le _id :0 signifie que seul le document renvoyé aura le nom et les valeurs d'objet de note uniquement. |
Pour sélectionner des lignes spécifiques avec une valeur de colonne correspondante. | Pour sélectionner des documents spécifiques avec une valeur de champ correspondante. |
Sélection de lignes avec une colonne dont les valeurs ont des caractères comme valeur de critère fournie | Sélection de documents avec un champ dont les valeurs ont des caractères comme valeur de critère fournie |
Pour renvoyer les lignes dans un ordre croissant à l'aide de la clé primaire. | Renvoyer les documents dans un ordre croissant à l'aide de la clé primaire |
Pour regrouper les lignes renvoyées conformément à une colonne (note) | Pour regrouper les documents retournés en fonction d'un champ (grade) |
Limiter le nombre de lignes renvoyées et en ignorer certaines | Limiter le nombre de documents retournés et sauter des lignes |
Une option essentielle est de savoir comment notre requête est exécutée, donc utilisez la méthode d'explication. | |
Instruction de mise à jour SQL | Déclarations de mise à jour de MongoDB |
---|---|
Mettre à jour la colonne des notes pour les élèves dont l'âge est égal ou supérieur à 15 ans | Ici, nous utilisons des opérateurs tels que $gt, $lt et $lte. |
Incrémenter une valeur de colonne | |
Instruction de suppression SQL | MongoDB supprime les déclarations |
---|---|
Pour supprimer toutes les lignes | Pour supprimer tous les documents. |
Pour supprimer une ligne spécifique où une colonne a une valeur spécifique. | |
Cet exemple de tableau de mappage vous permettra de mieux comprendre ce que nous allons apprendre dans notre prochain sujet.
SQL et Studio 3T
Studio 3T est l'un des programmes disponibles qui permet de connecter SQL et MongoDB. Il a une fonctionnalité de requête SQL pour en améliorer une pour manipuler SQL. La requête est interprétée dans le shell Mongo pour produire un code de requête simple dans l'équivalent du langage MongoDB. En plus de faire des requêtes simples, l'application Studio 3T peut maintenant faire des jointures.
Pour nos exemples de données ci-dessus, après avoir connecté votre base de données dans Studio 3T, nous pouvons utiliser la fenêtre SQL pour trouver le document qui correspond à nos critères, c'est-à-dire :
SELECT * FROM students WHERE name LIKE 'James%';
Si vous avez un document avec un champ de nom défini sur la valeur James, il sera renvoyé. De même, si vous cliquez sur l'onglet du code de requête, une fenêtre avec le code MongoDB équivalent s'affichera. Pour la déclaration ci-dessus, nous aurons :
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Résumé
Parfois, vous voudrez peut-être un moyen rapide d'interagir avec MongoDB à partir des connaissances que vous avez sur SQL. Nous avons appris quelques similitudes de code de base entre SQL et son équivalent dans MongoDB. De plus, certains programmes tels que Studio 3T disposent d'outils bien établis pour convertir la requête SQL en langage équivalent MongoDB et affiner cette requête pour de meilleurs résultats. Eh bien, pour la plupart d'entre nous, ce sera un excellent outil pour faciliter notre travail et garantir que le code que nous avons à la fin est très optimal pour les performances de notre base de données. Dans la partie 2 de ce blog, nous allons en savoir plus sur SQL INNER JOIN dans MongoDB.