Пакеты в Cassandra имеют очень специфическое c использование:
- для применения нескольких изменений в одной, часто к нескольким таблицам, чтобы обеспечить согласованность в обновлении данных, гарантируя, что все они будут применяться, или все потерпит неудачу. Это часто называют «записываемым пакетом» - в этом случае Cassandra выполняет копию пакета на нескольких серверах перед применением изменений и удаляет его после успешного применения пакетных операций. В результате такие пакеты выполняются намного медленнее, чем обычные операции.
- для применения нескольких операций внутри одного раздела - часто это называется «незарегистрированным пакетом» - в этом случае все операции рассматриваются как одна мутация, и как результат это очень быстро по сравнению с несколькими отдельными операциями.
Таким образом, пакеты могут использоваться для множественных вставок / обновлений / удалений только внутри одного раздела (в противном случае производительность будет хуже по сравнению с отдельными операторами) , или когда вам нужна согласованность данных между несколькими таблицами. Самый быстрый способ вставить большой объем данных - выполнить несколько операций asyn c. Кроме того, если вы хотите загружать данные из файлов, то, возможно, лучше взглянуть на такие инструменты, как DSBulk , которые сильно оптимизированы для высокопроизводительной загрузки и выгрузки данных.
Более подробно подробности о хорошем и плохом использовании пакетов вы можете прочитать в документации и руководстве по архитектуре DSE.
PS Технически говоря, Cassandra классифицирует партии либо как мультипатитированные - в этом случае они всегда регистрируются , или один раздел - они не регистрируются.