Há algum armazenamento de dados NoSQL que esteja em conformidade com o ácido?

Existe algum arquivo de dados NoSQL que seja compatível comÁcido ?

Author: Community, 2010-04-09

29 answers

Vou postar isto como uma resposta puramente para apoiar a conversa. Tim Mahy. , nawroth , e CraigTP sugeriram bases de dados viáveis. o CouchDB seria o meu preferido devido ao uso de o Erlang , mas há outros por aí.

Eu diria que o ácido não contradiz nem nega o conceito de NoSQL ... Embora pareça haver uma tendência a seguir à opinião expressa por dove , eu diria que os conceitos são distintos.

NoSQL é fundamentalmente sobre um simples valor-chave (por exemplo, Redis) ou esquema de estilo documento (pares de valor-chave coletados em um modelo de "documento", por exemplo MongoDB) como uma alternativa direta ao esquema explícito no RDBMSs clássico. Ele permite que o desenvolvedor trate as coisas assimetricamente, enquanto que os motores tradicionais têm forçado rígido a mesma coisa através do modelo de dados. A razão pela qual isto é tão interessante é porque ele fornece uma maneira diferente de lidar com a mudança , e para conjuntos de dados maiores fornece oportunidades interessantes para lidar com volumes e desempenho.

ACID fornece princípios que regem a forma como as alterações são aplicadas a uma base de dados. De uma forma muito simplificada, afirma (a minha própria versão):

  • (a) quando você faz algo para mudar uma base de dados, a alteração deve funcionar ou falhar como um todo
  • ([36]} (C) a base de dados deve manter-se consistente (este é um tópico bastante amplo)
  • I) se outros as coisas estão a acontecer ao mesmo tempo que não deviam ser capazes de ver as coisas a meio da actualização.
  • (D) Se o sistema explodir (hardware ou software), a base de dados precisa de ser capaz de se recuperar; e se disser que acabou de aplicar uma actualização, precisa de ter a certeza
A conversa fica um pouco mais excitável quando se trata da ideia de propagação e restrições. Alguns motores RDBMS proporcionam a capacidade de impor restrições (por exemplo, chaves estrangeiras) que podem ter elementos de propagação[uma cascata la ]. Em termos mais simples, uma " coisa "pode ter um relacionamento com outra" coisa " no banco de dados, e se você mudar um atributo de um ele pode exigir que o outro seja alterado (atualizado, excluído, ... muitas opções). ([14])as bases de dados NoSQL, concentradas predominantemente (neste momento) em volumes de dados elevados e em tráfego elevado, parecem estar a abordar a ideia de actualizações distribuídas que têm lugar dentro (do ponto de vista do consumidor) de um tempo arbitrário . quadro. Esta é basicamente uma forma especializada de replicação gerenciada via transação - Então eu diria que se uma base de dados distribuída tradicional pode suportar ácido, assim como uma base de dados NoSQL. Alguns recursos para leitura:
 93
Author: AJ., 2017-05-23 12:10:33

Atualização (27 de julho de 2012): o Link para o Artigo da Wikipédia foi actualizado para reflectir a versão do artigo que estava actual quando esta resposta foi publicada. Por favor, note que o artigo actual do Wikipedia foi extensivamente revisto!

Bem, de acordo com uma versão mais antiga de um artigo da Wikipédia sobre NoSQL:

O NoSQL é um movimento que promove uma classe de dados não-relacionais armazenam que quebram com um longo história das relações bases de dados e garantias ácidas.

E também:

O nome foi uma tentativa de descrever a emergência de um número crescente de dados não relacionais, distribuídos lojas que muitas vezes não tentaram fornecer garantias ácidas.

E

Os sistemas NoSQL são frequentemente fracos. garantias de coerência, tais como eventual coerência e transacções limitado a rubricas individuais, mesmo embora se possa impor ACIDO garantias através da adição de um complemento camada de middleware.

Então, em poucas palavras, eu diria que um dos principais benefícios de uma loja de dados "NoSQL" é a sua distinta falta de propriedades de ácido . Além disso, IMHO, quanto mais se tenta implementar e impor propriedades ácido, mais longe do "Espírito" de uma loja de dados "NoSQL" você fica, e mais perto de um "verdadeiro" RDBMS você fica (relativamente falando, é claro).

