human
Mouvement MongoDB et NoSQL . Qu'est-ce qui est cassé avec les bases de données basées sur SQL, et quel problème Mongo et ses amis résolvent-ils ? Explique comme si j'avais cinq ans.
gpt
Les bases de données NoSQL ont vu le jour pour résoudre un certain nombre de nouveaux problèmes urgents dans le monde des bases de données. Les gens d' ITT ont fait du bon travail en expliquant un aspect des bases de données NoSQL , " sans schéma " , mais ont négligé quelques points clés : * * DENORMALISATION * * Le sale secret des bases de données SQL est qu'à une certaine échelle , les JOIN vont deviennent excessivement lents , du moins pour de nombreuses applications , donc ... vous devez commencer à dénormaliser les données . NoSQL est idéal pour représenter des données dénormalisées. Fondamentalement , dans une base de données SQL , si vous aviez des utilisateurs regroupés en groupes ( une relation plusieurs à plusieurs , chaque utilisateur peut avoir plusieurs groupes et chaque groupe plusieurs utilisateurs ) , vous pourriez avoir un schéma qui ressemble à ceci : users : user_id , nom_utilisateur , mot de passe groupes : id_groupe , nom_groupe utilisateurs_vers_groupes : id_utilisateur , id_groupe Pour savoir à quels groupes appartient un utilisateur , recherchez son id_utilisateur dans la table utilisateurs_vers_groupes et obtenez une liste des groupes auxquels il appartient . Cela se fait généralement avec une instruction " JOIN " dans SQL , permettant au serveur de base de données de " joindre " les tables et de les comparer . Cependant, à une certaine échelle, les JOIN deviendront très très coûteux en calcul, donc dans NoSQL (qui ne prend pas en charge les JOIN), vous pouvez simplement... mettre une liste de noms de groupes dans le document utilisateur, pour une recherche rapide. Mais si un utilisateur est supprimé d'un groupe, vous devez mettre à jour le document de l'utilisateur ainsi que le document du groupe, ou tout autre endroit où les données peuvent être stockées, si vous souhaitez rechercher des utilisateurs dans des groupes, par exemple. Ainsi, les applications NoSQL utiliseront fréquemment des méthodes telles que les mises à jour paresseuses (c'est-à-dire que lorsque je recherche des utilisateurs dans un groupe, je vérifie que les documents utilisateur sont tous cohérents et appartiennent au groupe, sinon corrigez cela) pour maintenir la cohérence des données, au niveau de l'application - couche , alors que les bases de données SQL traditionnelles gèrent tout cela pour vous ( si vos données sont correctement disposées ) la cohérence est dans certains cas) les schémas de réplication permettent aux bases de données NoSQL de s'adapter horizontalement (par exemple : Riak, Couchbase) : ce qui signifie que pour augmenter la capacité, il vous suffit d'ajouter plus de serveurs à votre cluster, pas plus de cœurs de processeur ou de RAM sur une seule machine. C'est moins cher et plus simple.