Exemple concret pour chaque type de base de données (cas réels) [en attente]

il existe plusieurs types de bases de données à des fins différentes, cependant normalement MySQL est utilisé pour tout, parce que est la base de données la plus connue. Juste pour donner un exemple dans mon entreprise une application de big data dispose D'une base de données MySQL à un stade initial, ce qui est incroyable et apportera de graves conséquences à l'entreprise. Pourquoi MySQL? Juste parce que personne ne sait comment (et quand) utiliser un autre SGBD.

donc, ma question ne concerne pas les vendeurs, mais le type de les bases de données. Pouvez-vous me donner un exemple pratique de situations (ou d'applications) spécifiques pour chaque type de base de données où il est fortement recommandé de l'utiliser?

exemple:

• un réseau social doit utiliser le type X à cause de Y.

• MongoDB ou un canapé DB ne peut pas prendre en charge les transactions, de sorte que le Document DB n'est pas bonne pour une application pour une banque ou d'un site d'enchères.

et ainsi de suite...


relationnel: MySQL , PostgreSQL , SQLite , Firebird , MariaDB , Oracle DB , SQL Server , IBM DB2 , IBM Informix , Teradata

Objet: ZODB , DB4O , Eloquera , Versant , Objectivity DB , VelocityDB

graph databases: Allegrographs , Neo4j , OrientDB , InfiniteGraph , graphbase , sparklebd , flockdb , BrightstarDB

Key value-stores: Amazon DynamoDB , Redis , Riak , Voldemort , FoundationDB , leveldb , Bangdb , kai , hamsterdb , Tarantool , Maxtable , HyperDex , Genomu , Memcachedb

famille de colonnes: grande table , Hbase , hyper table , Cassandra , Apache Cumul 1519200920 151910920"

RDF Magasins: Apache Iéna , Sésame

Multimodel Databases: arangodb , Datomic , Orient DB , FatDB , AlchemyDB

Document: Mongo DB , Couch DB , Rethink DB , Raven DB , terrastore , Jas DB , Raptor DB , djon DB , ejdb , Denso DB , Couchbase

bases de données XML: BaseX , Sedna , eXist

Hierarchical: InterSystems Caché , GT.M merci à @ Laurent Parenteau

50
demandé sur daniel__ 2013-08-13 04:46:52

3 réponses

j'ai trouvé deux articles impressionnants sur ce sujet. Tous les crédits pour highscalability.com . Les informations contenues dans cette réponse sont transcrites à partir de ces articles:

35+ Utiliser Les Cas Pour Choisir Votre Prochaine Base De Données NoSQL

Pour Quoi Diable Utilisez-Vous NoSQL?


Si Votre Application A Besoin...

les transactions complexes parce que vous ne pouvez pas se permettre de perdre des données ou si vous souhaitez une simple opération de modèle de programmation puis regarder un Relationnel ou de la Grille de la base de données.

Exemple: un système d'inventaire qui pourrait complète ACIDE . J'étais très malheureux quand j'ai acheté un produit et ils ont dit plus tard, ils n'étaient plus en stock. Je ne voulais pas d'une transaction rémunérée. Je voulais que mon article!

à l'échelle puis NoSQL ou SQL peuvent travailler. Recherchez les systèmes qui permettent l'élimination, Le partitionnement, l'ajout et l'enlèvement de machines sous tension, l'équilibrage de la charge, le tranchage et le rééquilibrage automatiques, et la tolérance aux défauts.

toujours être capable de écrire à une base de données parce que vous besoin de haute disponibilité, puis regarder Bigtable Clones qui présentent une consistance éventuelle.

"151900920 • * pour manipuler des lots de petits continu lit et écrit , qui peuvent être volatiles, puis regarder le Document ou la valeur de la clé ou des bases de données offrant un accès rapide en mémoire. Aussi, considérons SSD .

• à mettre en œuvre réseau social des opérations de puis de la première voudrez peut-être un Graphique base de données ou deuxièmement, une base de données comme Riak qui soutient des relations. Une base de données relationnelle en mémoire avec des jointures SQL simples pourrait suffire pour de petits ensembles de données. Redis " les opérations set et list peuvent fonctionner aussi.

• à opérer sur les une grande variété de modèles d'accès et les types de données puis regarder un Document de la base de données, généralement, ils sont flexibles et performants.

• puissant hors ligne des rapports avec de grands ensembles de données alors regarde Hadoop de la première et de la deuxième, les produits MapReduce . Soutenir MapReduce n'est pas la même chose que d'être bon à ça.

s'étendent sur plusieurs centres de données alors regarde Bigtable Clones et d'autres produits qui offrent une distribué option qui peut gérer les longues latences et sont partition tolérant .

• pour construire CRUD apps puis regarder une base de données de documents, ils rendent facile d'accéder à des données complexes sans jointures.

recherche intégré alors regarde Riak .

• pour fonctionner sur structures de données comme les listes, les ensembles, les files d'attente, de publier-souscrire ensuite, regardez Redis . Utile pour le verrouillage distribué, les rondins plafonnés, et bien plus encore.

programmeur amitié dans le formulaire de programmeurs types de données comme JSON, HTTP, REST, Javascript puis regardez d'abord le Document de bases de données et la Clé-valeur des Bases de données.

transactions combiné avec vues matérialisées pour en temps réel flux de données, puis de regarder VoltDB . Idéal pour les rouleaux de données et fenêtrage de temps .

au niveau de l'entreprise de soutien et de Sla alors cherchez un produit qui fait un point de restauration pour ce marché. Membase en est un exemple.

• journal ruisseaux de données qui peuvent ne pas avoir la consistance des garanties nécessaires à tous, alors regarde Bigtable Clones parce qu'ils travaillent généralement sur des systèmes de fichiers distribués qui peuvent gérer beaucoup d'Écritures.

aussi simple que possible puis recherchez hébergé ou PaaS solution parce qu'ils vont faire tout le travail pour vous.

* à vendre à enterprise customers alors considérer une base de données relationnelles parce qu'ils sont utilisés à la technologie relationnelle.

• à construire des relations dynamiques entre les objets qui ont propriétés dynamiques alors considérer une base de données de graphe parce que souvent ils ne nécessitent pas un schéma et les modèles peuvent être construits progressivement par la programmation.

• le soutien à la grands médias alors, regarde des services de stockage comme S3 . NoSQL les systèmes ont tendance à ne pas traiter les grosses BLOBS , bien que MongoDB dispose d'un service de fichiers.

en vrac télécharger beaucoup de données rapidement et efficacement pour trouver un produit qui prend en charge ce scénario. La plupart ne le feront pas parce qu'ils n'appuient pas les opérations en vrac.

• an easier upgrade path puis utiliser un système de schéma fluide comme une base de données de documents ou une base de données de valeur de clé parce qu'il soutient des champs optionnels, ajoutant les champs, et les suppressions de champ sans la nécessité de construire un cadre de migration de schéma entier.

* pour implémenter integrity constraints puis choisir une base de données qui supporte SQL DDL , les implémenter dans des procédures stockées, ou les implémenter dans le code d'application.

• un très profonde rejoindre profondeur puis d'utiliser un Graphique de la Base de données parce qu'ils soutiennent blisteringly une navigation rapide entre entité.

comportement proche de données de sorte que les données n'ont pas à être déplacés sur le réseau, puis regarder des procédures stockées d'une façon ou d'une autre. Ceux-ci peuvent être trouvés dans des bases de données relationnelles, de grille, de Document, et même de valeur-clé.

cache ou magasin de BLOB "151940920 de données", puis regarder un Key-value store. La mise en cache peut pour des bits de pages web, ou pour sauver des objets complexes qui étaient coûteux de se joindre à un base de données relationnelle, pour réduire la latence, et ainsi de suite.

• un preuves , comme ne pas corrompre des données et, en général, de travail puis choisissez un produit établi et lorsque vous appuyez sur mise à l'échelle (ou d'autres problèmes) utilisez l'une des communes les solutions de contournement (mise à l'échelle, tuning, memcached, sharding , dénormalisation , etc).

