Utilisations générales
Si vous avez des structures de données qui ne sont pas clairement définies au moment où vous créez le système. J'ai tendance à conserver les paramètres utilisateur dans nosql, par exemple. Un autre exemple était un système où les utilisateurs devaient pouvoir ajouter des champs au moment de l'exécution - très douloureux dans un SGBDR et un jeu d'enfant dans NoSQL.
Si la structure de votre modèle est largement centrée sur un ou quelques objets de modèle et que la plupart des relations sont en fait des objets enfants des objets de modèle principaux. Dans ce cas, vous constaterez que vous aurez assez peu besoin de jointures réelles. J'ai trouvé que le système de gestion des contacts peut être implémenté assez bien dans nosql par exemple. Une personne peut avoir plusieurs adresses, téléphones et e-mails. Au lieu de les mettre chacun dans une table séparée, ils font tous partie du même modèle et vous avez un objet personne.
Si vous souhaitez bénéficier du clustering de vos données sur plusieurs serveurs plutôt que d'avoir un serveur monolithique, ce qui est généralement requis par le SGBDR.
Mise en cache. Même si vous souhaitez vous en tenir à un SGBDR comme base de données principale, il peut être utile d'utiliser une base de données NoSQL pour mettre en cache les résultats des requêtes ou conserver des données, telles que des compteurs.
Stockage de documents. Si vous souhaitez stocker des documents cohérents, dans une base de données, certaines des bases de données NoSQL (telles que MongoDB) sont en fait spécialisées dans leur stockage.
Et les jointures?
Honnêtement, la chose sans jointure me semblait aussi assez effrayante au début. Mais l'astuce consiste à arrêter de penser en SQL. Vous devez réellement penser à l'objet que vous avez en mémoire lorsque vous exécutez votre application. Celles-ci devraient plus ou moins être simplement enregistrées dans la base de données NoSQL au fur et à mesure de leur superficie.
Parce que vous pouvez stocker votre graphique d'objet complet, avec des objets enfants, la plupart des besoins de jointures sont éliminés. Et si vous trouvez que vous en avez besoin, vous devrez mordre la balle et récupérer les deux objets et joindre votre code d'application.
Heureusement, la plupart des pilotes peuvent effectuer la jointure pour vous, si vous configurez correctement votre schéma.
Pour plus de lecture, je recommande réellement Martin Fowler .
Dans certains cas, vous n'aurez pas besoin de clés étrangères. Par exemple:
peut être aussi simple que de charger la
comments
partie d'un document correspondant à un utilisateur. C'est ce qu'on appelle la dénormalisation : au lieu d'avoir deux ensembles avec une jointure, vous avez un document et tout ce dont vous avez besoin se trouve à l'intérieur du document. Une requête, pas de jointures, de meilleures performances .Mais dans certaines circonstances, cela peut entraîner une duplication des données , donc la liaison d'un document à un autre peut être appropriée. Dans ce cas, vous pouvez être intéressé par la normalisation MongoDB, la clé étrangère et la jointure , la page Références de base de données et en particulier la fonction DBRefs.
la source