No entanto, todos dito isto, "NoSQL" é um termo muito vago e está aberto a interpretações individuais, e depende muito do ponto de vista purista que você tem. Por exemplo, a maioria dos sistemas RDBMS modernos não aderem realmente a Todos de Edgar F. Codd'S 12 regras do seu modelo de relação !

Tomando uma abordagem pragmática, parece que o Apache CouchDB é mais próximo de incorporar tanto a ACID-compliance, mantendo ao mesmo tempo um acoplado, mentalidade "NoSQL" não relacional.
 32
Author: CraigTP, 2012-07-27 18:38:33

A FoundationDB está em conformidade com o ácido:

Http://www.foundationdb.com/

Tem transacções adequadas, por isso pode actualizar vários itens de dados diferentes de uma forma ácida. Isto é usado como base para manter índices em uma camada superior.
 18
Author: Ken Tindell, 2013-01-25 18:23:07

Nesta questão alguém deve mencionar OrientDB : OrientDB é um banco de dados NoSQL, um dos poucos que suporta transações Totalmente ácidas. Ácido não é apenas para RDBMS porque não faz parte da álgebra relacional. Então é possível ter uma base de dados NoSQL que suporte ácido.

Este recurso é o que mais sinto falta em MongoDB
 16
Author: CoreDev, 2012-02-22 00:11:14

Por favor, certifique-se que leu a introdução do Martin Fowler sobre bases de dados NoSQL. E o vídeo correspondente.

Em primeiro lugar, podemos distinguir dois tipos de bases de dados NoSQL:

  1. bases de dados orientadas para o agregado;
  2. bases de dados orientadas para os Gráficos (Por exemplo, Neo4J).

Por design, a maioria das bases de dados orientadas para os gráficos são ACID !

Então, e os outros tipos? Em bases de dados de orientação agregada, podemos colocar três subtipos:
  • bases de dados NoSQL baseadas em documentos (por exemplo, MongoDB, CouchDB);
  • bases de dados chave / valor NoSQL (por exemplo, Redis);
  • bases de dados da família de colunas NoSQL (por exemplo, Hibase, Cassandra).

Aquilo a que chamamos um Agregado aqui, é o que Eric Evans definiu no seu Desenho Por domínio como um auto-suficiente de Entidades e objectos-valor num determinado contexto limitado.

Como consequência, um agregado é uma recolha de dados que nós interagir como uma unidade. Os agregados formam os limites para o ácido operações com a base de dados. (Martin Fowler)

Então, a nível agregado, podemos dizer que a maioria das bases de dados NoSQL podem ser tão seguras quanto o ACID RDBMS, com as configurações adequadas. De fonte, se você sintonizar o seu servidor para a melhor velocidade, você pode vir em algo não ácido. Mas a replicação vai ajudar.

O meu ponto principal é que você tem que usar as bases de dados NoSQL como elas são, não como uma alternativa (barata) para RDBMS. I já vimos demasiados projectos abusarem das relações entre documentos. Isto não pode ser ácido. Se você permanecer ao nível do documento, ou seja, nos limites agregados, você não precisa de nenhuma transação. E seus dados serão tão seguros quanto com uma base de dados ACID, mesmo que não realmente ACID, uma vez que você não precisa dessas transações! Se você precisar de transações e atualizar vários "documentos" ao mesmo tempo, você não está mais no mundo NoSQL - então use um motor RDBMS em vez disso!

 14
Author: Arnaud Bouchez, 2014-02-28 20:51:25
O ácido e o NoSQL são completamente ortogonais. Um não implica o outro. Tenho um caderno na minha secretária, uso-o para guardar notas sobre coisas que ainda tenho de fazer. Este caderno é uma base de dados NoSQL. Eu o questiono usando uma pesquisa linear com um "cache de página" para que eu nem sempre tenha que procurar em todas as páginas. É também ACID compliant porque eu assegurar que eu escrevo apenas uma coisa de cada vez e nunca enquanto eu estou lendo.