fluide "types de données 151940920" parce que vos données n'est pas de nature tabulaire, ou nécessite un nombre flexible de colonnes, ou a une structure complexe, ou varie par utilisateur (ou quoi que ce soit), puis regarder Document, Key-value, et Bigtable clones bases de données. Chacun a beaucoup de flexibilité dans ses types de données.

• d'autres unités d'affaires de exécution rapide des requêtes relationnelles afin de ne pas avoir à ré-écrire tout, puis de l'utilisation d'une base de données qui prend en charge SQL.

* à opérez dans le nuage et profitez automatiquement de toutes les fonctionnalités du nuage, alors nous n'en sommes peut-être pas encore là.

* prise en charge de index secondaires pour que vous puissiez rechercher des données par différentes clés puis regarder les bases de données relationnelles et Cassandra 's nouveau index secondaire prise en charge.

• créer un ensemble toujours croissant de données (vraiment BigData ) qui est rarement accessible alors regardez Bigtable Clone qui diffusera les données sur un système de fichiers distribués.

l'intégration avec d'autres services , puis vérifiez si la base de données fournit une sorte d'écriture derrière fonctionnalité de synchronisation de sorte que vous pouvez capturer les modifications de base de données et à les transférer dans d'autres systèmes afin d'assurer la cohérence.

