Existe-t-il un magasin de données NoSQL compatible ACID?

Existe-t-il un magasin de données NoSQL compatible ACID ?

Related of "Existe-t-il un magasin de données NoSQL compatible ACID?"

Je posterai ceci comme une réponse uniquement 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 d’ Erlang , mais il y en a d’autres.

Je dirais qu’ACID ne contredit pas ou ne nie pas le concept de NoSQL … Bien qu’il semble y avoir une tendance suite à l’opinion exprimée par colombe , je dirais que les concepts sont distincts.

NoSQL se base fondamentalement sur un schéma clé-valeur simple (par exemple, Redis) ou un style de document (paires de valeurs-clés collectées dans un modèle de document, par exemple MongoDB) comme alternative directe au schéma explicite des SGBDR classiques. Cela permet au développeur de traiter les choses de manière asymésortingque, alors que les moteurs traditionnels ont appliqué une même rigidité à travers le modèle de données. La raison pour laquelle cela est si intéressant est que cela fournit une manière différente de gérer les changements , et pour les ensembles de données plus importants, elle offre des opportunités intéressantes pour gérer les volumes et les performances.

ACID fournit des principes régissant la manière dont les modifications sont appliquées à une firebase database. De manière très simplifiée, cela dit (ma propre version):

  • (A) lorsque vous faites quelque chose pour changer une firebase database, le changement devrait fonctionner ou échouer dans son ensemble
  • (C) la firebase database devrait restr cohérente (c’est un sujet assez large)
  • (I) si d’autres choses se passent en même temps, elles ne devraient pas pouvoir voir les choses à la mi-mise à jour
  • (D) si le système explose (matériel ou logiciel), la firebase database doit pouvoir se relever; et s’il dit qu’il a fini d’appliquer une mise à jour, il doit être certain

La conversation devient un peu plus excitable en ce qui concerne l’idée de propagation et les contraintes . Certains moteurs de SGBDR offrent la possibilité d’imposer des contraintes (par exemple, des clés étrangères) pouvant comporter des éléments de propagation (à la cascade ). En termes plus simples, une “chose” peut avoir une relation avec une autre “chose” dans la firebase database, et si vous modifiez un atsortingbut de l’une, cela peut nécessiter que l’autre soit modifié (mis à jour, supprimé, … beaucoup d’options). Les bases de données NoSQL , principalement axées actuellement sur les volumes de données élevés et le trafic élevé, semblent s’attaquer à l’idée de mises à jour dissortingbuées qui se déroulent (du sharepoint vue du consommateur) sur des délais arbitraires. Ceci est essentiellement une forme spécialisée de réplication gérée via une transaction – je dirais donc que si une firebase database dissortingbuée traditionnelle peut prendre en charge ACID, il en va de même pour une firebase database NoSQL.

Quelques ressources pour une lecture ultérieure:

  • Article de Wikipedia sur ACID
  • Wikipedia sur les contraintes de propagation
  • Wikipedia (oui, j’aime le site, d’accord?) Sur la normalisation de la firebase database
  • Documentation Apache sur CouchDB avec un bon aperçu de la façon dont elle s’applique ACID
  • Wikipedia sur l’ informatique en grappes
  • Wikipedia (encore …) sur les transactions de firebase database

MISE À JOUR (27 juillet 2012): Le lien vers l’article de Wikipedia a été mis à jour pour refléter la version de l’article en cours au moment de la publication de cette réponse. Veuillez noter que l’article Wikipedia actuel a été largement révisé!

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

NoSQL est un mouvement qui promeut une classe de magasins de données non relationnels définis de manière souple, rompant avec une longue histoire de bases de données relationnelles et de garanties ACID.

et aussi:

Le nom était une tentative de décrire l’émergence d’un nombre croissant de magasins de données dissortingbués non relationnels, qui souvent n’essayaient pas de fournir des garanties ACID.

et

Les systèmes NoSQL offrent souvent des garanties de cohérence faibles telles que la cohérence éventuelle et les transactions limitées à des éléments de données uniques, même si l’on peut imposer des garanties ACID complètes en ajoutant une couche middleware supplémentaire.

Donc, en un mot, je dirais que l’un des principaux avantages d’un magasin de données “NoSQL” est son manque flagrant de propriétés ACID . De plus, à mon humble avis, plus on essaie d’implémenter et d’appliquer les propriétés ACID , plus on s’éloigne de l’esprit d’un magasin de données “NoSQL”, et plus on se rapproche d’un “vrai” SGBDR (relativement parlant, bien sûr) ).

Cependant, tout ce qui est dit, “NoSQL” est un terme très vague et est ouvert à des interprétations individuelles, et dépend fortement de votre sharepoint vue puriste. Par exemple, la plupart des systèmes SGBDR actuels ne respectent pas toutes les 12 règles de son modèle relationnel d’ Edgar F. Codd !

En adoptant une approche pragmatique, il semblerait que CouchDB d’Apache incarne à la fois la conformité ACID tout en conservant une mentalité «NoSQL» non relationnelle faiblement couplée.

