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).
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).
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):
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:
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é.
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:
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:
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!
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
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.