NoSQL significa simplesmente que não é SQL. Muitas pessoas têm confuso e acha que significa altamente escalável, selvagem, super-rápido-armazenamento. Não significa loja de valores-chave, ou consistência eventual. Tudo o que significa é "não SQL", há um monte de bancos de dados neste planeta e a maioria deles não são SQL[citação necessária].

Você pode encontrar muitos exemplos nas outras respostas, então eu não preciso listá-los aqui, mas existem bases de dados não-SQL com ACID compliance para várias operações, alguns são apenas ácido para um único objeto escreve, enquanto alguns garantir muito mais. Cada banco de dados é diferente.

 14
Author: Kevin Cox, 2016-01-10 16:05:02

"NoSQL" não é um termo bem definido. É um conceito muito vago. Como tal, nem sequer é possível dizer o que é e o que não é um produto "NoSQL". Nem quase todos os produtos typcially marcado com o rótulo são lojas de valor-chave.

 11
Author: Michael Borgwardt, 2010-04-09 14:12:52

SIM, o servidor de MarkLogic é uma solução NoSQL (base de dados de documentos que gosto de lhe chamar) que funciona com transacções ácidas {[[2]}

 8
Author: dscape, 2011-05-20 00:26:30

Se está à procura de uma chave/valor compatível com ácido, HáBerkeley DB . Entre bases de dados de gráficos pelo menos Neo4j e HyperGraphDB oferecem transações ACID (HyperGraphDB, na verdade, usa o Berkeley DB para o baixo nível de armazenamento no momento).

 7
Author: nawroth, 2010-04-10 09:26:47
O avô de NoSQL: ZODB é ACID compliant. http://www.zodb.org/ No entanto, É só Python.
 7
Author: Lennart Regebro, 2014-05-19 15:05:43
 5
Author: oedo, 2016-12-07 21:34:55

Dê uma olhada no teorema da CAP

Editar: RavenDB parece estar em conformidade com o ácido

 3
Author: Tim Mahy, 2010-06-10 12:07:37

Para adicionar à lista de alternativas, outra base de dados NoSQL totalmente compatível com ácido é GT.M .

 3
Author: Laurent Parenteau, 2012-06-07 23:55:28
Warp Hiperdex. http://hyperdex.org/warp/ Warp (característica ácida) é proprietário, mas Hyperdex é livre.
 3
Author: Kokizzu, 2013-07-30 05:56:32

NewSQL

Este conceito contribuidores da Wikipédia definem como:

[...] uma classe de sistemas modernos de gestão de bases de dados relacionais que procuram fornecer o mesmo desempenho escalável dos sistemas NoSQL para processamento de transações on-line (OLTP) ler-escrever cargas de trabalho, mantendo ainda as garantias ácidas de um sistema de base de dados tradicional.[1][2][3]

Referências

[1] Nancy Lynch e Seth Gilbert, conjectura de Brewer e a feasibility of consistent, available, partition-tolerant web services " , ACM SIGACT News, Volume 33 Issue 2 (2002), pg. 51-59.

[2] "Teorema do casquilho de Brewer" , julianbrowne.com, Retrieved 02-Mar-2010

[3] "Brewers CAP theorem on distributed systems" , royans.net

 3
Author: A T, 2014-12-06 03:43:50

O MongoDB anunciou que a sua versão 4.0 será ACID compliant para transacções multi-documentais.

Versão 4.2. é suposto suportá-lo sob costuras barbudas.

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

 3
Author: Aki, 2018-02-19 02:06:10

Db4o

Ao contrário da sua própria persistência ou serialização, db4o é ácido transacção segura e permite interrogação, replicação e esquema alterações durante a execução

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

 2
Author: Matthew Groves, 2010-06-10 12:09:59
Tarantool é uma base de dados NoSQL totalmente ácida. Você pode emitir operações CRUD ou procedimentos armazenados, tudo será executado com estrita conformidade com uma propriedade de ácido. Você também pode ler sobre isso aqui: http://stable.tarantool.org/doc/mpage/data-and-persistence.html
 2
Author: Dennis Anikin, 2015-07-08 23:57:55

A FoundationDB foi mencionada e na altura não era código aberto. Foi aberto pela Apple há dois dias.: https://www.foundationdb.org/blog/foundationdb-is-open-source/

Acho que é compatível com ácido.
 2
Author: billybobza, 2018-04-21 13:24:17
A espera acabou.

O NoSQL DB conforme com o ácido foi eliminado.----------- dê uma vista de olhos a citrussleaf

 1
Author: Jatin Dhoot, 2011-07-08 06:16:07

BergDB é uma base de dados NoSQL de peso leve, de código aberto, concebida desde o início para executar transacções ácidas. Na verdade, BergDB é "mais" ácido do que a maioria das bases de dados SQL no sentido de que o a única maneira de mudar o estado da base de dados é executar transações ácidas com o mais alto nível de isolamento (termo SQL: "serializável"). Nunca haverá problemas com leituras sujas, leituras não repetíveis, ou leituras fantasmas.

Na minha opinião, a base de dados ainda é altamente performant; mas não confie em mim, eu criei o software. Tenta tu.
 1
Author: Frans Lundberg, 2013-09-25 11:25:06

Muitas das soluções modernas de NoSQL não suportam transacções ácidas (actualizações de multi-chaves isoladas atómicas), mas a maioria delas suportam primitivas que lhe permitem implementar transacções a nível da aplicação.

Se um armazenamento de dados suporta por linearidade de chaves e compare-e-set (nível do documento atomicidade), então é suficiente para implementar transacções do lado do cliente, mais sobre você tem várias opções para escolher:

  1. Se você precisa de um nível de isolamento serializável então você pode seguir o mesmo algoritmo que o Google usa para o sistema Percolator ou Cockroachdb para CockroachDB. Eu blogei sobre isso e criei uma visualização passo a passo , Eu espero que isso ajude você a entender a ideia principal por trás do algoritmo.

  2. Se você espera um alto nível de contenção, mas é bom para você ter lido o nível de isolamento cometido, então, por favor, dê uma olhada nas transações de rampa por Peter Bailis.

  3. O a terceira abordagem é usar as transações compensadoras também conhecidas como o padrão saga. Foi descrito no final dos anos 80 nas Sagas, mas tornou-se mais real com o aumento dos sistemas distribuídos. Por favor, veja a palestra aplicando o padrão de Saga para inspiração.

A lista de armazéns de dados adequados para transacções do lado do cliente inclui Cassandra com transacções leves, Riak com baldes consistentes, RethinkDB, ZooKeeper, Etdc, HBase, DynamoDB, MongoDB e outros.
 1
Author: rystsov, 2016-03-05 07:00:45

O Marklogico também é composto ácido. Acho que é um dos maiores jogadores agora.

 1
Author: Erik hoeven, 2017-08-18 10:20:23

YugaByte DB suporta um ácido compatível com txns distribuídos, bem como a compatibilidade da Redis e da API CQL na camada de consulta.

 1
Author: Mad Scientist, 2018-03-04 20:00:40

VoltDB é um operador que alega acidez, e enquanto ainda usa SQL, seus objetivos são os mesmos em termos de escalabilidade

 0
Author: zenna, 2010-06-02 01:08:28

Apesar de ser apenasum motor incorporado e não um servidor, leveldb tem WriteBatch e a capacidade de ligar as escritas síncronas para fornecer um comportamento ácido.

 0
Author: Andy Dent, 2012-06-08 00:37:03

O nível do nó é transacional e construído no leveldb https://github.com/rvagg/node-levelup#batch

 0
Author: basarat, 2013-08-24 00:15:28

Não só o NoSQL não está ACID conforme por projecto. O movimento NoSQL abraçar a BASE (basicamente disponível, Estado suave, eventual consistência) alegou ser o oposto de ácido. A base de dados NoSQL é muitas vezes chamada de eventualmente-Consisted database. Para entender as diferenças, você deve perfurar o teorema do casquilho (também conhecido como Teorema de Brewer)

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

 -1
Author: Ste, 2012-05-13 14:33:57