tolérance de panne vérifier comment les Écritures durables sont dans les pannes de courant de face, les cloisons, et d'autres scénarios de défaillance.

"151900920 • * pour pousser l'enveloppe technologique dans une direction où personne ne semble aller, alors construisez-la vous-même parce que c'est ce qu'il faut pour être grand parfois.

• pour travailler sur une plate-forme mobile alors regardez CouchDB/ couchbase Mobile .


Usage Général Cas (NoSQL)

Grandeur . Le NoSQL est vu comme un élément clé d'une nouvelle donnée de la pile à l'appui: big data, de grands nombres d'utilisateurs, un grand nombre d'ordinateurs, big chaînes d'approvisionnement, big science, et ainsi de suite. Quand quelque chose devient si massif qu'il doit être massivement distribué, NoSQL est là, bien que tous les systèmes NoSQL ne ciblent pas grand. Bigness peut être à travers de nombreuses dimensions différentes, pas seulement en utilisant beaucoup d'espace disque.

Massif des performances d'écriture. c'est probablement l'usage canonique basé sur L'influence de Google. Le volume est élevé. Facebook doit stocker 135 milliards de messages par mois (en 2010) . Twitter, par exemple, a le problème de stocker 7 TB/données par jour (en 2010) avec la perspective de cette exigence doubler plusieurs fois par an. Ce sont les données est trop grand pour s'adapter sur un problème de noeud. À 80 MB / s, il faut un jour pour stocker 7TB, donc les Écritures doivent être distribuées sur un cluster, ce qui implique l'accès aux valeurs clés, MapReduce, réplication, tolérance aux défauts, problèmes de cohérence, et tout le reste. Pour des Écritures plus rapides, des systèmes en mémoire peuvent être utilisés.

Fast valeur-clé d'accès. c'est probablement la deuxième Vertu la plus citée de NoSQL dans l'état d'esprit général. Lorsque la latence est importante, il est difficile de battre la clé et la lecture de la valeur directement de la mémoire ou dans aussi peu qu'un disque cherchent. Tous les produits NoSQL ne sont pas axés sur l'accès rapide, certains sont davantage axés sur la fiabilité, par exemple. mais ce que les gens veulent depuis longtemps, c'est un meilleur memcached et de nombreux systèmes NoSQL offrent cela.

Flexible schéma flexible et les types de données. les produits NoSQL prennent en charge toute une gamme de nouveaux types de données, et il s'agit d'un domaine majeur d'innovation dans NoSQL. Nous avons: orienté colonne, Graphique, structures de données avancées, orienté document, et valeur clé. Les objets complexes peuvent être facilement stockés sans beaucoup de mappage. Les développeurs aiment éviter les schémas complexes et ORM cadres. Le manque de structure permet beaucoup plus de souplesse. Nous avons aussi des types de données compatibles, comme JSON, qui sont compatibles avec les programmes et les programmeurs.