FoundationDB est conforme à ACID:

http://www.foundationdb.com/

Les transactions sont correctes, vous pouvez donc mettre à jour plusieurs éléments de données disparates de manière ACID. Ceci est utilisé comme base pour maintenir les index sur une couche supérieure.

Dans cette question, il faut mentionner OrientDB : OrientDB est une firebase database NoSQL, l’une des rares bases de données, qui supporte entièrement les transactions ACID. ACID n’est pas seulement pour les SGBDR car il ne fait pas partie de l’algèbre relationnel. Il est donc possible d’avoir une firebase database NoSQL prenant en charge ACID.

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

Veuillez vous assurer de lire l’introduction de Martin Fowler sur les bases de données NoSQL . Et la vidéo correspondante.

Tout d’abord, on peut distinguer deux types de bases de données NoSQL:

  1. Bases de données axées sur les agrégats;
  2. Bases de données orientées graphes (par exemple Neo4J).

De par leur conception, la plupart des bases de données orientées Graph sont ACID !

Alors, qu’en est-il des autres types?

Dans les bases de données orientées agrégat, nous pouvons mettre trois sous-types:

  • Bases de données NoSQL basées sur des documents (par exemple, MongoDB, CouchDB);
  • Bases de données Key / Value NoSQL (par exemple Redis);
  • Colonne famille bases de données NoSQL (par exemple Hibase, Cassandra).

Ce que nous appelons ici un agrégat , c’est ce qu’Eric Evans a défini dans sa conception pilotée par le domaine comme une autarcie d’entités et d’objects de valeur dans un contexte limité donné.

En conséquence, un agrégat est une collection de données avec laquelle nous interagissons en tant qu’unité. Les agrégats constituent les limites des opérations ACID avec la firebase database. (Martin Fowler)

Ainsi, au niveau global, nous pouvons dire que la plupart des bases de données NoSQL peuvent être aussi sûres que le SGBDR ACID , avec les parameters appropriés. De source, si vous accordez votre serveur pour la meilleure vitesse, vous pouvez entrer dans quelque chose non ACID. 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é) au SGBDR. J’ai vu trop de projets abusant des relations entre documents. Cela ne peut pas être ACID. Si vous restz au niveau du document, c’est-à-dire aux limites d’agrégation, vous n’avez besoin d’aucune transaction. Et vos données seront aussi sûres qu’avec une firebase database ACID, même si ce n’est pas vraiment ACID, puisque vous n’avez pas besoin de ces transactions! Si vous avez besoin de transactions et que vous mettez à jour plusieurs “documents” à la fois, vous n’êtes plus dans le monde NoSQL – utilisez plutôt un moteur SGBDR!

ACID et NoSQL sont complètement orthogonaux. L’un n’implique pas l’autre.

J’ai un cahier sur mon bureau, je l’utilise pour garder des notes sur des choses que je dois encore faire. Ce cahier est une firebase database NoSQL. Je l’interroge en utilisant une recherche linéaire avec un “cache de page”, donc je n’ai pas toujours à rechercher chaque page. Il est également conforme à ACID car je m’assure que je n’écris qu’une chose à la fois et jamais pendant que je le lis.

NoSQL signifie simplement qu’il ne s’agit pas de SQL. Beaucoup de gens s’embrouillent et pensent que cela signifie un stockage hautement évolutif, sauvage et très rapide. Ce n’est pas le cas. Cela ne signifie pas un stockage de valeur-clé ou une cohérence éventuelle. Tout ce que cela signifie est “pas SQL”, il y a beaucoup de bases de données sur cette planète et la plupart d’entre elles ne sont pas SQL.

Vous pouvez trouver de nombreux exemples dans les autres réponses, donc je n’ai pas besoin de les énumérer ici, mais il existe des bases de données non SQL avec la conformité ACID pour diverses opérations, certaines étant uniquement ACID pour des écritures à un seul object. Chaque firebase database est différente.

“NoSQL” n’est pas un terme bien défini. C’est un concept très flou. En tant que tel, il n’est même pas possible de dire ce qu’est et ce qui n’est pas un produit “NoSQL”. La quasi-totalité des produits portant le nom de marque sont des magasins à valeur-clé.

Oui, MarkLogic Server est une solution NoSQL (firebase database de documents que j’aime appeler) qui fonctionne avec les transactions ACID

Le grand-père de NoSQL: ZODB est conforme à ACID. http://www.zodb.org/

Cependant, c’est uniquement Python.

Si vous recherchez un magasin de clés / valeur conforme ACID, il existe Berkeley DB . Parmi les bases de données de graphes, au moins Neo4j et HyperGraphDB offrent des transactions ACID (HyperGraphDB utilise actuellement Berkeley DB pour un stockage de bas niveau).

selon https://wiki.apache.org/couchdb/Technical%20Overview#ACID_Properties couchdb est conforme à la norme acide

jetez un oeil au théorème de CAP

EDIT: RavenDB semble être conforme à ACID

Pour append à la liste des alternatives, une autre firebase database NoSQL conforme à ACID est GT.M.

