NoSql vs base de données relationnelle

Réponses:

123

Toutes les données ne sont pas relationnelles. Pour ces situations, NoSQL peut être utile.

Cela dit, NoSQL signifie "Not Only SQL". Il n'est pas destiné à frapper SQL ou à le supplanter.

SQL présente plusieurs très gros avantages:

  1. Solide base mathématique.
  2. Syntaxe déclarative.
  3. Un langage bien connu dans Structured Query Language (SQL).

Ceux-ci ne sont pas partis.

C'est une erreur de penser à cela comme un argument soit / soit. NoSQL est une alternative que les gens doivent considérer quand cela convient, c'est tout.

Les documents peuvent être stockés dans des bases de données non relationnelles, comme CouchDB.

Peut-être que lire ceci aidera.

duffymo
la source
10
Pouvez-vous donner des exemples de données non relationnelles?
user496949
7
Les documents et les images peuvent également être stockés dans le SGBDR comme SQL Server et Oracle? Alors pourquoi NoSQL?
user496949
2
Les données semi-structurées font partie de ces classes. Il contient du XML, des e-mails, du JSON, etc. Voir la page wikipedia à ce sujet. La règle générale est que la structure est là, mais qu'elle est définie de manière lâche et extensible dynamiquement (ces derniers ont tendance à se classer avec le modèle relationnel - et bien qu'il ne soit pas impossible à modéliser, il est définitivement encombrant). Une autre classe est «données naturelles»: un roman, une image, les deux sans méta-données jointes.
JE DONNE DES RÉPONSES CRAP
2
Eh bien, vous ne pouvez pas faire SELECT blob FROM images WHERE blob CONTAINS('red car'). Ainsi, même si vous pouvez stocker les données brutes dans la base de données, vous ne pouvez pas les rechercher sans y attacher des métadonnées. Les modules de recherche en texte intégral dans les systèmes SGBDR comblent une partie de l'écart semi-structurel.
JE DONNE DES RÉPONSES CRAP
1
@duffymo: Les documents ne sont pas "non relationnels". Les documents sont souvent stockés dans des SGBD SQL et vous n'avez pas besoin d'un SGBD NOSQL pour cela. En fait, les bases de données NOSQL utilisent souvent des modèles de données moins généraux et plus limités en application que le modèle relationnel. Par exemple, des bases de données graphiques. Le type de données stockées n'explique aucun avantage de NOSQL.
nvogel
98

L'histoire semble ressembler à ceci:

  1. Google a besoin d'une couche de stockage pour son index de recherche inversé. Ils pensent qu'un SGBDR traditionnel ne va pas le couper. Ils implémentent donc un magasin de données NoSQL, BigTable au-dessus de leur système de fichiers GFS. L'essentiel est que des milliers de machines matérielles bon marché fournissent la vitesse et la redondance.

  2. Tout le monde réalise ce que Google vient de faire.

  3. Le théorème CAP de Brewers est prouvé. Tous les systèmes SGBDR utilisés sont des systèmes CA. Les gens commencent également à jouer avec les systèmes CP et AP. Les magasins K / V sont beaucoup plus simples, ils sont donc le principal véhicule de la recherche.

  4. Les systèmes Software-as-a-Service en général ne fournissent pas de magasin de type SQL. Par conséquent, les gens s'intéressent davantage aux magasins de types NoSQL.

Je pense qu'une grande partie du décollage peut être liée à cette histoire. La mise à l'échelle Google a pris de nouvelles idées chez Google et tout le monde emboîte le pas, car c'est la seule solution qu'ils connaissent actuellement au problème de mise à l'échelle. Par conséquent, vous êtes prêt à tout retravailler autour de l'idée de base de données distribuée de Google, car c'est le seul moyen de passer au-delà d'une certaine taille.

C - Cohérence
A - Disponibilité
P - Tolérance de partition
K / V - Clé / Valeur