Schéma de migration. Schemalessness rend plus facile de traiter avec schema migrations sans tellement inquiétant. Les schémas sont dans un sens dynamiques parce qu'ils sont imposés par l'application à l'exécution, de sorte que différentes parties d'une application peuvent avoir une vue différente du schéma.

Write disponibility. vos écrits doivent-ils réussir quoi qu'il arrive? Puis nous pouvons entrer dans le partitionnement, CAP , consistance éventuelle et tout ce jazz.

facilité de maintenance, d'administration et d'exploitation. C'est très spécifique au produit, mais de nombreux fournisseurs de NoSQL essaient d'obtenir l'adoption en facilitant l'adoption par les développeurs. Ils consacrent beaucoup d'efforts à la facilité d'utilisation, à l'administration minimale et aux opérations automatisées. Cela peut conduire à des coûts d'exploitation plus faibles car le code spécial n'a pas à être écrit à l'échelle d'un système qui n'a jamais été prévu pour être utilisé de cette façon.

Aucun point de défaillance unique. tous les produits ne répondent pas à cette exigence, mais nous observons une convergence certaine sur une grande disponibilité relativement facile à configurer et à gérer avec l'équilibrage automatique de la charge et le dimensionnement des clusters. Un partenaire cloud parfait.

Généralement disponibles de calcul parallèle. nous voyons MapReduce cuit en produits, ce qui rend le calcul parallèle quelque chose qui sera une partie normale du développement à l'avenir.

Programmeur facilité d'utilisation. accéder à vos données devrait être facile. Bien que le modèle relationnel soit intuitif pour les utilisateurs finaux, comme les comptables, il n'est pas très intuitif pour les développeurs. Programmeurs grok clés, valeurs, JSON, procédures stockées Javascript, HTTP, et ainsi de suite. NoSQL est pour les programmeurs. C'est un coup d'état dirigé par les développeurs. La réponse à un problème de base de données ne peut pas toujours être d'embaucher un très bien informé DBA , obtenir votre schéma d'accord, dénormaliser un peu, etc., les programmeurs préféreraient un système qu'ils peuvent faire fonctionner pour eux-mêmes. Ça ne devrait pas être si dur de rendre un produit performant. L'argent est une partie de la question. Si cela coûte cher de dimensionner un produit, alors n'irez-vous pas avec le produit meilleur marché, que vous contrôlez, qui est plus facile à utiliser, et qui est plus facile à dimensionner?

utilisez le bon modèle de données pour le bon problème. différents modèles de données sont utilisés pour résoudre différents problème. Beaucoup d'efforts ont été déployés, par exemple, pour caler les opérations des graphes dans un modèle relationnel, mais cela ne fonctionne pas. N'est-il pas préférable de résoudre un problème de graphe dans une base de données de graphe? Nous voyons maintenant une stratégie générale consistant à tenter de trouver la meilleure adéquation entre un problème et une solution.

Evitez de frapper le mur. de nombreux projets ont heurté un mur dans leur projet. Ils ont épuisé toutes les options pour faire leur échelle système ou effectuer correctement et vous vous demandez quelle est la prochaine étape? Il est réconfortant de choisir un produit et une approche qui peuvent sauter par-dessus le mur en adoptant une échelle linéaire à l'aide de ressources incrémentalement ajoutées. À une époque, ce n'était pas possible. Il a fallu tout construire sur mesure, mais ça a changé. Nous voyons maintenant des produits hors de la boîte utilisables qu'un projet peut facilement adopter.

Distribuée des systèmes de soutien. tout le monde N'est pas inquiet au sujet de l'échelle ou de la performance au-delà de ce qui peut être réalisé par des systèmes non-NoSQL. Ce dont ils ont besoin, c'est d'un système distribué capable de couvrir les datacenters tout en manipulant des scénarios de défaillance sans problème. NoSQL systèmes, parce qu'ils ont mis l'accent sur l'échelle, ont tendance à exploiter les partitions, ont tendance à ne pas utiliser de lourds protocoles de cohérence stricte, et sont donc bien positionnés pour fonctionner dans des scénarios distribués.

