Il n'y a pas une telle chose comme NoSQL!
Le NoSQL est un mot à la mode.
Pendant des décennies, quand les gens parlaient de bases de données, qu'ils voulaient dire les bases de données relationnelles. Et quand les gens parlaient de bases de données relationnelles, ils, ceux que vous contrôlez avec Edgar F. Codd est Structuré Langage de Requête. Le stockage des données d'une autre façon? De la folie! Autre chose c'est juste flatfiles.
Mais depuis quelques années, les gens ont commencé à remettre en question ce dogme. Les gens se demandaient si les tableaux avec les lignes et les colonnes sont vraiment la seule façon de représenter les données. Les gens ont commencé à penser et de codage, et est venu avec de nombreux nouveaux concepts de la façon dont les données pourraient être organisées. Et ils ont commencé à créer de nouveaux systèmes de base de données conçu pour ces nouvelles façons de travailler avec les données.
Les philosophies de toutes ces bases de données sont différentes. Mais une chose que toutes ces bases de données ont en commun, est que le Langage d'interrogation Structuré n'était plus un bon ajustement pour les utiliser. De sorte que chaque base de données remplacé SQL avec leurs propres langages de requête. Et donc, le terme NoSQL est né, comme une étiquette, pour toutes les technologies de base de données, qui défient le classique modèle de base de données relationnelle.
Alors, que font les bases de données NoSQL ont en commun?
En fait, pas beaucoup.
On entend souvent des phrases comme:
- Le NoSQL est évolutive!
- Le NoSQL est pour BigData!
- NoSQL viole l'ACIDE!
- Le NoSQL est une simple clé/valeur en magasin!
Est-ce vrai? Ainsi, certaines de ces déclarations est peut-être vrai pour certaines bases de données communément appelé NoSQL, mais chacun est aussi faux pour au moins un autre. En fait, la seule chose que les bases de données NoSQL ont en commun, c'est qu'ils sont des bases de données qui ne sont pas de l'utilisation de SQL. C'est tout. La seule chose qui les définit est ce qui les distingue les uns des autres.
Donc ce qui définit les bases de données NoSQL en dehors?
Nous avons donc clair que tous ces bases de données communément appelé NoSQL sont trop différents pour évaluer leur ensemble. Chacun d'eux doit être évaluée séparément pour décider s'ils sont un bon ajustement pour résoudre un problème spécifique. Mais où allons-nous commencer? Heureusement, les bases de données NoSQL peuvent être regroupées en différentes catégories, qui sont adaptés à différents cas d'utilisation:
Orientée Document
Exemples: MongoDB, CouchDB
Points forts: Hétérogène des données, du travail orientée objet, de développement agile
Leur avantage est qu'ils ne nécessitent pas de données cohérentes de la structure. Ils sont utiles lors de vos exigences et donc à votre disposition de base de données en constante évolution, ou lorsque vous traitez avec des ensembles de données qui vont ensemble, mais encore une apparence très différente. Lorsque vous avez beaucoup de tableaux à deux colonnes appelées "clés" et "valeur", alors ce pourrait être intéressant de regarder dans.
Graphique de bases de données
Exemples: Neo4j, GiraffeDB.
Points Forts: L'Exploration De Données
Alors que la plupart des bases de données NoSQL d'abandonner le concept de la gestion des données de relations, ces bases de données de l'embrasser encore plus que les soi-disant bases de données relationnelles.
Leur objectif est de définir les données par sa relation à d'autres données. Lorsque vous avez beaucoup de tables avec des clés primaires qui sont les clés primaires des deux autres tables (et peut-être que certaines données décrivant la relation entre eux), alors il pourrait être quelque chose pour vous.
Clé-Valeur Des Magasins
Exemples: Redis, Cassandra, MemcacheDB
Points forts: la recherche Rapide de valeurs par des touches de
Ils sont très simplistes, mais qui le rend rapide et facile à utiliser. Lorsque vous n'avez pas besoin pour les procédures stockées, les contraintes, les déclencheurs et tous ceux avancés fonctionnalités de base de données et vous voulez juste rapide de stockage et de récupération de vos données, puis ceux-ci sont pour vous.
Malheureusement, ils supposent que vous savez exactement ce que vous cherchez. Vous devez le profil de User157641? Pas de problème, ne prendra que quelques microsecondes. Mais ce que quand vous voulez les noms de tous les utilisateurs qui sont âgés entre 16 et 24 ans, ont "gaufres" que leurs aliments préférés et connecté dans les dernières 24 heures? Pas de chance. Lorsque vous n'avez pas défini et unique clé pour obtenir un résultat précis, vous ne pouvez pas sortir de votre K-V stocker facilement.
Est SQL obsolète?
Certains NoSQL ses partisans affirment que leur favori base de données NoSQL est la nouvelle façon de faire les choses, et SQL est une chose du passé.
Sont-ils de droite?
Non, bien sûr, ils ne le sont pas. Bien qu'il existe des problèmes de SQL n'est pas adapté, il reste encore de ses forces. Beaucoup de modèles de données sont tout simplement les mieux représentés que d'une collection de tableaux qui font référence les uns aux autres. Surtout parce que la plupart de la base de données programmeurs ont été formés pour les décennies à penser de données d'une manière relationnelle, et d'essayer d'appuyer sur cet état d'esprit sur une nouvelle technologie qui n'est pas fait pour qu'il se termine rarement bien.
Les bases de données NoSQL ne sont pas un remplacement pour SQL - ils sont une alternative.
La plupart des logiciels écosystèmes à travers les différentes bases de données NoSQL ne sont pas encore à maturité. Alors qu'il y a des progrès, vous n'avez toujours pas trouvé d'outils supplémentaires qui sont mature et puissant que les populaire de bases de données SQL.
Aussi, il y a beaucoup plus de savoir-faire pour SQL autour. Des générations de chercheurs en informatique ont passé des dizaines d'années de leur carrière dans la recherche en se concentrant sur les bases de données relationnelles, et ça se voit: La littérature écrite sur les bases de données SQL et relationnelle de la modélisation des données, à la fois pratique et théorique, pourrait remplir plusieurs bibliothèques pleines de livres. Comment construire une base de données relationnelle pour vos données est un sujet bien documenté, il est difficile de trouver un coin pour les cas où il n'y a pas généralement acceptée par le livre des meilleures pratiques.
La plupart des bases de données NoSQL, d'autre part, sont encore à leurs balbutiements. Nous sommes encore à essayer de comprendre la meilleure façon de les utiliser.
C'est un article que j'ai écrit sur mon blog.