Кассандра не подразумевает особый порядок, в котором выполняются операторы.
Выполнение операторов, подобных приведенному ниже, не выполняется в этом порядке.
INSERT INTO channel
JSON ''{"cuid":"NQAA0WAL6drA"
,"owner":"123"
,"status":"open"
,"post_count":0
,"mem_count":1
,"link":"FWsA609l2Og1AADRYODkzNjE2MTIyOTE="
, "create_at":"1543328307953"}}'';
BEGIN BATCH
UPDATE channel
SET title = ? , description = ? WHERE cuid = ? ;
INSERT INTO channel_subscriber
JSON ''{"cuid":"NQAA0WAL6drA"
,"user_id":"123"
,"status":"subscribed"
,"priority":"owner"
,"mute":false
,"setting":{"create_at":"1543328307956"}}'';
APPLY BATCH ;
Согласно system_traces.сеансы, каждый из которых принимается разными узлами.
Иногда время started_at
в обоих запросах равно (в миллисекундах), иногда время started_at
второго запроса меньше первого.Таким образом, это разрушает порядок операторов и данных.
Мы используем erlang, marina driver, consistency_level равен QUORUM, а время всех узлов и серверов приложений cassandra синхронизировано.
Как заставить Cassandra принудительно работать?выполнять запросы по порядку?