réglage de la PAC compromis . NoSQL systèmes sont généralement les seuls produits avec un "curseur" pour choisir où ils veulent atterrir sur le spectre CAP. Les bases de données relationnelles trouvent une forte cohérence, ce qui signifie qu'elles ne peuvent tolérer une défaillance de la partition. En fin de compte, c'est une décision d'affaires et doit être décidé au cas par cas. Est-ce que votre application se soucie même de cohérence? Quelques gouttes OK? Votre application a-t-elle besoin d'une cohérence forte ou faible? La disponibilité est-elle plus importante ou l'uniformité est-elle plus importante? Est-ce que ça coûtera plus cher d'être déprimé que d'avoir tort? C'est agréable d'avoir des produits de que vous donner un choix.

Plus Spécifiques Du Cas D'Utilisation

• Gestion de grands flux de données non transactionnelles: logs Apache, journaux d'application, MySQL des journaux, clickstreams, etc.

"151900920 • * synchronisation des données en ligne et hors ligne. Il s'agit d'un créneau CouchDB a ciblé.

• temps de réponse Rapide, en vertu de toutes les charges.

• Éviter les jointures lourdes lorsque la charge de requête pour les jointures complexes devient trop importante pour un RDBMS .

• Les systèmes en temps réel, où une faible latence est critique. Les jeux sont un exemple.

"151900920 • * Applications où une grande variété de différents modèles d'écriture, de lecture, de requête et de cohérence doivent être pris en charge. Il y a des systèmes optimisés pour 50% lit 50% écrit, 95% écrit, ou 95% lit. Applications en lecture seule nécessitant une vitesse extrême et la résilience, des requêtes simples, et peut tolérer des données légèrement périmées. Applications nécessitant des performances modérées, accès en lecture/écriture, requêtes simples, données faisant totalement autorité. Une application en lecture seule qui nécessite des requêtes complexes.

"151900920 • * balance de charge pour accommoder les données et les concentrations d'utilisation et pour aider à garder les microprocesseurs occupés.

• inserts, mises à jour et requêtes en temps réel.

"151900920 • * données hiérarchiques comme threaded discussions et explosion de pièces.

• Dynamique de la création de la table.

"151900920 • * applications à deux niveaux dans lesquelles les données à faible latence sont disponibles via une interface NoSQL rapide, mais les données elles-mêmes peuvent être calculées et mises à jour par des applications Hadoop à haute latence ou d'autres applications à faible priorité.

données Séquentielles de lecture. le bon modèle de stockage de données sous-jacent doit être sélectionné. Un arbre B n'est peut-être pas le meilleur modèle pour des lectures séquentielles.

• découpage d'une partie du service qui pourrait nécessiter une meilleure performance/évolutivité sur son propre système. Par exemple, les logins des utilisateurs peuvent devoir être très performants et cette fonctionnalité pourrait utiliser un service dédié pour atteindre ces objectifs.

• "151910920 la mise en Cache". un niveau de mise en cache haute performance pour les sites Web et autres applications. Un exemple est un cache pour le système D'agrégation de données utilisé par le Large Hadron Collider. Vote.

• compteurs de vue de page en temps réel.

• données D'inscription, de profil et de session de L'utilisateur.

du Document, de la gestion du catalogue et des systèmes de gestion de contenu. ceux-ci sont facilités par la capacité de stocker des documents complexes a un tout plutôt que organisé comme des tables relationnelles. Une logique similaire s'applique à l'inventaire, aux chariots de magasinage et à d'autres types de données structurées.

Archiver. stockant un grand flux continu de données qui est encore accessible en ligne. Des bases de données documentaires avec un schéma flexible qui peut gérer les changements de schéma au fil du temps.

Analytics. utilisez MapReduce, Hive, ou Pig pour effectuer des requêtes analytiques et des systèmes de scale-out qui supportent des charges d'écriture élevées.

• travaillant avec types de données hétérogènes , par exemple, différents supports des types génériques.

• systèmes Embarqués. Ils ne veulent pas les frais généraux de SQL et les serveurs, donc ils utilisent quelque chose de plus simple pour le stockage.

