2012-05-02 4 views
1

Un gros avantage du SGBDR est SQL comme langage de requête très déclaratif et puissant. Je sais que MongoDB a un langage de requête, mais il ne couvre pas les jointures. Est-ce que quelqu'un a essayé de faire un langage de requête avancé pour MongoDB queLangage de requête avancé pour MongoDB

a) Les poignées de joindre à travers différentes collections?

b) Handles se connecte intelligemment en examinant les index dans les collections et la cardinalité des index, c'est-à-dire en simulant la planification des requêtes dans SQL?

Il semble que vous devriez être capable d'écrire un langage de requête de niveau supérieur qui utilise (b) pour afficher intelligemment une combinaison de code Javascript et de requêtes natives Mongo qui effectuent (a).

+0

jetez un oeil à ceci: http://stackoverflow.com/questions/4067197/mongodb-and-joins – c0deNinja

Répondre

10

1) MongoDB possède la "planification de requête". Il does it a little differently though. Il diffuse diverses options pour exécuter la même requête en parallèle et voit celle qui se termine en premier, puis la mémorise et l'utilise en tant que plan compilé pendant un moment, puis réexécute le test pour tenir compte des changements dans les données, etc. JOINDRE les collections fera que Mongo exécutera le hachage et fusionnera entre les différents noeuds, ce qui ralentira les autres clients. il était clairement une décision consciente de ne pas autoriser les requêtes comme celle-ci et de la pousser vers les applications. Vous construisez vos documents pour que vous ayez tout ce dont vous avez besoin (support for nested documents) ou vous faites vos jointures dans le client

Dernier point, mais non le moindre, il y a eu une tentative de création d'un langage de requête unifié à travers les bases de données NoSQL - UnQL - mais avec une telle différence entre les bases de données orientées colonne, document, valeur-clé et graphe, il y a tellement de choses à faire pour généraliser le processus d'interrogation des données.

Et un peu plus sur le sujet: