Apache Cassandra эволюционировала из NoSQL-базы данных с итоговой согласованностью в полностью соответствующую принципам ACID систему в своём грядущем релизе 6.0. Этот путь включает атомарные пакеты, представленные в 2013 году, операции сравнения и обмена (compare-and-swap) Paxos для одной партиции позже в том же году, а теперь строго сериализуемые межпартиционные транзакции с Accord в ещё не выпущенной Cassandra 6.
В этой статье каждый транзакционный вариант исследуется с помощью кластера из трёх узлов и учётной рабочей нагрузки. Настройка включает установку Java 21, сборку Cassandra из ветки cassandra-6.0 и конфигурацию трёх узлов с уникальными IP-адресами и портами JMX.
Учётный тест использует два счёта с начальным балансом по 1 000 каждый, при этом параллельные писатели создают переводы между счетами. Рабочая нагрузка тестирует четыре транзакционных метода: без транзакций (по умолчанию), обновления BATCH, облегчённые транзакции (LWT) и обновления Accord (ACID). Тестируются варианты «чтение-изменение-запись» и «слепая запись», а также сценарии переводов между партициями и внутри одной партиции.
Третий поток непрерывно считывает данные и проверяет, что сумма балансов остаётся равной 2 000 на протяжении всех параллельных операций. Тест также проверяет, что итоговые балансы счетов соответствуют ожидаемым детерминированным значениям для рабочих нагрузок типа «чтение-изменение-запись».
Ключевые сущности: Компании: Apache, Cassandra | Люди: Phil Eaton
Источник: Hacker News · Сводку подготовил HeadlinesBriefing