• un jeu de" market", où vous possédez des bâtiments dans une ville. Vous voulez que la liste de bâtiment de quelqu'un pop up rapidement, de sorte que vous cloisonnez sur la colonne Propriétaire de la table de bâtiment, de sorte que le select est mono-partitionné. Mais quand quelqu'un achète le bâtiment de quelqu'un d'autre vous mettez à jour la colonne propriétaire avec prix.

JPL utilise Simplebd pour stocker rover attributs de plan. Des références sont conservées à un plan complet blob dans S3 . (source)

• loi Fédérale organismes d'application de la suivi Américains en temps réel à l'aide de cartes de crédit, cartes de fidélité et des réservations de voyage.

de détection de la Fraude en comparant les transactions à des schémas connus en temps réel.

diagnostiquer la typologie des tumeurs par l'intégration de l'histoire de chaque patient.

• base de données En mémoire pour la haute situations de mise à jour, comme un site web , qui affiche tout le monde est "actif" de temps (pour le chat peut-être). Si les utilisateurs exécutent une activité une fois toutes les 30 secondes, vous serez à peu près à votre limite avec environ 5000 utilisateurs simultanés.

"151900920 • * traitement des requêtes multi-partitions à basse fréquence en utilisant des vues matérialisées tout en continuant à traiter les données en continu à haute fréquence.

• files d'attente de Priorité.

"151900920 • * exécution de calculs sur des données en cache, à l'aide d'une interface conviviale, sans avoir à passer par un ORM .

Uniq un grand jeu de données à l'aide de simples clé-valeur des colonnes.

"151900920 • * pour continuer à interroger rapidement, les valeurs peuvent être enroulées en tranches de temps différentes.

• calcul de l'intersection de deux ensembles massifs, où une jonction serait trop lente.

• A timeline ala Twitter .

Redis cas d'utilisation, VoltDB cas d'utilisation et plus trouver ici .

60
répondu daniel__ 2018-10-03 09:23:42

cette question est presque impossible à répondre en raison de la généralité. Je pense que vous êtes à la recherche d'une sorte de problème de réponse facile = solution. Le problème est que chaque "problème" devient de plus en plus unique, car il devient une entreprise.

Comment appelez-vous un réseau social? Twitter? Facebook? LinkedIn? Un Débordement De Pile? Ils utilisent tous différentes solutions pour différentes parties, et de nombreuses solutions peuvent exister qui utilisent l'approche polyglotte. Twitter a un graphique comme concept, mais il n'y a que 1 degré de connexions, de suiveurs et de Suiveurs. LinkedIn, d'un autre côté, se nourrit de montrer comment les gens sont connectés au-delà du premier degré. Il s'agit de deux besoins différents en matière de traitement et de données, mais tous deux sont des "réseaux sociaux".

si vous avez un" réseau social " mais ne faites pas de mécanismes de découverte, alors vous pouvez facilement utiliser n'importe quel magasin de valeur de clé de base très probablement. Si vous avez besoin de haute performance, échelle horizontale, et aura des indices secondaires ou recherche en texte intégral, vous pouvez utiliser Couchbase .

si vous faites de l'apprentissage automatique en plus des données que vous recueillez, vous pouvez intégrer Hadoop avec la ruche ou le porc, ou Spark/Shark. Ou vous pouvez faire une architecture lambda et utiliser de nombreux systèmes différents avec Storm.

si vous faites la découverte via des requêtes de type graphe qui vont au-delà des vertex de 2ème degré et filtrent aussi les propriétés de bord, vous considérerez probablement les bases de données de graphe en haut de votre magasin principal. Toutefois, les bases de données graphiques ne sont pas de bons choix pour les magasins de session, ou comme magasins à usage général, donc vous aurez besoin d'une solution polyglotte pour être efficace.

Quelle est la vitesse des données? échelle? comment voulez-vous gérer. Quelles sont les compétences disponibles dans l'entreprise ou le démarrage. Il y a un certain nombre de raisons pour lesquelles il ne s'agit pas d'une simple question et réponse.

