Estou tentando entender isso.
Os lotes cassandra são sempre atômicos e, se o lote modificar apenas uma única partição de uma única tabela, esse lote também será isolado.
mas e os lotes de várias tabelas particionados pela mesma chave? assuma estas tabelas:
orders (
order_id pk,
created_at,
user_id
)
order_items (
order_id,
product_id,
quantity,
primary key (order_id, product_id)
)
ambas as tabelas são particionadas pela mesma chave. se eu quiser criar um pedido atomicamente, digamos order_id = 123, assim:
begin batch
insert into orders ... (123)
insert into order_items .... where order_id = 123
insert into order_items .... where order_id = 123
apply batch
este lote é atômico e isolado? desde que a partição da tabela de pedidos para 123 e a partição da tabela order_items para 123 residam no mesmo nó.
O isolamento só pode ser alcançado se o lote estiver gravando em uma única partição porque, por definição, existe apenas uma partição – não há outras partições para isolar.
Para lotes com múltiplas partições, Cassandra só pode garantir (1) atomicidade e (2) a ordem das instruções dentro do lote, mas (3) não isolamento porque (4) qualquer cliente (instância do aplicativo) pode ler as linhas já escritas mesmo quando ainda há linhas no lote para processar.
Devo também salientar que o algoritmo de hash do particionador é determinÃstico, portanto, uma chave de partição sempre será hash com o mesmo valor de token. A razão pela qual mencionei isso é que você mencionou duas vezes sobre as partições estarem "no mesmo nó". As partições em qualquer tabela SEMPRE estarão nas mesmas réplicas SE todas essas partições tiverem a mesma chave de partição, portanto, estar "no mesmo nó" é irrelevante nesta discussão. Saúde!