База данных Aerospike говорит, что это
[...] разработан с тремя ключевыми целями:
Создать гибкую, масштабируемую платформу, которая соответствовала бы потребностям современных веб-приложений
Обеспечить устойчивость и надежность (например, ACID), ожидаемые от традиционных баз данных .
Чтобы обеспечить эффективность работы (минимальное ручное вмешательство)
И в другом месте:
Aerospike оптимизирован для работы с новейшими технологиями хранения и баз данных, чтобы максимально сократить пропускную способность транзакций, при этом гарантируя строгую согласованность (ACID).
Во-первых, я не нашел определения транзакции в Aerospike. Обычно я получаю это как последовательность операций в базе данных. Однако, читая позже, я не вижу, что транзакции являются ACID:
При чтении подробного описания Aerospike ACID я обнаружил, что это всего лишь притворяется. КИСЛОТА гарантирует.
Примеры:
- Я хочу сделать последовательность операций (a, b, c) в транзакции. Каждая операция является независимым запросом к БД. Если c не удается, я хочу, чтобы a и b были отброшены системой БД. Я не нашел эту функцию в Aerospike.
Рассмотрим две параллельные транзакции, изменяющие документы A и B. В начале A=0 и B=0:
- T1 adds 1 to
A
andB
- T2 умножьте A и B на 2.
Я ожидаю, что всегда мы получим
A==B
- результат будет либо:A=1 & B=1
когда T2 впервые заблокирует/вступит во владение документами A и BA=2 & B=2
когда T2 впервые заблокирует/вступит во владение документами A и B
Какова гарантия этого результата?
- T1 adds 1 to
<сильный>1. Можете ли вы подтвердить мои результаты моих примеров?
<сильный>2. Помогают ли здесь определяемые пользователем функции?
PS
Чтобы было ясно - я не хочу сказать, что Aerospike плохой. Я вижу там отличный кусок хорошей работы. Мне просто не хватает хороших разъяснений, когда гарантии ACID не работают.