JE DONNE DES RÉPONSES CRAP
la source
10
Qu'est-ce que CAP, CP, AP, K / V?
knownasilya
3
Recherchez le théorème CAP sur Wikipedia. CA et CP en découlent. K / V est l'abréviation de Key / Value, un mappage fini (distribué) des clés aux valeurs.
JE DONNE DES RÉPONSES CRAP
" Tout le monde réalise ce que Google vient de faire. " Lol. Cela me semble être une réponse écossaise (aka NOT CRAP).
ruffin
38

NoSQL est meilleur que le SGBDR pour les raisons / propriétés suivantes de NoSQL

  1. Il prend en charge les données semi-structurées et les données volatiles
  2. Il n'a pas de schéma
  3. Le débit de lecture / écriture est très élevé
  4. L'évolutivité horizontale peut être obtenue facilement
  5. Prend en charge Bigdata dans les volumes de Terra Bytes et Peta Bytes
  6. Fournit un bon support pour les outils analytiques en plus de Bigdata
  7. Peut être hébergé dans des machines matérielles moins chères
  8. L'option de mise en cache en mémoire est disponible pour augmenter les performances des requêtes
  9. Cycles de vie de développement plus rapides pour les développeurs

ÉDITER:

Pour répondre «pourquoi le SGBDR ne peut pas évoluer», veuillez consulter le pdf des frais généraux du SGBDR rédigé par Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden et Michael Stonebraker

Les SGBDR ont des difficultés à gérer d'énormes volumes de données de téraoctets et de péta octets . Même si vous disposez d'un réseau redondant de disques indépendants / peu coûteux (RAID) et d'un déchiquetage de données, il ne s'adapte pas bien à un énorme volume de données. Vous avez besoin de matériel très coûteux.

Journalisation : l' assemblage d'enregistrements de journaux et le suivi de toutes les modifications des structures de base de données ralentissent les performances. La journalisation peut ne pas être nécessaire si la récupérabilité n'est pas une exigence ou si la récupérabilité est fournie par d'autres moyens (par exemple, d'autres sites sur le réseau).

Verrouillage : le verrouillage traditionnel en deux phases représente une surcharge importante puisque tous les accès aux structures de base de données sont régis par une entité distincte, le gestionnaire de verrouillage.

Verrouillage : dans une base de données multithread, de nombreuses structures de données doivent être verrouillées avant de pouvoir y accéder. La suppression de cette fonctionnalité et le passage à une approche à un seul thread a un impact notable sur les performances.

Gestion des tampons : un système de base de données de mémoire principale n'a pas besoin d'accéder aux pages via un pool de tampons, ce qui élimine un niveau d'indirection à chaque accès aux enregistrements.

Cela ne signifie pas que nous devons utiliser NoSQL sur SQL.

Pourtant, le SGBDR est meilleur que NoSQL pour les raisons / propriétés suivantes du SGBDR

  1. Transactions avec les propriétés ACID - Atomicité, cohérence, isolation et durabilité
  2. Adhésion au schéma fort des données écrites / lues
  3. Gestion des requêtes en temps réel (en cas de taille de données <10 Tera octets)
  4. Exécution de requêtes complexes impliquant des clauses join & group by

Nous devons utiliser RDBMS (SQL) et NoSQL (pas seulement SQL) en fonction de l'analyse de rentabilisation et des exigences

Ravindra babu
la source
2
Il convient de noter que certaines bases de données NoSQL prennent en charge les transactions ACID.
Dave Cassel
15

NOSQL n'a pas d'avantages particuliers par rapport au modèle de base de données relationnelle. NOSQL répond à certaines limitations des SGBD SQL actuels, mais n'implique aucune fonctionnalité fondamentalement nouvelle par rapport aux modèles de données précédents.

NOSQL signifie seulement pas de SQL (ou "pas seulement SQL") mais cela ne signifie pas la même chose que pas de relationnel . Une base de données relationnelle constituerait en principe une très bonne solution NOSQL - c'est juste qu'aucun de l'ensemble actuel de produits NOSQL n'utilise le modèle relationnel.

nvogel
la source
4
Il semble que lors de la récente conférence O'Reilly Strata, Mark Madsen a inventé une nouvelle interprétation de "NoSQL" dans son histoire des bases de données en vue de remplacer "Not Only SQL". C'est maintenant: "Non, SQL" ;-)
Lukas Eder
4

