Qu’est-ce que NoSQL, comment ça marche et quels sont les avantages?

J’ai entendu des choses à propos de NoSQL et qu’il pourrait éventuellement remplacer les méthodes de stockage SQL DB, car l’interaction avec la firebase database est souvent une entrave à la vitesse sur le Web.

Donc, j’ai juste quelques questions:

  1. Qu’est-ce que c’est exactement?

  2. Comment ça marche?

  3. Pourquoi serait-il préférable d’utiliser une firebase database SQL? Et combien vaut-il mieux?

  4. La technologie est-elle trop récente pour être mise en œuvre ou vaut-il la peine d’y jeter un coup d’œil?

  1. Qu’est-ce que c’est exactement?

    D’une part, un système spécifique , mais il est également devenu un mot générique pour une variété de nouveaux backends de stockage de données qui ne suivent pas le modèle DB relationnel.

  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 de meilleures performances en utilisant des modèles de firebase database qui ne prennent pas en charge toutes les fonctionnalités d’un SGBDR générique. Dans un sens, c’est comme MySQL, qui à un moment donné manquait de support pour les transactions mais, à cause de cela, a réussi à surpasser les autres systèmes de firebase database. Si vous pouviez écrire votre application d’une manière qui ne nécessitait pas de transactions, c’était génial.

  3. Pourquoi serait-il préférable d’utiliser une firebase database SQL? Et combien vaut-il mieux?

    Il serait préférable que votre site ait besoin d’une mise à l’échelle si massive que les meilleurs SGBDR fonctionnant sur le meilleur matériel que vous pouvez vous permettre et optimisés ne puissent tout simplement pas suivre la charge. Cela dépend du cas d’utilisation spécifique (beaucoup d’activités de mise à jour combinées avec beaucoup de jointures est très difficile pour les SGBDR “traditionnels”) – pourrait bien être un facteur de 1000 dans les cas extrêmes.

  4. La technologie est-elle trop récente pour être mise en œuvre ou vaut-il la peine d’y jeter un coup d’œil?

    Cela dépend principalement de ce que vous essayez d’atteindre. C’est certainement assez mature pour l’utiliser. Mais peu d’applications doivent vraiment être mises à l’échelle. Pour la plupart, un SGBDR traditionnel est suffisant. Cependant, l’utilisation d’Internet devenant omniprésente tout le temps, il est fort probable que les applications deviendront plus courantes (mais probablement pas dominantes).

NoSQL n’existe pas!

NoSQL est un mot à la mode.

Pendant des décennies, lorsque les gens parlaient de bases de données, ils parlaient de bases de données relationnelles. Et lorsque les gens parlaient de bases de données relationnelles, ils parlaient de ceux que vous contrôliez avec le langage de requêtes structuré d’Edgar F. Codd. Stocker des données d’une autre manière? La démence! Tout le rest n’est que des fichiers plats.

Mais ces dernières années, les gens ont commencé à remettre en question ce dogme. Les gens se sont demandés si les tables avec des lignes et des colonnes étaient vraiment le seul moyen de représenter les données. Les gens ont commencé à penser et à coder, et ont proposé de nombreux nouveaux concepts sur la manière dont les données pouvaient être organisé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é ne convenait plus pour les utiliser. Chaque firebase database a donc remplacé SQL par ses propres langages de requête. Ainsi, le terme NoSQL est né, en tant que label pour toutes les technologies de firebase database qui défient le modèle classique de firebase database relationnelle.

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 de 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 qu’elles ne sont pas des bases de données 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 clairement indiqué que toutes les bases de données communément appelées NoSQL sont trop différentes pour pouvoir être évaluées ensemble. Chacun d’eux doit être évalué séparément pour décider s’il convient bien pour résoudre un problème spécifique. Mais où commençons-nous? 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é object, 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 disposition de votre firebase database changent constamment, ou lorsque vous traitez avec des ensembles de données qui appartiennent ensemble mais ont toujours un aspect très différent. Lorsque vous avez beaucoup de tables avec deux colonnes appelées “clé” et “valeur”, cela peut être intéressant.

Bases de données graphiques

Exemples: Neo4j, GiraffeDB.

Forces: 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’utilisent encore plus que les bases de données dites relationnelles.

Leur objective est de définir les données en fonction de 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), elles peuvent vous intéresser.

Magasins de valeur-clé

Exemples: Redis, Cassandra, MemcacheDB

