Qu'est-ce NoSQL, comment fonctionne-t-il, et les avantages qu'elle offre? [fermé]

StackOverflow https://stackoverflow.com/questions/1145726

  •  16-09-2019
  •  | 
  •  

Question

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

J'ai donc quelques questions:

  1. Qu'est-ce exactement?

  2. Comment ça marche?

  3. Pourquoi serait-il mieux que d'utiliser une base de données SQL? Et combien est-il mieux?

  4. La technologie est trop nouvelle pour commencer la mise en œuvre encore ou est-il utile de jeter un coup d'oeil dans?

Était-ce utile?

La solution

  1. Qu'est-ce exactement?

    D'une part, un spécifique système , mais il est aussi devenu un mot générique pour une variété de nouveau backend de stockage de données qui ne suivent pas le modèle de base de données relationnelle.

  2. Comment ça marche?

    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 des modèles DB qui ne supportent pas toutes les fonctionnalités d'un SGBDR générique, mais la fonctionnalité encore assez pour être utile . D'une certaine manière, il est comme MySQL, qui à un moment manqué support des transactions, mais, exactement parce que de cela, a réussi à surpasser les autres systèmes DB. Si vous pouvez écrire votre application d'une manière qui n'a pas besoin d'opérations, il était grand.

  3. Pourquoi serait-il mieux que d'utiliser une base de données SQL? Et combien est-il mieux?

    Il serait préférable lorsque votre site a besoin à l'échelle si massivement que les meilleurs SGBDR fonctionnant sur le meilleur matériel que vous pouvez vous permettre et optimiser autant que possible ne peuvent tout simplement pas suivre la charge. Combien il est dépend du cas d'utilisation spécifique (beaucoup d'activités de mise à jour combinée avec beaucoup de jointures est très dur sur SGBDR « traditionnelle ») -. Pourrait bien être un facteur de 1000 dans les cas extrêmes

  4. La technologie est trop nouvelle pour commencer la mise en œuvre encore ou est-il utile de jeter un coup d'oeil dans?

    Cela dépend principalement de ce que vous essayez d'atteindre. Il est assez mature certainement utiliser. Mais peu d'applications ont vraiment besoin à l'échelle que massivement. Pour la plupart, un SGBDR traditionnel est suffisante. Cependant, l'utilisation d'Internet de plus en plus omniprésent tout le temps, il est fort probable que les applications qui ne deviendront plus fréquents (mais probablement pas dominante).

Autres conseils

Il n'y a pas une telle chose comme NoSQL!

NoSQL est un mot à la mode.

Pendant des décennies, quand les gens parlaient des bases de données, bases de données relationnelles qu'ils voulaient dire. Et quand les gens parlaient des bases de données relationnelles, ils signifient que ceux que vous contrôlez avec Structured Query Language Edgar F. Codd. Le stockage des données d'une autre manière? La démence! Tout le reste est juste flatfiles.

Mais au cours des dernières années, les gens ont commencé à remettre en question ce dogme. Les gens se demandaient si des tables avec des lignes et des colonnes sont vraiment la seule façon de représenter les données. Les gens ont commencé à penser et le codage, et est venu avec beaucoup de nouveaux concepts la façon d'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 des données.

Les philosophies de toutes ces bases de données étaient différentes. Mais une chose toutes ces bases de données avaient en commun, est que la Structured Query Language n'était plus un bon moyen pour les utiliser. Ainsi, chaque base de données SQL remplacé avec leurs propres langages de requête. Et si le terme NoSQL est né, comme un label 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.

On entend 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 peut-être vrai pour certaines bases de données NoSQL communément appelées, mais tout seul est faux pour au moins un autre. En fait, la seule chose que les bases de données NoSQL ont en commun, est qu'ils sont des bases de données qui n'utilisent pas SQL. C'est ça. La seule chose qui les définit est ce qui les différencie les uns des autres.

Alors ce qui différencie les bases de données NoSQL en dehors?

Nous avons donc fait clairement que toutes les bases de données communément appelées NoSQL sont trop différents pour les évaluer ensemble. Chacun d'entre eux doit être évalué séparément pour décider si elles sont un bon moyen 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 certaines catégories, qui conviennent à différents cas d'utilisation:

orientée document

Exemples: MongoDB, CouchDB

Points forts: données, travail hétérogènes orienté objet, développement agile

Leur avantage est qu'ils ne nécessitent pas une structure de données cohérente. Ils sont utiles pour vos besoins et donc votre mise en page de base de données change constamment, ou lorsque vous traitez avec des ensembles de données qui appartiennent ensemble, mais semblent encore très différemment. Lorsque vous avez beaucoup de tables avec deux colonnes appelées « clé » et « valeur », alors ceux-ci pourraient être dignes d'intérêt.

bases de données graphiques

Exemples:. Neo4j, GiraffeDB

Points forts: Data Mining

Alors que la plupart des bases de données NoSQL abandonner le concept de la gestion des relations de données, ces bases de données embrassent encore plus que ces soi-disant bases de données relationnelles.

Leur objectif est de définir les données par sa 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 eux), alors ceux-ci pourraient être quelque chose pour vous.

