Y a-t-il un magasin de données NoSQL conforme à L'ACID?

Est-il un NoSQL banque de données ACIDE conforme à la loi?

122
demandé sur Community 2010-04-09 18:05:17

29 réponses

je vais poster ceci comme une réponse purement pour soutenir la conversation - Tim Mahy , nawroth , et CraigTP ont suggéré des bases de données viables. CouchDB serait mon préféré en raison de l'utilisation de Erlang , mais il ya d'autres là-bas.

je dirais acide ne contredit pas ou ne nie pas le concept de NoSQL ... Bien qu'il semble y avoir une tendance suivant l'opinion exprimée par dove , je dirais que les concepts sont distincts.

NoSQL concerne fondamentalement la valeur de clé simple (par exemple Redis) ou le schéma de style de document (les paires de valeurs de clé collectées dans un modèle de "document", par exemple MongoDB) comme une alternative directe au schéma explicite dans les RDBMSs classiques. Il permet au développeur de traiter choses asymétriquement, alors que les moteurs traditionnels ont imposé rigide même-ness à travers le modèle de données. La raison pour laquelle ceci est si intéressant est parce que il fournit une manière différente de traiter le changement , et pour des ensembles de données plus grands il fournit des occasions intéressantes pour traiter les volumes et la performance.

ACID fournit les principes régissant la façon dont les changements sont appliqués à une base de données. En très simplifié d'ailleurs, il est écrit (dans ma propre 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 et s'il dit qu'il a fini d'appliquer une mise à jour, il doit être certain

