Les caractéristiques communes de nosql

Livres et blogs NoSQL offrent des opinions différentes sur ce qu'est une base de données NoSQL est. Quatre caractéristiques fondamentales de NoSQL, indiqués dans la liste suivante, demander au plupart des bases NoSQL. La liste compare NoSQL au SGBD relationnelles traditionnelles:

Sommaire

  • Schéma agnostique: Un schéma de base de données est la description de toutes les structures possibles de données et de données dans une base de données relationnelle. Avec une base de données NoSQL, un schéma est pas nécessaire, vous donnant la liberté de stocker des informations sans faire jusqu'à la conception du schéma # 8208-avant.

  • Nonrelational: Les relations dans une base de données établissent des connexions entre les tables de données. Par exemple, une liste des détails de la transaction peut être connecté à une liste séparée de détails de la livraison. Avec une base de données NoSQL, cette information est stockée comme un agrégat - un seul enregistrement avec tout sur la transaction, y compris l'adresse de livraison.

  • Du matériel de base: Certaines bases de données sont conçus pour fonctionner meilleur (ou le seul) avec stockage spécialisé et le matériel de traitement. Avec une base de données NoSQL, pas cher off # 8208-Le # 8208 serveurs sur étagère peuvent être utilisés. Ajout de plusieurs de ces serveurs bon marché des bases de données NoSQL permet à l'échelle de gérer plus de données.

  • Hautement distribuable: Bases de données distribuées peuvent stocker et traiter un ensemble d'informations sur plus d'un appareil. Avec une base de données NoSQL, un cluster de serveurs peut être utilisé pour maintenir une seule grande base de données.

Schéma agnostique

Bases de données NoSQL sont schéma agnostique. Vous n'êtes pas obligé de faire beaucoup de place # 8208-devant travail de conception avant que vous pouvez stocker des données dans des bases de données NoSQL. Vous pouvez commencer à coder et stocker et récupérer des données sans savoir comment les magasins et de base de données de fonctionnement interne. (Si et quand vous avez besoin des fonctionnalités avancées, alors vous pouvez ajouter manuellement d'autres indices ou modifier les structures de stockage de données.) Schema agnosticisme peut être la différence la plus significative entre NoSQL et bases de données relationnelles.

Le grand avantage d'une base de données agnostique de schéma est que le temps de développement est raccourcie. Cet avantage augmente à mesure que vous passent par le développement de multiples versions et ont besoin de modifier les structures de données internes dans la base de données.

Par exemple, dans un SGBDR traditionnels, vous passez par un processus de refonte schéma. Le schéma indique la base de données sur les données à attendent. Modifiez les données stockées, ou de structures, et vous devez reinstruct la base de données en utilisant un schéma modifié. Si vous deviez faire un changement, vous auriez à passer beaucoup de temps à décider comment re # 8208-architecte de la de données existante. Dans les bases de données NoSQL, il vous suffit de stocker une structure de données différente. Il n'y a pas besoin de dire à la base de données à l'avance.

