199 votes

Y at-il aucun NoSQL qui est compatible avec l’acide ?

Y at-il aucun NoSQL qui est compatible avec l’acide ?

(Ou même possible avec NoSQL donné, c’est juste un tas de couplage lâche paires clé-valeur).

126voto

AJ. Points 1607

Je vais poster cela comme une réponse purement à l'appui de la conversation - Tim Mahy , nawroth , et CraigTP ont suggéré viable bases de données. CouchDB serait mon préféré en raison de l'utilisation de Erlang, mais il y a d'autres là-bas.

Je dirais que l'ACIDE n'est pas en contradiction ou de nier le concept de NoSQL... Alors qu'il semble y avoir une tendance de l'opinion exprimée par la colombe , je dirais que l'notions sont distinctes.

Le NoSQL est fondamentalement simple clé-valeur (par exemple, Redis) ou d'un document de style de schéma (recueil des paires clé-valeur dans un "document" modèle, par exemple, MongoDB) en direct alternative au schéma explicite dans la musique classique, des Sgbdr. Il permet au développeur de traiter les choses de façon asymétrique, alors que les moteurs de règles rigides de même ness à travers le modèle de données. La raison pour cela est si intéressant, c'est parce qu' il offre une façon différente de faire face au changement, et pour les grands ensembles de données, il offre des possibilités intéressantes pour traiter des volumes et de la performance.

