web-dev-qa-db-fra.com

Scénarios d'utilisation de NoSQL ou QUAND utiliser NoSQL

Avec tout ce battage publicitaire, il semble vraiment difficile de trouver des informations fiables sur le moment opportun pour utiliser ceci. Je pose donc les questions suivantes et je suis désolé si ce sont des questions vraiment stupides à l’avance:

  1. Devrais-je utiliser NoSQL pour les données utilisateur? Par exemple. profils, noms d'utilisateur + mots de passe, etc.
  2. Devrais-je utiliser NoSQL pour du contenu important? Par exemple. articles, articles de blog, inventaire de produits, etc.

Je suppose non? Et je pense que NoSQL est juste pour les choses rapidement accessibles d'où perdre des données. Mais j'ai aussi lu que les applications NoSQL ont une redondance intégrée pour que je ne perde pas de données?

De plus, si les 2 exemples ci-dessus sont incorrects, pouvez-vous me donner des cas d'utilisation spécifiques dans lesquels j'utiliserais NoSQL? Je vois beaucoup de descriptions générales mais pas beaucoup d'exemples réels. Les seules choses auxquelles je peux penser sont la messagerie et l'analyse entre utilisateurs.

Merci!

233
user1389722

C'est vraiment une question "ça dépend". Quelques points généraux :

  • NoSQL est généralement utile pour les données non structurées/"sans schéma" - en général, vous n'avez pas besoin de définir explicitement votre schéma à l'avance et pouvez simplement inclure de nouveaux champs sans cérémonie.
  • NoSQL privilégie généralement un schéma dénormalisé en raison de l'absence de prise en charge des JOIN par le monde du SGBDR. Ainsi, vous obtenez généralement une représentation aplatie et dénormalisée de vos données.
  • L'utilisation de NoSQL ne signifie pas que vous pourriez perdre des données. Différentes bases de données ont des stratégies différentes. par exemple. MongoDB - vous pouvez essentiellement choisir le niveau de compromis entre performance et potentiel de perte de données - performances optimales = plus grande portée pour la perte de données.
  • Il est souvent très facile de faire évoluer les solutions NoSQL. L'ajout de plusieurs nœuds pour répliquer des données est un moyen pour a) offrir plus d'évolutivité et b) offrir plus de protection contre la perte de données si un nœud tombe en panne. Mais encore une fois, dépend de la base de données NoSQL/configuration. NoSQL ne signifie pas nécessairement "perte de données" comme vous le supposez.
  • IMHO, les requêtes/rapports complexes/dynamiques sont mieux servies à partir d'un SGBDR. La fonctionnalité de requête pour une base de données NoSQL est souvent limitée.
  • Il n'est pas nécessaire que ce soit un 1 ou l'autre choix. Mon expérience utilise SGBDR conjointement avec NoSQL pour certains cas d'utilisation.
  • Les bases de données NoSQL n'ont souvent pas la capacité d'effectuer des opérations atomiques sur plusieurs "tables".

Vous devez vraiment examiner et comprendre quels sont les différents types de magasins NoSQL, comment ils procurent l’extensibilité/la sécurité des données, etc. .

Pour MongoDb à titre d’exemple, consultez leurs cas d’utilisation pour voir ce qu’ils suggèrent comme étant des utilisations "bien adaptées" et "moins adaptées" de MongoDb.

165
AdaTheDev

Je pense que Nosql est "plus approprié" dans ces scénarios au moins (plus de complément est le bienvenu)

  1. Facile à mettre à l'échelle en ajoutant simplement plus de nœuds.

  2. Requête sur un grand ensemble de données

    Imaginez des tonnes de tweets postés sur Twitter tous les jours. Dans RDMS, il peut y avoir des tables avec des millions (ou des milliards?) De lignes, et vous ne voulez pas interroger directement ces tables, sans même mentionner que, la plupart du temps, les jointures de table sont également nécessaires pour les requêtes complexes.

  3. Goulot d'étranglement d'E/S de disque

    Si un site Web doit envoyer des résultats à différents utilisateurs en fonction de leurs informations en temps réel, nous parlons probablement de dizaines, voire de centaines de milliers, de requêtes de lecture/écriture SQL par seconde. Alors le disque i/o sera un goulot d'étranglement sérieux.

7
otm