Есть ли хранилище данных NoSQL, совместимое с ACID? - PullRequest
137 голосов
/ 09 апреля 2010

Есть ли хранилище данных NoSQL , которое ACID совместимо?

Ответы [ 30 ]

1 голос
/ 18 августа 2017

MarkLogic также совместим с ACID. Я думаю, что сейчас один из крупнейших игроков.

1 голос
/ 05 марта 2016

Многие современные NoSQL-решения не поддерживают транзакции ACID (атомарные изолированные многоключевые обновления), но большинство из них поддерживают примитивы, которые позволяют реализовывать транзакции на уровне приложения.

Если хранилище данных поддерживает линеаризуемость по каждому ключу и сравнение-и-набор (атомарность на уровне документа), то достаточно реализовать транзакции на стороне клиента, более того, у вас есть несколько вариантов на выбор:

  1. Если вам нужен Serializable уровень изоляции, то вы можете следовать тому же алгоритму, который Google использует для системы Percolator или Cockroach Labs для CockroachDB . Я написал в блоге об этом и создаю пошаговую визуализацию , надеюсь, это поможет вам понять основную идею алгоритма.

  2. Если вы ожидаете высокого уровня конкуренции, но для вас вполне нормально иметь уровень изоляции Read Committed, пожалуйста, обратите внимание на транзакции RAMP от Peter Bailis.

  3. Третий подход заключается в использовании компенсирующих транзакций, также известных как шаблон саги. Это было описано в конце 80-х годов в статье Sagas , но стало более актуальным с появлением распределенных систем. Пожалуйста, смотрите Применение шаблона саги Говорите для вдохновения.

Список хранилищ данных, подходящих для транзакций на стороне клиента, включает Cassandra с облегченными транзакциями, Riak с согласованными сегментами, RethinkDB, ZooKeeper, Etdc, HBase, DynamoDB, MongoDB и другие.

1 голос
/ 25 сентября 2013

BergDB - это легковесная база данных NoSQL с открытым исходным кодом, разработанная с самого начала для выполнения транзакций ACID. На самом деле BergDB является «более» ACID, чем большинство баз данных SQL, в том смысле, что единственный способ *1004* для изменения состояния базы данных - это запуск транзакций ACID с самым высоким уровнем изоляции (термин SQL: «сериализуемый») , Никогда не будет проблем с грязным чтением, неповторяющимся чтением или фантомным чтением.

На мой взгляд, база данных по-прежнему высокопроизводительна; но не верьте мне, я создал программное обеспечение. Попробуйте сами.

1 голос
/ 08 июля 2011

Ожидание окончено.

ACID-совместимая NoSQL DB вышла ----------- взгляните на citrusleaf

0 голосов
/ 02 января 2019

DynamoDB является базой данных NoSQL и содержит ACID транзакций .

0 голосов
0 голосов
/ 13 мая 2012

Не только NoSQL не совместим с ACID. Движение NoSQL охватывает BASE (в основном доступное, мягкое состояние, возможная согласованность), который, как утверждается, является противоположностью ACID. Базу данных NoSQL часто называют базой данных с конечной последовательностью. Чтобы понять различия, вы должны углубиться в теорему CAP (она же теорема Брюера)

Визит http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

0 голосов
/ 08 июня 2012

Хотя это только встроенный механизм, а не сервер, leveldb имеет функцию WriteBatch и возможность включать синхронную запись для обеспечения поведения ACID.

0 голосов
/ 02 июня 2010

VoltDB - участник, заявляющий о соответствии ACID, и хотя он по-прежнему использует SQL, его цели с точки зрения масштабируемости одинаковы

0 голосов
/ 24 августа 2013

Уровень узла UP является транзакционным и построен на leveldb https://github.com/rvagg/node-levelup#batch

...