Magasins valeur-clé

Exemples: Redis, Cassandra, memcachedb

Points forts: recherche rapide des valeurs par les touches connues

Ils sont très simplistes, mais qui les rend rapide et facile à utiliser. Lorsque vous n'avez pas besoin pour les procédures stockées, les contraintes, les déclencheurs et toutes les fonctions de base de données avancées et que vous voulez juste un stockage rapide et la récupération 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 de User157641? Pas de problème, ne prendra que microsecondes. Mais qu'est-ce que vous voulez quand les noms de tous les utilisateurs qui sont âgés entre 16 et 24, ont « gaufres » comme leur fanourriture vorite et connecté dans les dernières 24 heures? Mauvais chance. Si vous ne disposez pas d'une clé définie et unique pour un résultat précis, vous ne pouvez pas sortir de votre magasin K-V facilement.

est-SQL obsolète?

Certains partisans NoSQL affirment que leur base de données NoSQL favori est la nouvelle façon de faire les choses, et SQL est une chose du passé.

Sont-ils droit?

Non, ils ne sont évidemment pas. Bien qu'il y ait des problèmes SQL ne convient pas à, il a encore ses points forts. Beaucoup de modèles de données sont tout simplement mieux représentés comme une collection de tableaux qui font référence à l'autre. Surtout parce que la plupart des programmeurs de bases de données ont été formés pendant des décennies à penser des données d'une manière relationnelle, et d'essayer d'appuyer sur cet état d'esprit sur une nouvelle technologie qui n'a pas été fait pour elle se termine rarement bien.

bases de données NoSQL ne remplacent pas pour SQL - ils sont une alternative

.

La plupart des écosystèmes de logiciels dans les différentes bases de données NoSQL ne sont pas encore matures. Bien qu'il y ait des progrès, vous avez toujours pas obtenu des outils supplémentaires qui sont aussi matures et puissantes que celles disponibles pour les bases de données SQL populaires.

En outre, il y a beaucoup plus de savoir-faire pour SQL autour. Des générations de chercheurs en informatique ont passé des décennies de leur carrière dans la recherche axée sur bases de données relationnelles, et il montre: La littérature écrite sur les bases de données SQL et la modélisation des données relationnelles, pourrait remplir à la fois pratique et théorique, plusieurs bibliothèques pleines de livres. Comment construire une base de données relationnelle pour vos données est un sujet si bien documenté, il est difficile de trouver un cas de coin où il n'y a pas généralement accepté par le livre des meilleures pratiques.

La plupart des bases de données NoSQL, d'autre part, sont encore à leurs balbutiements. On recherche encore la meilleure façon de les utiliser.

Depuis quelqu'un a dit que mon post précédent était hors sujet, je vais essayer de compenser :-) NoSQL est pas, et n'a jamais été destiné à être un remplacement pour les bases de données SQL plus mainstream, mais quelques mots sont en ordonner de faire avancer les choses dans la bonne perspective.

Au coeur de la la philosophie NoSQL est la considération que, peut-être pour des raisons commerciales et de portabilité, les moteurs SQL ont tendance à ne pas tenir compte de la puissance énorme du système d'exploitation UNIX et ses dérivés.

Avec une base de données sur le système de fichiers, vous pouvez profiter immédiatement des capacités sans cesse croissantes et puissance du système d'exploitation sous-jacent, qui augmentent de façon constante depuis de nombreuses années, conformément à la loi de Moore. Avec cette approche, de nombreuses commandes du système d'exploitation deviennent automatiquement aussi « les opérateurs de base de données » (penser « ls » « sort », « trouver » et les innombrables autres utilitaires shell UNIX).

Avec cela à l'esprit, et un peu de créativité, vous pouvez en effet concevoir une base de données sur le système de fichiers qui est en mesure de surmonter les limites de nombreux moteurs SQL communs, au moins pour les modes d'utilisation, ce qui est le point entier derrière NoSQL de la philosophie, la façon dont je le vois.

Je lance des centaines de sites Web et ils utilisent tous NoSQL à un degré plus ou moins. En fait, ils ne hébergent pas d'énormes quantités de données, mais même si certains d'entre eux ont fait je ne pouvais probablement penser à une utilisation créative de NoSQL et le système de fichiers pour surmonter les goulots d'étranglement. Quelque chose qui serait probablement plus difficile avec SQL traditionnelles « prisons ». Je vous invite à Google pour « unix », « Manis » et « Shaffer » pour comprendre ce que je veux dire.

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