Points forts: Recherche rapide de valeurs par des 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 firebase database avancées et que vous souhaitez simplement stocker et récupérer rapidement vos données, celles-ci 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, cela ne prendra que des microsecondes. Mais que se passe-t-il lorsque vous souhaitez connaître le nom de tous les utilisateurs âgés de 16 à 24 ans, qui préfèrent les “gaufres” et qui les ont connectés au cours des dernières 24 heures? Mauvais chance. Lorsque vous ne disposez pas d’une clé unique et précise pour un résultat spécifique, vous ne pouvez pas le sortir facilement de votre magasin KV.

SQL est-il obsolète?

Certains promoteurs de NoSQL affirment que leur firebase database NoSQL préférée est la nouvelle façon de faire les choses, et que SQL est une chose du passé.

Ont-ils raison?

Non, bien sûr que non. Bien qu’il y ait des problèmes pour lesquels SQL n’est pas adapté, il a toujours ses points forts. Beaucoup de modèles de données sont simplement mieux représentés comme un ensemble de tableaux se référant les uns aux autres. Surtout parce que la plupart des programmeurs de bases de données ont été formés pendant des décennies à penser aux données de manière relationnelle, et qu’ils essayaient de mettre cet état d’esprit sur une nouvelle technologie qui n’était pas faite, car elle se termine rarement bien.

Les bases de données NoSQL ne sont pas un remplacement pour SQL – elles sont une alternative.

La plupart des écosystèmes logiciels situés autour des différentes bases de données NoSQL ne sont pas encore à maturité. Bien qu’il y ait des avancées, vous ne disposez toujours pas d’outils supplémentaires aussi matures et puissants que ceux disponibles pour les bases de données SQL les plus courantes.

En outre, le savoir-faire en matière de SQL est bien plus important. Des générations d’informaticiens ont consacré des décennies de leur carrière à la recherche axée sur les bases de données relationnelles. La littérature sur les bases de données SQL et la modélisation des données relationnelles, à la fois pratiques et théoriques, pourrait remplir de nombreuses bibliothèques. Comment créer une firebase database relationnelle pour vos données est un sujet si bien documenté qu’il est difficile de trouver un cas isolé où il n’y a pas de bonnes pratiques généralement acceptées.

La plupart des bases de données NoSQL en sont encore à leurs balbutiements. Nous sums toujours en train de trouver la meilleure façon de les utiliser.

Comme quelqu’un a dit que mon précédent article était hors-sujet, je vais essayer de compenser 🙂 NoSQL n’est pas et n’a jamais été destiné à remplacer davantage de bases de données SQL classiques, mais quelques mots suffisent pour obtenir les choses dans la bonne perspective.

La philosophie NoSQL repose sur l’idée que, pour des raisons commerciales et de portabilité, les moteurs SQL ont tendance à ignorer la formidable puissance du système d’exploitation UNIX et de ses dérivés.

Avec une firebase database basée sur un système de fichiers, vous pouvez bénéficier immédiatement des capacités et de la puissance toujours croissantes du système d’exploitation sous-jacent, qui n’a cessé de croître depuis plusieurs années, conformément à la loi de Moore. Avec cette approche, de nombreuses commandes de système d’exploitation deviennent automatiquement des “opérateurs de firebase database” (pensez à “ls” “sort”, “find” et aux autres utilitaires shell UNIX).

Dans cet esprit et avec un peu de créativité, vous pouvez en effet concevoir une firebase database basée sur un système de fichiers capable de surmonter les limitations de nombreux moteurs SQL courants, au moins pour des modèles d’utilisation spécifiques, ce qui est la raison d’être de NoSQL. comme je le vois.

Je gère des centaines de sites Web et ils utilisent tous plus ou moins NoSQL. En fait, ils n’hébergent pas d’énormes quantités de données, mais même si certains d’entre eux le faisaient, je pourrais probablement penser à une utilisation créative de NoSQL et du système de fichiers pour surmonter les goulots d’étranglement. Quelque chose qui serait probablement plus difficile avec les “jails” SQL traditionnels. Je vous invite à google pour “unix”, “manis” et “shaffer” pour comprendre ce que je veux dire.

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

Il est généralement mieux adapté aux applications Web qui reposent sur les performances de la firebase database et ne nécessite pas de fonctionnalités plus avancées des moteurs de bases de données de relations. Par exemple, un magasin Key-> Value fournissant une interface de requête simple par identifiant peut être 10 à 100 fois plus rapide que l’implémentation du serveur SQL correspondant, avec un coût de maintenance du développeur moins élevé.

