Il n’existe pas de NoSQL!
NoSQL est un mot à la mode.
Pendant des décennies, quand les gens parlaient de bases de données, ils parlaient de bases de données relationnelles. Et quand les gens parlaient de bases de données relationnelles, ils parlaient de ceux que vous contrôlez avec le langage de requête structuré d'Edgar F. Codd. Stocker les données d'une autre manière? La démence! Tout le reste n'est que des fichiers plats.
Mais au cours des dernières années, les gens ont commencé à remettre en question ce dogme. Les gens se demandaient si les tableaux avec des lignes et des colonnes étaient vraiment le seul moyen de représenter des données. Les gens ont commencé à réfléchir et à coder, et ont proposé de nombreux nouveaux concepts pour organiser les données. Et ils ont commencé à créer de nouveaux systèmes de bases de données conçus pour ces nouvelles façons de travailler avec les données.
Les philosophies de toutes ces bases de données étaient différentes. Mais une chose que toutes ces bases de données avaient en commun, était que le langage de requête structuré n'était plus un bon moyen de les utiliser. Ainsi, chaque base de données a remplacé SQL par ses propres langages de requête. C'est ainsi que le terme NoSQL est né, en tant qu'étiquette pour toutes les technologies de base de données qui défient le modèle de base de données relationnelle classique.
Alors, qu'est-ce que les bases de données NoSQL ont en commun?
En fait, pas grand-chose.
Vous entendez souvent des phrases comme:
- NoSQL est évolutif!
- NoSQL est pour BigData!
- NoSQL viole ACID!
- NoSQL est un magasin clé / valeur glorifié!
Est-ce vrai? Eh bien, certaines de ces déclarations peuvent être vraies pour certaines bases de données communément appelées NoSQL, mais chacune d'entre elles est également fausse pour au moins une autre. En fait, la seule chose que les bases de données NoSQL ont en commun, c'est que ce sont des bases de données qui n'utilisent pas SQL. C'est tout. La seule chose qui les définit est ce qui les distingue les uns des autres.
Alors, qu'est-ce qui distingue les bases de données NoSQL?
Nous avons donc précisé que toutes ces bases de données communément appelées NoSQL sont trop différentes pour les évaluer ensemble. Chacun d'entre eux doit être évalué séparément pour décider s'ils conviennent bien pour résoudre un problème spécifique. Mais par où commencer? Heureusement, les bases de données NoSQL peuvent être regroupées dans certaines catégories, qui conviennent à différents cas d'utilisation:
Orienté document
Exemples: MongoDB, CouchDB
Points forts: Données hétérogènes, travail orienté objet, développement agile
Leur avantage est qu'ils ne nécessitent pas une structure de données cohérente. Ils sont utiles lorsque vos besoins et donc la mise en page de votre base de données changent constamment, ou lorsque vous avez affaire à des ensembles de données qui vont ensemble mais qui ont toujours une apparence très différente. Lorsque vous avez un grand nombre de tables avec deux colonnes appelées «clé» et «valeur», cela peut valoir la peine d'être examiné.
Bases de données graphiques
Exemples: Neo4j, GiraffeDB.
Points forts: exploration de données
Alors que la plupart des bases de données NoSQL abandonnent le concept de gestion des relations de données, ces bases de données l'adoptent encore plus que ces soi-disant bases de données relationnelles.
Leur objectif est de définir les données par leur relation avec d'autres données. Lorsque vous avez beaucoup de tables avec des clés primaires qui sont les clés primaires de deux autres tables (et peut-être des données décrivant la relation entre elles), alors celles-ci pourraient être quelque chose pour vous.
Magasins de valeurs clés
Exemples: Redis, Cassandra, MemcacheDB
Points forts: recherche rapide des valeurs par clés connues
Ils sont très simplistes, mais cela les rend rapides et faciles à utiliser. Lorsque vous n'avez pas besoin de procédures stockées, de contraintes, de déclencheurs et de toutes ces fonctionnalités de base de données avancées et que vous voulez simplement un stockage et une récupération rapides de vos données, alors ce sont pour vous.
Malheureusement, ils supposent que vous savez exactement ce que vous recherchez. Vous avez besoin du profil User157641? Pas de problème, cela ne prendra que quelques microsecondes. Mais que se passe-t-il lorsque vous voulez connaître les noms de tous les utilisateurs âgés de 16 à 24 ans, avoir des «gaufres» comme nourriture préférée et se connecter au cours des dernières 24 heures? Mauvais chance. Lorsque vous ne disposez pas d'une clé définie et unique pour un résultat spécifique, vous ne pouvez pas la sortir de votre magasin KV aussi facilement.
SQL est-il obsolète?
Certains partisans de NoSQL affirment que leur base de données NoSQL préférée est la nouvelle façon de faire les choses, et SQL appartient au passé.
Ont-ils raison?
Non, bien sûr qu'ils ne le sont pas. Bien qu'il y ait des problèmes pour lesquels SQL ne convient pas, il a toujours ses avantages. De nombreux modèles de données sont simplement mieux représentés comme un ensemble de tableaux qui se référencent les uns les autres. Surtout parce que la plupart des programmeurs de bases de données ont été formés pendant des décennies à penser les données de manière relationnelle, et essayant d'imposer cet état d'esprit à une nouvelle technologie qui n'était pas faite pour cela se termine rarement bien.
Les bases de données NoSQL ne remplacent pas SQL - elles constituent une alternative.
La plupart des écosystèmes logiciels autour des différentes bases de données NoSQL ne sont pas encore aussi matures. Bien qu'il y ait des progrès, vous n'avez toujours pas d'outils supplémentaires aussi matures et puissants que ceux disponibles pour les bases de données SQL populaires.
De plus, il y a beaucoup plus de savoir-faire pour SQL. Des générations d'informaticiens ont consacré des décennies de leur carrière à la recherche se concentrant sur les bases de données relationnelles, et cela montre: La littérature écrite sur les bases de données SQL et la modélisation de données relationnelles, à la fois pratiques et théoriques, pourrait remplir plusieurs bibliothèques pleines de livres. Comment créer une base de données relationnelle pour vos données est un sujet si bien documenté qu'il est difficile de trouver un cas d'angle où il n'y a pas de bonnes pratiques généralement acceptées.
La plupart des bases de données NoSQL, en revanche, en sont encore à leurs balbutiements. Nous cherchons toujours la meilleure façon de les utiliser.