Il est généralement mieux adapté aux applications Web qui comptent sur les performances de la base de données, et ne nécessitent pas de fonctionnalités plus avancées des moteurs de base de données relationnelle. Par exemple, un magasin key-> Valeur fournissant une simple requête par l'interface identifiant peut être 10-100x plus rapide que l'implémentation du serveur SQL correspondant, avec un coût de maintenance des développeurs bas.

Un exemple est cette pour un Tuple Store OLTP, qui a sacrifié les transactions pour le traitement seul thread (pas de problème de concurrence, car aucun permis concurrency) et toutes les données conservées dans la mémoire; la réalisation 10-100x de meilleures performances par rapport à un même SGBDR système Driven. Au fond, il se déplace loin de la « Taille unique » Vue des systèmes SQL et la base de données.

Dans la pratique, NoSQL est un système de base de données qui prend en charge un accès rapide aux grands objets binaires (docs, jpgs, etc.) à l'aide d'une stratégie d'accès basé sur la touche. Ceci est un départ de l'accès traditionnel SQL qui est juste assez bon pour les valeurs alphanumériques. Non seulement la stratégie de stockage et l'accès interne mais aussi la syntaxe et les limites du format d'affichage restreint le SQL traditionnel. implémentations de bases de données relationnelles GOUTTE traditionnelles souffrent aussi de ces restrictions.

Derrière la scène, il est un aveu indirect de l'échec du modèle SQL pour soutenir toute forme de OLTP ou de soutien pour les nouveaux DataFormats. « Support » ne signifie pas seulement stocker, mais les capacités d'accès complet - programmes et querywise en utilisant le modèle standard.

Les amateurs Relational ont été prompts à modifier le défnition de NoSQL de Non-SQL Non-seulement-SQL pour garder encore SQL dans l'image! Ce n'est pas bon, surtout quand on voit que la plupart des programmes Java station aujourd'hui à la cartographie ORM du modèle relationnel sous-jacent. Un nouveau concept doit avoir une définition clearcut. Sinon, il finira comme SOA.

La base des systèmes NoSQL est dans la clé aléatoire - paire de valeurs. Mais ce n'est pas nouvelle. systèmes de bases de données traditionnels comme IMS et IDMS a appuyé les clés de RAMDOM haché (sans utiliser un indice) et ils le font encore. En fait IDMS a déjà un NONSQL mot-clé où ils prennent en charge l'accès SQL à leur base de données de réseau plus qu'ils ont appelé comme NONSQL.

Il est comme jacuzzi: à la fois une marque et un nom générique. Il est non seulement une technologie spécifique, mais plutôt un type de la technologie, dans ce cas, se référant à grande échelle (souvent rares) « bases de données » comme BigTable ou CouchDB Google.

NoSQL le réel programme semble être une base de données relationnelle mis en œuvre dans awk en utilisant des fichiers à plat sur le back-end. Bien qu'ils professent, « NoSQL a essentiellement pas de limites arbitraires, et peut travailler là où d'autres produits ne peuvent pas. Par exemple, il n'y a aucune limite sur la taille du champ de données, le nombre de colonnes ou la taille du fichier », je ne pense pas que ce soit la base de données à grande échelle de l'avenir.

Joel dit, les bases de données massivement évolutives comme BigTable ou HBase , sont beaucoup plus intéressant. GQL est la langue de requête associée à BigTable et App Engine. Il est largement peaufiné SQL pour éviter les fonctionnalités de Google considère les goulots d'étranglement (comme joint). Cependant, je ne l'ai pas entendu cette appelé « NoSQL » avant.

NoSQL est un système de base de données qui n'utilise pas des requêtes SQL à base de chaîne pour extraire des données.

Au lieu de cela, vous créer des requêtes en utilisant une API qu'ils fourniront, par exemple Amazon DynamoDB est un bon exemple d'une base de données NoSQL.

bases de données NoSQL sont mieux pour les grandes applications où l'évolutivité est importante.

  

Est-ce que NoSQL signifie la base de données non relationnelle?

Oui, NoSQL est différent de SGBDR et OLAP. Il utilise des modèles de cohérence plus souples que les bases de données relationnelles traditionnelles.

modèles de cohérence sont utilisés dans les systèmes distribués, comme les systèmes de mémoire partagée distribués ou magasin de données distribuées.

  

Comment ça marche interne?

systèmes de base de données NoSQL sont souvent très optimisés pour la recherche et les opérations et annexant offrent souvent peu de fonctionnalités au-delà de stockage d'enregistrement (par exemple des magasins clé-valeur). La flexibilité d'exécution réduite par rapport à des systèmes complets de SQL est compensée par des gains marqués en termes d'évolutivité et de performance pour certains modèles de données.

Il peut travailler sur les données structurées et non structurées. Il utilise des collections au lieu des tableaux

  

Comment cette "base de données" query-vous?

; il explique tout.

scroll top