174 votes

Qu'est-ce que NoSQL, comment ça fonctionne, et quels sont les avantages-t-il?

J'ai entendu des choses sur le NoSQL et qu'il peut par la suite devenir le remplacement de SQL DB méthodes de stockage en raison du fait que DB interaction est souvent un goulot d'étranglement pour la vitesse sur le web.

Donc j'ai juste quelques questions:

  1. Qu'est-il exactement?

  2. Comment ça fonctionne?

  3. Pourquoi en serait-il de mieux que d'utiliser une Base de données SQL? Et quelle est-elle?

  4. La technologie est trop récente pour commencer à mettre en œuvre mais ou est-il la peine de prendre un coup d'oeil?

149voto

Philipp Points 22441

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.

113voto

Michael Borgwardt Points 181658
  1. Qu'est-il exactement?

    D'une part, un système spécifique, mais il est également devenu un terme générique pour une variété de nouvelles stockage de données, serveurs d'arrière-plan qui ne suivent pas le modèle relationnel.

  2. Comment ça fonctionne?

    Chacun des systèmes étiquetés avec le nom générique fonctionne différemment, mais l'idée de base est d'offrir une meilleure évolutivité et les performances en utilisant DB modèles qui ne prennent pas en charge toutes les fonctionnalités d'un générique de SGBDR, mais encore suffisamment de fonctionnalités pour être utile. Dans un sens, c'est comme MySQL, qui à un moment manque de soutien pour les transactions, mais, exactement à cause de cette, est parvenu à surpasser les autres systèmes DB. Si vous pouvez écrire votre application ne nécessite pas de transactions, c'était génial.

  3. Pourquoi en serait-il de mieux que d'utiliser une Base de données SQL? Et quelle est-elle?

    Il serait préférable que votre site doit à l'échelle massivement que le meilleur SGBDR en cours d'exécution sur le meilleur matériel que vous pouvez vous permettre et optimisé autant que possible de simplement ne pouvez pas maintenir en place avec la charge. Comment beaucoup mieux dépend des cas d'utilisation spécifiques (beaucoup de mise à jour de l'activité, combinée avec beaucoup de jointures est très dur sur les "traditionnels" des Sgbdr) - pourrait bien être un facteur de 1000 dans les cas extrêmes.

  4. La technologie est trop récente pour commencer à mettre en œuvre mais ou est-il la peine de prendre un coup d'oeil?

    Dépend principalement de ce que vous essayez d'atteindre. C'est certainement suffisamment mature pour l'utilisation. Mais peu de demandes vraiment besoin d'échelle que massivement. Pour la plupart, un traditionnel SGBDR est suffisant. Cependant, avec l'utilisation d'internet devient de plus en plus omniprésent tout le temps, il est très probable que les applications qui ne deviendront plus fréquents (mais probablement pas de position dominante).

28voto

Carlo Strozzi Points 261

Puisque quelqu'un m'a dit que mon post précédent était hors-sujet, je vais essayer de compenser :-) NoSQL n'est pas, et n'a jamais été destiné à être un remplacement pour plus d'intégrer des bases de données SQL, mais un couple de mots sont dans l'ordre pour obtenir les choses dans la bonne perspective.

Au cœur de la NoSQL philosophie se trouve la considération que, éventuellement, à des fins commerciales et des raisons de portabilité, SQL moteurs ont tendance à ignorer la formidable puissance du système d'exploitation UNIX et ses dérivés.

Avec un système de fichiers de base de données, vous pouvez profiter immédiatement de l'augmentation constante des capacités et la puissance du sous-jacent système d'exploitation, qui ont été en constante augmentation depuis de nombreuses années maintenant, en conformité avec la loi de Moore. Avec cette approche, de nombreux exploitation-système de commandes sont automatiquement aussi "opérateurs de base de données" ("ls" "trier", "trouver", et l'autre d'innombrables shell UNIX utilitaires).

Avec cela à l'esprit, et un peu de créativité, vous pouvez, en effet, concevoir un système de fichiers de base de données qui est capable de surmonter les limitations de nombreuses communes SQL moteurs, au moins pour certains modèles d'utilisation, qui est l'ensemble de point derrière le NoSQL est de la philosophie, de la façon dont je le vois.

- Je exécuter des centaines de sites web et ils utilisent tous NoSQL à une plus ou moins grande mesure. En fait, ils n'hébergent pas d'énormes quantités de données, mais même si certains d'entre eux l'ont fait, je pourrais sans doute penser à une utilisation créative de NoSQL et le système de fichiers pour surmonter les goulots d'étranglement. Quelque chose qui serait susceptible d'être plus difficile avec SQL traditionnelles "prisons". Je vous exhorte à google pour "unix", "manis" et "shaffer" pour comprendre ce que je veux dire.

9voto

CoderTao Points 2107

Si je me souviens bien, il fait référence à des types de bases de données qui ne sont pas nécessairement suivre la forme relationnelle. Document de bases de données viennent à l'esprit, bases de données, sans une structure spécifique, et qui n'utilisent pas le SQL comme langage de requête.

Il est généralement mieux pour les applications web qui s'appuient sur les performances de la base de données, et n'ont pas besoin de fonctionnalités plus avancées de la Relation Moteurs de Base de données. Par exemple, une Clé->Valeur magasin offrant une simple requête par l'id de l'interface peut être de 10 à 100 fois plus rapide que le correspondant de mise en œuvre SQL server, avec une baisse de développeur de coût de maintenance.

Un exemple en est ce papier pour un OLTP Tuple Magasin, qui a sacrifié des transactions pour les mono-thread de traitement (pas de problèmes de simultanéité, car pas de concurrence d'accès autorisé), et gardé toutes les données dans la mémoire; la réalisation de 10-100x mieux performance par rapport à un autre SGBD système de moteur. Fondamentalement, il s'éloigne de la "One Size Fits All" de SQL et des bases de données.

7voto

Gopi Nathan Points 41

Dans la pratique, le NoSQL est un système de base de données qui prend en charge l'accès rapide à de grands objets binaires (doc, jpg, etc) à l'aide d'une clé d'accès basé sur la stratégie. C'est un départ de la traditionnelle SQL d'accès qui n'est assez bon pour les valeurs alphanumériques. Non seulement le stockage interne et la stratégie d'accès mais aussi la syntaxe et les limitations du format d'affichage de la limite de la traditionnelle SQL. BLOB implémentations traditionnelles de bases de données relationnelles trop souffrir de ces restrictions.

Derrière la scène, il est indirectement un aveu de l'échec du modèle SQL pour soutenir toute forme de OLTP ou support de nouveaux formats. "Support" ne signifie pas seulement le magasin, mais l'accès complet des capacités de programmation et de querywise l'aide du modèle standard.

Relationnel amateurs ont pas tardé à modifier la définition de NoSQL de Non-SQL pour Pas-Seulement-SQL pour garder SQL encore dans l'image! Ce n'est pas bon surtout quand on voit que la plupart des programmes Java aujourd'hui recours à des ORM cartographie du modèle relationnel sous-jacent. Un nouveau concept doit avoir une claire définition. Sinon il va finir comme la SOA.

La base de la NoSQL systèmes réside dans l'aléatoire de la paire clé - valeur. Mais ce n'est pas nouveau. Des bases de données traditionnelles comme les systèmes IMS et IDMS n'soutien haché aléatoire clés (sans avoir recours à des index) et ils continuent de le faire. En fait, IDMS a déjà un mot-clé NONSQL où ils prennent en charge SQL accès à leur réseau plus anciens de la base de données qu'ils ont appelé comme NONSQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X