5
répondu scalabl3 2013-08-15 02:07:00

une courte lecture utile spécifique à la sélection de base de données: Comment choisir une base de données NoSQL? . Je soulignerai les points clés dans cette réponse.

Clé-Valeur vs orientée Document

Clé-valeur des magasins

si vous avez une structure de données claire définie de sorte que toutes les données auraient exactement une clé, optez pour un stockage de valeur de clé. C'est comme si tu avais un grand Hashtable, et que les gens utilisent il pour les magasins de Cache ou clairement des données basées. Cependant, les choses commencent à aller un peu désagréable lorsque vous avez besoin de requête les mêmes données sur la base de plusieurs clés!

certains magasins de valeur clé sont: memcached , Redis , Aerospike .

deux choses importantes au sujet de la conception de votre modèle de données autour de la valeur clé magasin sont:

  • Vous devez connaître tous les cas d'utilisation dans advance et vous ne pouvez pas modifier les champs interrogeables de vos données sans avoir à les modifier.
  • rappelez-vous, si vous allez maintenir plusieurs clés autour des mêmes données dans un magasin de valeur de clé, les mises à jour de plusieurs tables/seaux/collection/quoi que ce soit qui ne sont pas atomiques. Vous avez besoin de traiter avec vous-même.

documentaire

si vous êtes en train de vous éloigner du RDBMS et que vous voulez garder vos données en tant qu'objet et aussi proche que possible de la structure en forme de table, document-structure est la voie à suivre! Particulièrement utile lorsque vous créez une application et que vous ne voulez pas traiter la conception de table RDBMS à un stade précoce (en prototypage) et votre schéma pourrait changer radicalement avec le temps. A noter toutefois:

  • les indices secondaires peuvent ne pas fonctionner aussi bien.
  • Les Transactions
  • ne sont pas disponibles.

populaire les bases de données documentaires sont: MongoDB , Couchbase .

Comparing Key-value NoSQL databases""

memcached

  • cache en mémoire
  • pas de persistance
  • TTL", appuyé par 1519240920"
  • regroupement côté client seulement (le client stocke la valeur à plusieurs noeuds). Extensible horizontalement par client.
  • Pas bon pour les grandes valeurs de la taille/les documents

Redis

  • cache en mémoire
  • disque supporté-sauvegarde et reconstruction à partir du disque
  • TTL prise en charge
  • Super-rapide (voir repères )
  • support de structure de données en valeur ajoutée à la clé
  • prise en charge des Clusters n'est pas assez mature encore. Échelonnable verticalement (voir spécification Redis Cluster )
  • l'échelle horizontale pourrait être délicate.
  • Supports index secondaires

Aerospike

  • à la fois en mémoire et sur disque
  • Extrêmement rapide (peut-prise en charge >1 Million de TPS sur un seul nœud)
  • extensible horizontalement. Regroupement côté serveur. Fragmenté et des données répliquées
  • "1519230920 Automatique" basculements
  • Supports index secondaires
  • SAE (sécurité des read-modify-write) de l'exploitation, TTL support
  • classe Entreprise

Comparaison orientée document NoSQL bases de données

MongoDB

  • Rapide
  • Mature et stable – riche en fonctionnalités
  • Supports basculements
  • extensible Horizontalement lit – lecture à partir de réplica secondaire
  • écrit pas extensible horizontalement sauf si vous utilisez des éclats de mongo
  • supporte les requêtes avancées
  • Supports indices secondaires multiples
  • Shards architecture devient délicate, non évolutive au-delà d'un point où vous avez besoin des index secondaires. Le déploiement d'un fragment élémentaire nécessite au moins 9 noeuds.
  • les serrures au niveau des documents sont un problème si vous avez un taux d'écriture très élevé

Couchbase Server

  • Rapide
  • Fragmenté cluster au lieu de maître-esclave de mongodb
  • à Chaud " basculement
  • horizontalement modulable
  • supporte les index secondaires par des vues
  • courbe D'apprentissage plus grande que MongoDB
  • prétend être plus rapide
0
répondu naXa 2018-10-03 10:37:38