Разница между партиями несовпадающих и зарегистрированных Cassandra в отрицательных случаях

Я понимаю основное различие между партиями LOGGED и UNLOGGED в Кассандре с точки зрения атомарности. По сути, партии LOGGED являются атомарными, а UNLOGGED - нет. Это означает, что все инструкции в партии LOGGED выполняются (или не выполняются) вместе.

В случае партии UNLOGGED, если что-то пойдет не так во время операции записи оператора компоновки, я знаю, что уже выполненные операторы НЕ являются откатами, но Кассандра уведомляет об отказе всей партии от драйвера?

Ответ 1

Таким образом, зарегистрированные партии используют журнал, чтобы записать пакетную операцию, а затем выполнить ее, удалив из журнала, когда она будет успешной. Unlogged по-прежнему является пакетной операцией, но без дополнительных затрат в журнале. В небольших количествах регистрация в порядке, но по мере увеличения масштабирования этот пакетный журнал может расти и становиться проблемой. Документы Datastax на самом деле охватывают пакетирование и некоторые примеры:

https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/useBatch.html

Пример хороших партий

Пример плохих партий

Вообще говоря, пакеты используются, но я видел, что они вызывают проблемы с производительностью при чрезмерном использовании из-за штрафа, который вы платите за группирование их на узле-координаторе. Я часто указываю людям на этот хорошо известный блог, в котором также содержится некоторая полезная информация о партиях.