Un exemple est ce document pour un Tuple Store OLTP , qui sacrifie les transactions pour le traitement mono-thread (pas de problème de concurrence car aucune concurrence n’est autorisée), et conserve toutes les données en mémoire; obtenir des performances 10 à 100 fois supérieures à celles d’un système similaire piloté par un SGBDR . Fondamentalement, il s’éloigne de la vue «One Size Fits All» de SQL et des systèmes de firebase database.

En pratique, NoSQL est un système de firebase database qui prend en charge un access rapide aux objects binarys volumineux (docs, jpgs, etc.) en utilisant une stratégie d’access par clé. Ceci est un écart par rapport à l’access SQL traditionnel, qui n’est suffisant que pour les valeurs alphanumériques. Non seulement le stockage interne et la stratégie d’access, mais aussi la syntaxe et les limitations du format d’affichage restreignent le SQL traditionnel. Les implémentations BLOB des bases de données relationnelles traditionnelles souffrent également de ces ressortingctions.

Derrière la scène, il y a une admission indirecte de l’échec du modèle SQL à prendre en charge toute forme d’OLTP ou de prise en charge de nouveaux formats de données. “Support” signifie non seulement stocker mais des capacités d’access complet – par programmation et par requête, en utilisant le modèle standard.

Les enthousiastes de la relation ont rapidement modifié la définition de NoSQL de Not-SQL à Not-Only-SQL pour garder SQL toujours dans l’image! Ce n’est pas une bonne chose, surtout quand on voit que la plupart des programmes Java utilisent aujourd’hui le mappage ORM du modèle relationnel sous-jacent. Un nouveau concept doit avoir une définition claire. Sinon, cela finira comme SOA.

La base des systèmes NoSQL réside dans la paire clé-valeur aléatoire. Mais ce n’est pas nouveau. Les systèmes de firebase database traditionnels tels que IMS et IDMS prenaient en charge les clés de hachage hachées (sans utiliser d’index) et elles le sont toujours. En fait, IDMS a déjà un mot-clé NONSQL où ils prennent en charge l’access SQL à leur ancienne firebase database réseau qu’ils appellent NONSQL.

C’est comme un jacuzzi: à la fois une marque et un nom générique. Il ne s’agit pas seulement d’une technologie spécifique, mais plutôt d’un type de technologie spécifique, en l’occurrence des «bases de données» à grande échelle (souvent rares), telles que BigTable ou CouchDB de Google.

NoSQL le programme réel semble être une firebase database relationnelle implémentée dans awk en utilisant des fichiers plats sur le backend. Bien qu’ils prétendent que “NoSQL n’a essentiellement pas de limites arbitraires, et peut fonctionner là où d’autres produits ne le peuvent pas. Par exemple, il n’y a pas de limite à la taille du champ de données, au nombre de colonnes ou à la taille du fichier” la firebase database à grande échelle du futur.

Comme le dit Joel, les bases de données massivement évolutives telles que BigTable ou HBase sont beaucoup plus intéressantes. GQL est le langage de requête associé à BigTable et à App Engine. C’est en grande partie un ajustement SQL pour éviter les fonctionnalités que Google considère comme des goulots d’étranglement (comme les jointures). Cependant, je n’ai jamais entendu parler de “NoSQL” auparavant.

NoSQL est un système de firebase database qui n’utilise pas de requêtes SQL basées sur des chaînes pour récupérer des données.

Au lieu de cela, vous générez des requêtes à l’aide d’une API qu’ils fourniront, par exemple Amazon DynamoDB est un bon exemple de firebase database NoSQL.

Les bases de données NoSQL sont mieux adaptées aux applications volumineuses où l’évolutivité est importante.

Est-ce que NoSQL signifie une firebase database non relationnelle?

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

Les modèles de cohérence sont utilisés dans les systèmes dissortingbués tels que les systèmes de mémoire partagée dissortingbuée ou les magasins de données dissortingbués.

Comment ça marche en interne?

Les systèmes de firebase database NoSQL sont souvent hautement optimisés pour les opérations d’extraction et d’ajout et offrent souvent peu de fonctionnalités au-delà du stockage des enregistrements (par exemple, les magasins à valeur clé). La flexibilité d’exécution réduite par rapport aux systèmes SQL complets est compensée par des gains d’évolutivité et de performance notables pour certains modèles de données.

Il peut fonctionner sur des données structurées et non structurées. Il utilise des collections au lieu de tables

Comment interrogez-vous une telle “firebase database”?

Regarder SQL vs NoSQL: Bataille des Backends ; ça explique tout.