web-dev-qa-db-fra.com

NoSql vs base de données relationnelle

RécemmentNoSQLa acquis une immense popularité. 

Quels sont les avantages deNoSQLpar rapport à traditionnelRDBMS?

144
user496949

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

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

SQL présente plusieurs très gros avantages: 

  1. Base mathématique solide.
  2. Syntaxe déclarative.
  3. Un langage bien connu en langage SQL (Structured Query Language).

Ceux ne sont pas partis.

C'est une erreur de penser à cela comme un argument soit. NoSQL est une alternative que les utilisateurs doivent prendre en compte lorsque tout leur 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.

117
duffymo

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 réduire. Ils implémentent donc un magasin de données NoSQL, BigTable, au-dessus de leur système de fichiers GFS. La majeure partie est que des milliers de machines matérielles bon marché fournissent la vitesse et la redondance.

  2. Tout le monde se rend compte de ce que Google vient de faire.

  3. Brewers théorème CAP est prouvée. Tous les systèmes d’utilisation du SGBDR sont des systèmes de CA. Les gens commencent également à jouer avec les systèmes CP et AP. Les magasins K/V sont considérablement plus simples, ils constituent donc le principal véhicule de la recherche.

  4. Les systèmes de logiciels en tant que services en général ne fournissent pas de magasin de type SQL. Par conséquent, les gens s'intéressent davantage aux magasins de type NoSQL.

Je pense qu'une grande partie du décollage peut être liée à cette histoire. Mise à l'échelle Google a adopté de nouvelles idées chez Google et tous les autres ont emboîté le pas, car c'est la seule solution qu'ils connaissent actuellement au problème de la 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 d'évoluer au-delà d'une certaine taille.

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

90

NoSQL est meilleur que le SGBDR en raison des raisons suivantes de NoSQL

  1. Il supporte les données semi-structurées et 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 & Peta Bytes
  6. Fournit un bon support pour les outils analytiques au-dessus de Bigdata
  7. Peut être hébergé sur 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 développement plus rapides pour les développeurs

MODIFIER: 

Pour savoir "pourquoi les SGBDR ne peuvent pas évoluer", veuillez consulter SGBDR Overheads pdf rédigé par Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden et Michael Stonebraker.

Les SGBDR ont du mal à gérer d'énormes volumes de données en téraoctets et Peta octets. Même si vous disposez d'un ensemble redondant de disques (RAID) indépendants et peu coûteux, ainsi que du déchiquetage de données, il ne s'adapte pas correctement pour un volume de données considérable. Vous avez besoin de matériel très coûteux.

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

Verrouillage: le verrouillage traditionnel à deux phases entraîne un surcoût important, car 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 l’adoption d’une approche mono-thread ont un impact notable sur les performances.

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

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

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

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

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

37
Ravindra babu

NOSQL ne présente aucun avantage particulier par rapport au modèle de base de données relationnelle. NOSQL résout 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 pasSQL(ou "pas seulement SQL") mais cela ne veut pas dire la même chose que pas relationnel . Une base de données relationnelle constituerait en principe une très bonne solution NOSQL - c'est simplement qu'aucun des produits NOSQL actuels n'utilise le modèle relationnel.

14
nvogel

Le principal avantage de NoSQL par rapport au SGBDR est son évolutivité. Les bases de données NoSQL peuvent facilement évoluer vers plusieurs nœuds, mais c'est très difficile pour les SGBDR. L’évolutivité vous donne 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.

3
Jonathan Yue

Si vous devez traiter une quantité énorme 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.

3
Chris

RDBMSconcentrez-vous davantage sur la relation et NoSQL concentrez-vous davantage sur le stockage. 

Vous pouvez envisager d'utiliser NoSQL lorsque votreRDBMSatteint des goulets d'étranglement. NoSQL rendRDBMSplus flexible.

2
suiwenfeng

Il suffit d'ajouter à toutes les informations données ci-dessus

Avantages NoSql:

1) NoSQL est bon si vous voulez être prêt pour la production 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 signifie qu’en langage simple, elles ne fourniront aucun verrou sur les données (documents) comme dans le cas d’un SGBDR et que cela signifie que le dernier instantané de données est toujours disponible, augmentant ainsi la latence de votre application. .

3) Il utilise la stratégie MVCC (contrôle par simultanéité de vues multiples) pour conserver 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 selon la définition de vue que vous fournissez.

NoSql Inconvénients:

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

2) De plus, 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 simultanéité, de sorte que l’espace est consommé plus rapidement qu'auparavant, ce qui rend le compactage et donc la réindexation plus fréquents réponse de l'application à mesure que les données et la transaction dans votre application augmentent . Pour contrer le fait que vous pouvez mettre à l'échelle horizontalement les nœuds, mais là encore, le coût sera plus élevé en comparaison avec la base de données SQL.

1
Manvendra Jina

De mongodb.com :

Les bases de données NoSQL diffèrent des technologies relationnelles plus anciennes 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 permettent de définir votre schéma avant d'ajouter des données au système. Aucun schéma prédéfini ne facilite la mise à jour des bases de données NoSQL lorsque vos données et vos exigences changent.

Structure de 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 des réseaux sociaux, des vidéos, des courriels), qui constituent la plupart des données existantes.

Scaling: 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 augmenter la capacité de stockage en utilisant des serveurs de base peu onéreux. 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 pouvoir évoluer, vous devez acheter un serveur plus gros et plus cher.

Modèle de développement: les bases de données NoSQL sont à code source ouvert, tandis que les bases de données relationnelles sont généralement à code source fermé, avec des frais de licence induits par l'utilisation de leurs logiciels. Avec NoSQL, vous pouvez démarrer un projet sans aucun investissement lourd en logiciels dès le départ.

1
deadpool