Vous pourriez avoir à modifier vos requêtes en conséquence, peut-être ajouter le spécifique occasionnelle index (comme un index de plage entière pour permettre inférieures et supérieures que les données # 8208 type de requêtes spécifiques), mais l'ensemble du processus est beaucoup moins pénible qu'elle ne l'est avec un SGBDR.

SGBDR a décollé en raison de sa flexibilité et parce que, en utilisant SQL, il a accéléré l'évolution d'une requête. Bases de données NoSQL offrent cette souplesse pour changer à la fois le schéma et la requête, qui est l'une des principales raisons pour lesquelles ils seront de plus en plus adoptées au fil du temps.

Même sur requête, vous ne pouvez pas besoin de trop se soucier de connaître les changements de schéma - envisager un indice sur un numéro de compte sur le terrain, où numéro de compte peut être situé n'importe où dans un document qui est stocké dans une base de données NoSQL. Vous pouvez modifier la structure et où déménager numéro de compte est stockée, et si l'élément a le même nom ailleurs dans le document, il est toujours disponible pour la requête sans avoir à modifier le mécanisme de votre requête.




Notez que toutes les bases de données NoSQL sont entièrement schéma agnostique. Certains, comme HBase, vous demander d'arrêter la base de données de modifier les définitions de colonnes. Ils sont toujours considérés comme des bases de données NoSQL parce que les champs pas tous définis (colonnes dans ce cas) doivent être connus à l'avance pour chaque enregistrement - seulement les familles de colonne.

SGBDR permet champs individuels dans les dossiers à être identifiés comme nul des valeurs. Le problème avec un SGBDR est que la taille des données stockées et les performances sont affectées négativement lorsque le stockage est réservée aux valeurs nulles juste au cas où le dossier peut à un moment futur avoir une valeur dans cette colonne. Dans Cassandra, vous simplement ne fournissez pas les données de cette colonne, ce qui résout le problème.

Nonrelational

Les systèmes de gestion de base de données relationnelles ont été la façon dominante pour stocker des données d'application pour les plus de 20 ans. Une grande partie du travail mathématique a été fait pour prouver la théorie qui les sous-tend.

Ce fondement décrit comment tableaux se rapportent les uns aux autres. Une ligne de commande unique peut concerner plusieurs lignes d'adresse de livraison, mais chaque adresse de livraison rangée concerne également plusieurs ordonner rangées. C'est un beaucoup# 8208-à# 8208-nombre relation.

Bases de données NoSQL ne possèdent pas cette notion de relations entre leurs dossiers. Ils dénormaliser la place des données. Cela signifie que, dans une base de données NoSQL aurait une structure de commande avec l'adresse de livraison intégré. Cela signifie que l'adresse de livraison est dupliqué dans chaque ligne de commande qui l'utilise. Cette approche a l'avantage de ne pas nécessiter de temps de requête complexe rejoint sur plusieurs structures de données (tables) cependant.

Bases de données NoSQL ne stockent pas d'informations sur la façon individuelle dossiers se rapportent à d'autres enregistrements dans la base de données, ce qui peut paraître comme une limitation. Toutefois, les bases de données NoSQL sont plus flexibles en termes de structures de données que vous pouvez stocker.

Envisager une commande d'un détaillant en ligne. L'ordre pourrait inclure des codes de produit, les quantités, les prix des articles et des descriptions d'articles, ainsi que des informations sur la personne qui commande, tels que l'adresse de livraison et de paiement.

Plutôt que d'insérer des dix lignes d'une variété de tables dans une base de données relationnelle, vous pouvez stocker à la place d'une structure unique pour l'ensemble de ces informations d'ordre - disons, comme un document JSON ou XML.

Dans la théorie de base de données relationnelle, le but est de normaliser vos données (qui est, pour organiser les champs et les tables pour supprimer les données en double). Dans NoSQL N ° 173-bases de données - en particulier de documents ou bases de données agrégées - vous souvent dénormaliser délibérément des données, le stockage des données de plusieurs fois.

Vous pouvez stocker, par exemple, “ la clientèle Adresse Livraison ” plusieurs fois à travers de nombreux ordres d'un client fait au fil du temps, plutôt que de stocker une fois et voir dans plusieurs commandes. Cela nécessite de l'espace de stockage supplémentaire, et un peu de prévoyance dans la gestion de votre application. Alors, pourquoi le faire?

Il ya deux avantages à stocker plusieurs fois des données:

  • Facilité de stockage et de récupération: Il suffit d'enregistrer et d'obtenir un enregistrement unique.

  • Vitesse de la requête: Dans bases de données relationnelles, vous vous joignez à l'information et ajouter des contraintes sur les tables lors de la requête. Cela peut nécessiter le moteur de base de données pour évaluer de nombreuses tables. Les contraintes plus de requêtes que vous avez entre les différents tableaux, plus vous réduisez votre vitesse de requête. (Ceci est la raison pour laquelle un SGBDR a vues précalculées.) Dans une base de données NoSQL, toutes les informations dont vous avez besoin pour évaluer votre requête est en un seul document. Par conséquent, vous pouvez déterminer rapidement la liste des documents correspondants.

Vues relationnelles et dénormalisations NoSQL sont différentes approches du problème des données réparties dans les dossiers. Dans NoSQL, vous pourriez avoir à maintenir plusieurs dénormalisations représentant des vues différentes des mêmes données. Cette approche augmente le coût du stockage, mais vous donne beaucoup mieux moment de la requête.

Étant donné le coût sans cesse # 8208 de réduction du stockage et de l'augmentation de la vitesse de développement et d'interrogation, les données dénormalisées (aka vues matérialisées) Est pas une raison de tueur pour actualiser les solutions NoSQL. Il est juste une façon différente d'aborder le même problème, avec ses propres avantages et inconvénients.

NoSQL est très distribuable et utilise du matériel de base

Dans de nombreuses bases de données NoSQL, une décision de conception clé est d'utiliser plusieurs ordinateurs pour stocker des données pour une seule base de données, plutôt que d'avoir toute la base de données sur un seul serveur.

Stockage des données sur plusieurs machines et lui permettant d'être interrogé est difficile. Vous devez envoyer la requête à tous les serveurs et attend une réponse. Espérons que, vous configurez les machines de sorte qu'ils sont assez vite à parler les uns aux autres pour gérer les requêtes distribuées!

Le principal avantage de cette approche est dans le cas de très grands ensembles de données, parce que pour certaines exigences de stockage, même le plus grand serveur unique disponible ne pouvait pas stocker ou traiter toutes les données dont vous avez besoin. Considérer tous les messages sur Twitter et Facebook. Vous avez besoin d'un mécanisme distribué à gérer efficacement toutes ces données, même si elle est la plupart du temps à propos de ce que les gens ont pour le petit déjeuner et vidéos de chats mignons.

Un avantage de la distribution de votre base de données est que vous pouvez utiliser des serveurs moins chers, appelés serveurs des produits de base. Même pour les petits ensembles de données, il peut être moins cher d'acheter trois serveurs des produits de base au lieu d'un seul serveur supérieur # 8208-alimenté.

Un autre avantage clé est que l'ajout de la haute disponibilité est easier- vous êtes déjà à mi-chemin par la distribution de vos données. Si vous répliquez vos données une fois ou deux fois à travers d'autres serveurs du cluster, vos données seront toujours accessibles, même si l'un des serveurs accidents, des brûlures, et meurt.

Toutes les bases de données ouvertes # 8208-source ne supportent pas la haute disponibilité, sauf si vous achetez la prise en charge, payés # 8208-pour la version de la base de données de la société qui la développe.

Une exception à la règle très distribuable est que des bases de données de graphes. Afin de répondre efficacement à certaines requêtes graphique en temps opportun, les données doivent être stockées sur un serveur unique. Personne n'a encore résolu cette question en particulier.

Examiner attentivement si vous avez besoin d'un magasin triple ou un magasin de graphique. Triple magasins sont généralement distribuable, alors que les magasins de graphes ne sont pas. Lequel vous avez besoin dépend des questions que vous devez soutenir.


» » » » Les caractéristiques communes de nosql