L'ACIDE fournit des principes régissant la façon dont les modifications sont appliquées à une base de données. Dans une façon très simplifiée, elle précise (ma version):

  • (A) lorsque vous faites quelque chose pour changer une base de données, le changement doit travailler ou l'échec comme un ensemble de
  • (C) la base de données doit rester cohérent (c'est une question assez vaste sujet)
  • (I) si d'autres choses sont en cours, en même temps qu'ils ne devraient pas être en mesure de voir les choses à la mi-mise à jour
  • (D) si le système explose (matériel ou logiciel), la base de données doit être en mesure de prendre lui-même; et s'il dit qu'elle fini de l'application d'une mise à jour, il doit être certain

La conversation devient un peu plus nerveux quand il s'agit de l'idée de la propagation et de contraintes. Certains SGBDR moteurs offrent la possibilité d'appliquer des contraintes (par exemple, les clés étrangères) qui peut avoir de la propagation des éléments (la cascade). En termes plus simples, une "chose" peut-être avoir une relation avec une autre "chose" dans la base de données, et si vous modifiez un attribut de l'un, il peut demander à l'autre d'être modifiées (mises à jour, supprimées ... beaucoup d'options). NoSQL bases de données, principalement (pour le moment) qui se concentre sur les volumes de données et de trafic élevé, semblent s'attaquer à l'idée de distribution des mises à jour qui prennent place à l'intérieur (à partir d'un point de vue du consommateur) arbitraire délais. Ce qui est essentiellement une forme spécialisée de la réplication géré par transaction - donc, je dirais que si un traditionnels de bases de données distribuées peuvent soutenir l'ACIDE, une base de données NoSQL.

Quelques ressources pour aller plus loin:

41voto

CraigTP Points 18514

Mise à JOUR (27 juillet 2012): Lien vers l'article de Wikipedia a été mis à jour pour refléter la version de l'article qui était en vigueur lors de cette réponse a été publiée. Veuillez noter que l' actuel article de Wikipédia a été largement révisée!

Eh bien, selon une ancienne version d'un article de Wikipedia sur le NoSQL:

Le NoSQL est un mouvement visant à promouvoir une vaguement défini classe de données non relationnelles magasins qui cassent avec une longue histoire de relationnel les bases de données et de l'ACIDE garanties.

et aussi:

Le nom a été une tentative de décrire l'émergence d'un nombre croissant de non-relationnelle, les données distribuées les magasins qui souvent n'a pas tenté de fournir de l'ACIDE garanties.

et

NoSQL systèmes fournissent souvent faible la cohérence des garanties telles que la cohérence des résultats et des transactions limité à un seul des éléments de données, même bien que l'on peut imposer complet ACIDE garanties par l'ajout d'une complémentaire couche logicielle.

Alors, en un mot, je dirais que l'un des principaux avantages d'un "NoSQL" magasin de données est nettement son manque d' ACIDE propriétés. En outre, à mon humble avis, plus on tente de mettre en œuvre et appliquer de l'ACIDE propriétés, le plus loin de "l'esprit" de un "NoSQL" magasin de données que vous obtenez, et le plus proche pour un "vrai" SGBDR vous obtenez (relativement parlant, bien sûr).

Cependant, tout ce que dit, "NoSQL" est un terme très vague et est ouvert à des interprétations personnelles, et dépend fortement de la juste la façon dont beaucoup d'un puriste point de vue que vous avez. Par exemple, la plupart des modernes systèmes SGBDR ne fait pas adhérer à tous de Edgar F. Codd' 12 règles de sa relation modèle!

Adoptant une approche pragmatique, il semblerait que Apache CouchDB est le plus proche, à incarner à la fois de l'ACIDE-conformité, tout en gardant faiblement couplée, non-relationnelle "NoSQL" mentalité.

38voto

Arnaud Bouchez Points 25855

Assurez - vous de lire les Martin Fowler introduction sur les bases de données NoSQL. Et la vidéo correspondante.

Tout d'abord, nous pouvons distinguer deux types de bases de données NoSQL:

  1. Agrégation des bases de données orientées;
  2. Graphique-les bases de données orientées (par exemple, Neo4J).

De par sa conception, plus Graphique, les bases de données orientées sont l'ACIDE!

Ensuite, ce que les autres types?

Dans l'ensemble des bases de données orientées, on peut mettre trois sous-types:

  • Document basé sur les bases de données NoSQL (par exemple, MongoDB, CouchDB);
  • Clé/Valeur des bases de données NoSQL (par exemple, Redis);
  • La colonne de la famille des bases de données NoSQL (par exemple Hibase, Cassandra).

Ce que nous appelons un Agrégat ici, est ce qu'Eric Evans défini dans son Domain-Driven Design que l'autosuffisance des Entités et de la Valeur des Objets dans un Contexte Délimité.

En conséquence, un agrégat est une collection de données que nous interagir avec une unité. Agrégats forment les limites de l'ACIDE les opérations avec la base de données. (Martin Fowler)

Ainsi, au niveau global, on peut dire que la plupart des bases de données NoSQL peut être aussi fort que l'ACIDE SGBDR, avec les paramètres appropriés. De la source, si vous régler votre serveur pour le meilleur de la vitesse, on peut tomber dans quelque chose de non ACIDE. Mais la réplication de l'aide.

Mon point principal est que vous devez utiliser les bases de données NoSQL comme ils sont, et non comme un (bon) alternative à SGBDR. J'ai vu trop de projets en abusant de relations entre les documents. Cela ne peut pas être ACIDE. Si vous restez au niveau du document, c'est à dire à Agréger les limites, vous n'avez besoin d'aucune transaction. Et vos données seront aussi sûr qu'avec un ACIDE, base de données, même si c'est pas vraiment ACIDE, puisque vous n'avez pas besoin de ceux des transactions! Si vous avez besoin des transactions et mettre à jour plusieurs "documents", à la fois, vous n'êtes pas dans le monde NoSQL plus - donc utiliser un SGBDR moteur à la place!

21voto

CoreDev Points 96

Dans cette question, quelqu'un doit mentionner OrientDB: OrientDB est une base de données NoSQL, un des rares, qui prennent en charge les transactions ACID entièrement. L’acide n’est pas uniquement pour les SGBDR parce qu’il ne fait pas partie de l’algèbre relationnelle. Il est donc possible d’avoir un NoSQL de base de données qui prennent en charge acide.

Cette fonctionnalité est celle qui me manque le plus dans MongoDB

19voto

Ken Tindell Points 141

FoundationDB est compatible avec l’acide :

http://www.foundationdb.com/

Il effectue des opérations appropriées, alors vous pouvez mettre à jour plusieurs éléments de données disparates dans un mode acide. Cela est utilisé comme base pour maintenir l’index à une couche supérieure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X