Le SGBDR se concentre davantage sur les relations et NoSQL se concentre davantage sur le stockage.

Vous pouvez envisager d'utiliser NoSQL lorsque votre SGBDR atteint des goulots d'étranglement. NoSQL rend le SGBDR plus flexible.

suiwenfeng
la source
4

Le plus grand avantage de NoSQL par rapport au SGBDR est l' évolutivité .
Les bases de données NoSQL peuvent facilement évoluer vers de nombreux nœuds, mais pour le SGBDR, c'est très difficile.
L'évolutivité vous offre non seulement plus d'espace de stockage, mais également des performances beaucoup plus élevées, car de nombreux hôtes fonctionnent en même temps.

Jon
la source
3

Si vous avez besoin de traiter une énorme quantité de données avec des performances élevées

OU

Si le modèle de données n'est pas prédéterminé

puis

La base de données NoSQL est un meilleur choix.

Chris
la source
2

Juste en ajoutant à toutes les informations données ci-dessus

Avantages NoSql:

1) NoSQL est bon si vous voulez être prêt pour la production rapidement en raison de sa prise en charge de l'architecture sans schéma et orientée objet.

2) Les bases de données NoSql sont finalement cohérentes, ce qui dans un langage simple signifie qu'elles ne fourniront aucun verrou sur les données (documents) comme dans le cas du SGBDR et ce que cela signifie est que le dernier instantané des données est toujours disponible et augmente ainsi la latence de votre application .

3) Il utilise la stratégie MVCC (Multi view concurrency control) pour maintenir et créer un instantané de données (documents).

4) Si vous souhaitez avoir des données indexées, vous pouvez créer une vue qui indexera automatiquement les données en fonction de la définition de vue que vous fournissez.

Inconvénients de NoSql:

1) Il ne convient certainement pas aux grandes applications transactionnelles lourdes car il est finalement cohérent et ne prend pas en charge les propriétés ACID.

2) En outre, il crée plusieurs instantanés (révisions) de vos données (documents) car il utilise la méthodologie MVCC pour le contrôle de la concurrence, à la suite de quoi l'espace est consommé plus rapidement qu'auparavant, ce qui rend le compactage et donc la réindexation plus fréquents et ralentit votre réponse de l'application à mesure que les données et les transactions de votre application augmentent. Pour contrer cela, vous pouvez mettre à l'échelle horizontalement les nœuds, mais encore une fois, il sera plus coûteux de comparer la base de données SQL.

Manvendra Jina
la source
1

De mongodb.com :

Les bases de données NoSQL diffèrent des anciennes technologies relationnelles dans quatre domaines principaux:

Modèles de données : une base de données NoSQL vous permet de créer une application sans avoir à définir le schéma au préalable contrairement aux bases de données relationnelles qui vous obligent à définir votre schéma avant de pouvoir ajouter des données au système. Aucun schéma prédéfini ne rend les bases de données NoSQL beaucoup plus faciles à mettre à jour à mesure que vos données et vos exigences changent.

Structure des données : les bases de données relationnelles ont été construites à une époque où les données étaient assez structurées et clairement définies par leurs relations. Les bases de données NoSQL sont conçues pour gérer des données non structurées (par exemple, des textes, des publications sur les réseaux sociaux, des vidéos, des e-mails) qui constituent une grande partie des données qui existent aujourd'hui.

Mise à l'échelle : il est beaucoup moins coûteux de mettre à l'échelle une base de données NoSQL qu'une base de données relationnelle, car vous pouvez ajouter de la capacité en évoluant sur des serveurs de base bon marché. Les bases de données relationnelles, en revanche, nécessitent un seul serveur pour héberger l'intégralité de votre base de données. Pour évoluer, vous devez acheter un serveur plus gros et plus cher.

Modèle de développement : les bases de données NoSQL sont open source tandis que les bases de données relationnelles sont généralement des sources fermées avec des frais de licence intégrés à l'utilisation de leurs logiciels. Avec NoSQL, vous pouvez démarrer sur un projet sans aucun investissement lourd en frais de logiciel à l'avance.

Dead Pool
la source