la conversation devient un peu plus excitable quand il s'agit de l'idée de propagation et contraintes . Certains moteurs RDBMS offrent la possibilité d'imposer des contraintes (par exemple des clés étrangères) qui peuvent avoir des éléments de propagation (a la cascade ). En termes plus simples, une "chose" peut avoir un lien avec une autre "chose" dans la base de données, et si vous changez un attribut de l'un il peut exiger que l'autre soit changé (mis à jour, supprimé, ... beaucoup d'options). NoSQL les bases de données, étant principalement (à l'heure actuelle) axées sur des volumes de données élevés et un trafic élevé, semblent aborder l'idée de mises à jour distribuées qui ont lieu dans (du point de vue du consommateur) des délais arbitraires. Il s'agit essentiellement d'une forme spécialisée de réplication géré via transaction - donc je dirais que si une base de données distribuée traditionnelle peut supporter L'acide, une base de données NoSQL aussi.

Quelques ressources pour aller plus loin:

93
répondu AJ. 2017-05-23 12:10:33

mise à JOUR (27 juillet 2012): le lien vers L'article de Wikipedia a été mis à jour pour refléter la version de l'article qui était en vigueur lorsque cette réponse a été affichée. Veuillez noter que l'article de Wikipédia actuel a été considérablement révisé!

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

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

et aussi:

le nom était une tentative de décrire l'émergence d'un nombre croissant de données distribuées non relationnelles magasins qui souvent n'ont pas essayé de fournir des garanties D'acidité.

et

NoSQL systèmes fournissent souvent faible la cohérence des garanties telles que cohérence et transactions éventuelles limité à un seul élément de données, même bien que l'on puisse imposer le plein acide garanties par l'ajout d'une complémentaire couche logicielle.

donc, en un mot, je dirais que l'un des principaux avantages d'un magasin de données" NoSQL "est son distinct manque de acide propriétés. Outre, IMHO, plus on essaie de mettre en œuvre et de faire respecter les propriétés acide , plus on s'éloigne de l ' "esprit" D'un Data store "NoSQL" que vous obtenez, et plus on se rapproche d'un "vrai" RDBMS que vous obtenez (relativement parlant, bien sûr).

cependant, tout ce qui a dit, "NoSQL" est un terme très vague et est ouvert à des interprétations individuelles, et dépend fortement de combien d'un point de vue puriste vous avez. Par exemple, la plupart des SGBDR modernes les systèmes n'adhèrent pas réellement à toutes de Edgar F. Codd 's 12 règles de son relation model !

en adoptant une approche pragmatique, il semblerait que le CouchDB D'Apache soit le plus proche d'incarner à la fois la conformité à L'acide tout en conservant une mentalité de "NoSQL" faiblement couplée et non relationnelle.

32
répondu CraigTP 2012-07-27 18:38:33

FoundationDB est ACIDE conforme:

http://www.foundationdb.com /

il a des transactions appropriées, de sorte que vous pouvez mettre à jour de multiples éléments de données disparates d'une manière acide. Ceci est utilisé comme base pour maintenir les indices à une couche supérieure.

18
répondu Ken Tindell 2013-01-25 18:23:07

dans cette question quelqu'un doit mentionner OrientDB : OrientDB est une base de données NoSQL, l'une des rares à prendre en charge les transactions entièrement acides. L'acide n'est pas seulement pour les RDBM car il ne fait pas partie de l'algèbre relationnelle. Il est donc possible d'avoir une base de données NoSQL qui supporte L'acide.

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

16
répondu CoreDev 2012-02-22 00:11:14

, Veuillez vous assurer que vous lisez l'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:

    "151970920 de la" somme des bases de données orientées;
  1. bases de données à base de graphiques (par exemple Neo4J).

Par la conception, la plupart des Graphique de bases de données orientées-ACIDE !

alors, qu'en est-il des autres types?

dans les bases de données axées sur les agrégats, nous pouvons mettre trois sous-types:

  • bases de données NoSQL fondées sur des documents (p.ex. MongoDB, CouchDB);
  • bases de données NoSQL clé / valeur (p.ex. Redis);
  • Les bases de données NoSQL de la famille de colonnes
  • (par exemple Hibase, Cassandra).

ce que nous appelons un agrégat ici, est ce Qu'Eric Evans a défini dans son Domain-Driven Design comme un autosuffisant D'entités et D'objets de valeur dans un contexte limité donné.

par conséquent, un agrégat est une collecte de données que nous interagir avec une unité. Les agrégats forment les limites de L'acide les opérations avec la base de données. (Martin Fowler)

donc, au niveau agrégé, nous pouvons dire que la plupart des bases de données NoSQL peut être aussi sûr que L'acide RDBMS , avec les réglages appropriés. De source, si vous accordez votre serveur pour la meilleure vitesse, vous pouvez venir dans quelque chose de non acide. Mais la réplication aidera.

mon point principal est que vous devez utiliser les bases de données NoSQL telles quelles, et non pas comme une alternative (bon marché) aux SGBDR. J'ai vu trop de projets abuser des relations entre documents. Cela ne peut pas être ACIDE. Si vous restez au niveau du document, c'est-à-dire aux limites agrégées, vous n'avez pas besoin de transaction. Et vos données seront aussi sûres qu'avec une base de données ACID, même si elle n'est pas vraiment acide, puisque vous n'avez pas besoin de ces transactions! Si vous avez besoin de transactions et de mettre à jour plusieurs "documents" à la fois, vous n'êtes plus dans le monde NoSQL - utilisez donc un moteur RDBMS à la place!

14
répondu Arnaud Bouchez 2014-02-28 20:51:25

acide et NoSQL sont complètement orthogonaux. L'un n'implique pas l'autre.

j'ai un carnet sur mon bureau, je l'utilise pour prendre des notes sur des choses que je dois encore faire. Ce carnet est une base de données NoSQL. Je l'interroge en utilisant une recherche linéaire avec une "page cache" de sorte que je n'ai pas toujours à rechercher chaque page. Il est également conforme à L'acide car je m'assure que je n'écris qu'une chose à la fois et jamais pendant que je la lis.

NoSQL signifie simplement qu'il n'est-ce pas SQL. Beaucoup de gens sont confus et pense que cela signifie hautement évolutive-far-west-super-rapide-stockage. Ça ne l'est pas. Cela ne signifie pas Stockage de valeur clé, ou une cohérence éventuelle. Tout ce que cela signifie est "pas SQL", il ya beaucoup de bases de données dans cette planète et la plupart d'entre eux ne sont pas SQL [citation nécessaire] .

vous pouvez trouver beaucoup d'exemples dans les autres réponses donc je n'ai pas besoin de les énumérer ici, mais il y a des bases de données non-SQL avec la conformité acide pour divers opérations, certains sont seulement acide pour des Écritures d'objet simple tandis que d'autres garantissent beaucoup plus. Chaque base de données est différent.

14
répondu Kevin Cox 2016-01-10 16:05:02

"NoSQL" n'est pas un terme bien défini. C'est une très vague notion. En tant que tel, il n'est même pas possible de dire ce qui est et ce qui n'est pas un produit "NoSQL". La quasi-totalité des produits généralement étiquetés ne sont pas des magasins à valeur-clé.

11
répondu Michael Borgwardt 2010-04-09 14:12:52

Oui, MarkLogic Server est une solution NoSQL (base de données de documents j'aime l'appeler) qui fonctionne avec des transactions acides

8
répondu dscape 2011-05-20 00:26:30

si vous cherchez un magasin de clés/valeurs conforme à L'acide, il y a Berkeley DB . Parmi les bases de données graphiques au moins Neo4j et HyperGraphDB offrent des transactions acides (HyperGraphDB utilise actuellement Berkeley DB pour le stockage de bas niveau).

7
répondu nawroth 2010-04-10 09:26:47

le grand-père de NoSQL: ZODB est conforme à L'acide. http://www.zodb.org/

cependant, C'est Python seulement.

7
répondu Lennart Regebro 2014-05-19 15:05:43
5
répondu oedo 2016-12-07 21:34:55

regardez le théorème de CAP

EDIT: RavenDB semble être de l'ACIDE conforme

3
répondu Tim Mahy 2010-06-10 12:07:37

pour ajouter à la liste des solutions de rechange, une autre base de données NoSQL entièrement conforme aux acides est GT.M .

3
répondu Laurent Parenteau 2012-06-07 23:55:28

Hyperdex Chaine http://hyperdex.org/warp/ Warp (ACID feature) est propriétaire, mais Hyperdex est libre.

3
répondu Kokizzu 2013-07-30 05:56:32

NewSQL

ce concept contributeurs Wikipédia define as:

[ ... ] une classe de systèmes modernes de gestion de base de données relationnelles qui cherchent à fournir la même performance évolutive de NoSQL systems for online transaction processing (OLTP) lire-écrire charges de travail tout en maintenant les garanties acides d'un système de base de données traditionnelle. [1][2][3]

Références

[1] Nancy Lynch and Seth Gilbert, "Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services" , ACM SIGACT News, Volume 33 Issue 2 (2002), p. 51-59.

[2] "théorème de CAP de Brewer " , julianbrowne.com, Retrieved 02-Mar-2010

[3] "théorème de Brewers CAP sur les systèmes distribués" , royans.net

3
répondu A T 2014-12-06 03:43:50

MongoDB a annoncé que sa version 4.0 sera conforme à L'acide pour les transactions multi-documents.

Version 4.2. est censé le soutenir sous fragmenté configurations.

https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb

3
répondu Aki 2018-02-19 02:06:10

db4o

Contrairement à rouler ou persistance de l' la sérialisation, db4o est ACIDE sécurité des transactions et permet interrogation, réplication et schéma modifications pendant l'exécution

http://www.db4o.com/about/productinformation/db4o/

2
répondu Matthew Groves 2010-06-10 12:09:59

Tarantool est une base de données NoSQL entièrement acide. Vous pouvez lancer des opérations CRUD ou des procédures stockées, tout sera exécuté en stricte conformité avec une propriété acide. Vous pouvez également lire à ce sujet ici: http://stable.tarantool.org/doc/mpage/data-and-persistence.html

2
répondu Dennis Anikin 2015-07-08 23:57:55

FoundationDB a été mentionné et à l'époque il n'était pas open source. Il a été ouvert par Apple Il ya deux jours: https://www.foundationdb.org/blog/foundationdb-is-open-source/

je crois qu'il est conforme à L'acide.

2
répondu billybobza 2018-04-21 13:24:17

L'attente est terminée.

NoSQL conforme à L'acide DB est sorti ----------- jetez un oeil à citrusleaf

1
répondu Jatin Dhoot 2011-07-08 06:16:07

BergDB est une base de données NoSQL libre et légère conçue dès le début pour exécuter des transactions acides. En fait, BergDB est" plus " acide que la plupart des bases de données SQL en ce sens que la seule façon de changer l'état de la base de données est d'exécuter des transactions acides avec le plus haut niveau d'isolation (terme SQL: "sérialisable"). Il n'y aura jamais de problèmes avec les lectures obscènes, les lectures non reproductibles ou les lectures fantômes.

À mon avis, La base de données est toujours très performante; mais ne me faites pas confiance, j'ai créé le logiciel. Essayez-le vous-même à la place.

1
répondu Frans Lundberg 2013-09-25 11:25:06

de nombreuses solutions NoSQL modernes ne prennent pas en charge les transactions acides (mises à jour Multi-clés isolées atomiques), mais la plupart d'entre elles prennent en charge les primitives qui vous permettent d'implémenter des transactions au niveau de l'application.

si un magasin de données soutient par linéarité de clé et comparent-et-ensemble (atomicité de niveau de document) alors il est suffisant pour mettre en œuvre des transactions côté client, plus vous avez plusieurs options pour choisir de:

  1. si vous avez besoin du niveau D'isolation sérialisable, vous pouvez suivre le même algorithme que Google utilise pour le Percolateur système ou laboratoires de cafards pour Cafarddb . J'ai blogué à ce sujet et créer un step-by-step visualisation , j'espère qu'il vous aidera à comprendre l'idée principale derrière l'algorithme.

  2. Lire niveau D'isolement engagé, puis s'il vous plaît jeter un oeil sur le RAMP transactions par Peter Bailis.

  3. la troisième approche consiste à utiliser les opérations compensatoires également connues sous le nom de modèle saga. Il a été décrit à la fin des années 80 dans le Sagas papier, mais est devenu plus réel avec l'augmentation des systèmes distribués. S'il vous plaît voir le application de la Saga modèle parler pour l'inspiration.

la liste des magasins de données appropriés pour les transactions côté client inclut Cassandra avec des transactions légères, Riak avec des seaux cohérents, RethinkDB, ZooKeeper, Etdc, HBase, DynamoDB, MongoDB et autres.

1
répondu rystsov 2016-03-05 07:00:45

MarkLogic est aussi un compliant acide. Je pense que c'est l'un des plus gros joueurs maintenant.

1
répondu Erik hoeven 2017-08-18 10:20:23

Yugaoctet DB supporte un TXNS compatible avec L'acide distribué ainsi que la compatibilité Redis et CQL API sur la couche de requête.

1
répondu Mad Scientist 2018-03-04 20:00:40

VoltDB est un entrant qui revendique la conformité à L'acide, et bien qu'il utilise encore SQL, ses objectifs sont les mêmes en termes d'évolutivité

0
répondu zenna 2010-06-02 01:08:28

alors que c'est seulement un moteur embarqué et non un serveur, leveldb a WriteBatch et la capacité d'activer des Écritures synchrones pour fournir un comportement acide.

0
répondu Andy Dent 2012-06-08 00:37:03

le nivellement de noeud est transactionnel et construit sur le niveaudb https://github.com/rvagg/node-levelup#batch

0
répondu basarat 2013-08-24 00:15:28

non seulement NoSQL n'est pas conforme à L'acide de par sa conception. Les mouvements NoSQL embrassent la BASE (essentiellement disponible, état mou, consistance éventuelle) qui prétend être le contraire de L'acide. NoSQL base de données sont souvent appelés éventuellement-composé base de données. Pour comprendre les différences, vous devriez creuser dans le théorème de CAP (alias théorème de Brewer)

Visit http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

-1
répondu Ste 2012-05-13 14:33:57