Hyperdex Warp http://hyperdex.org/warp/ Warp (fonctionnalité ACID) est propriétaire, mais Hyperdex est gratuit.

NewSQL

Ce concept que les consortingbuteurs de Wikipedia définissent comme:

[…] Une classe de systèmes de gestion de bases de données relationnelles modernes qui cherchent à fournir les mêmes performances évolutives des systèmes NoSQL pour les charges de travail OLTP (traitement des transactions en ligne) tout en conservant les garanties ACID d’un système de firebase database traditionnel. [1][2][3]

Les références

[1] Nancy Lynch et Seth Gilbert, «Conjecture de Brewer et faisabilité de services Web cohérents, disponibles et tolérants aux partitions» , ACM SIGACT News, Volume 33, numéro 2 (2002), p. 51-59.

[2] “Théorème de Brewer” , julianbrowne.com, consulté le 02-mars-2010.

[3] “Théorème de Brewers CAP sur les systèmes dissortingbués” , royans.net

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

Version 4.2. est censé le supporter sous des configurations fragmentées.

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

db4o

Contrairement à la persistance ou à la sérialisation, db4o est une transaction ACID sécurisée et permet d’interroger, de répliquer et de modifier les schémas pendant l’exécution.

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

Tarantool est une firebase database complète ACID NoSQL. Vous pouvez lancer des opérations CRUD ou des procédures stockées, tout sera exécuté avec une ssortingcte conformité avec une propriété ACID. Vous pouvez également lire à ce sujet ici: http://stable.tarantool.org/doc/mpage/data-and-persistence.html

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

Je crois que c’est conforme à l’ACID.

L’attente est terminée.

NoSQL DB compatible ACID est sorti ———– regardez citrusleaf

BergDB est une firebase database NoSQL légère, open-source, conçue dès le départ pour exécuter les transactions ACID. En fait, BergDB est “plus” ACID que la plupart des bases de données SQL dans le sens où la seule manière de changer l’état de la firebase database est d’exécuter les transactions ACID avec le niveau d’isolation le plus élevé (terme SQL: “serializable”). Il n’y aura jamais de problèmes avec les lectures sales, les lectures non répétables ou les lectures fantômes.

À mon avis, la firebase database est toujours très performante; mais ne me faites pas confiance, j’ai créé le logiciel. Essayez vous-même à la place.

De nombreuses solutions NoSQL modernes ne prennent pas en charge les transactions ACID (mises à jour multi-clés isolées), mais la plupart prennent en charge les primitives qui vous permettent de mettre en œuvre des transactions au niveau de l’application.

Si un magasin de données prend en charge la linéarisation par clé et la comparaison et la définition (atomicité au niveau du document), il suffit de mettre en œuvre les transactions côté client, plus vous avez le choix entre plusieurs options:

  1. Si vous avez besoin d’un niveau d’isolement sérialisable, vous pouvez suivre le même algorithme que celui utilisé par Google pour le système Percolator ou Cockroach Labs pour CockroachDB . J’ai blogué à ce sujet et créé une visualisation étape par étape , j’espère que cela vous aidera à comprendre l’idée principale de l’algorithme.

  2. Si vous vous attendez à une contention élevée mais que le niveau d’isolement de Read Committed vous convient, consultez les transactions RAMP de Peter Bailis.

  3. La troisième approche consiste à utiliser des transactions de compensation, également connues sous le nom de modèle de saga. Il a été décrit à la fin des années 80 dans le document Sagas , mais il est devenu plus actuel avec l’augmentation des systèmes dissortingbués. S’il vous plaît voir le modèle Appliquer le motif de saga pour l’inspiration.

La liste des magasins de données adaptés aux transactions côté client comprend Cassandra avec des transactions légères, Riak avec des compartiments cohérents, RethinkDB, ZooKeeper, Etdc, HBase, DynamoDB, MongoDB et autres.

MarkLogic est également compatible ACID. Je pense que c’est l’un des plus gros joueurs maintenant.

YugaByte DB prend en charge un serveur Txns dissortingbué conforme à ACID, ainsi que la compatibilité des API Redis et CQL sur la couche de requête.

VoltDB est un entrant qui revendique la conformité ACID, et même s’il utilise encore SQL, ses objectives sont les mêmes en termes d’évolutivité

Alors que ce n’est qu’un moteur intégré et non un serveur, leveldb a WriteBatch et la possibilité d’activer les écritures synchrones pour fournir un comportement ACID.

Le niveau de nœud UP est transactionnel et basé sur leveldb https://github.com/rvagg/node-levelup#batch

Google Cloud Datastore est une firebase database NoSQL qui prend en charge les transactions ACID

Non seulement NoSQL n’est pas conforme à l’ACID de par sa conception. Le mouvement NoSQL emarmse la BASE (Basically Available, Soft state, Eventual homogénéité) prétendant être le contraire de ACID. Les bases de données NoSQL sont souvent appelées firebase database Eventually-Consisted. Pour comprendre les différences, vous devez explorer le théorème de CAP (théorème de Brewer)

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