Кассандра партия - PullRequest
1 голос
/ 11 июля 2020

Я только что начал работать с Кассандрой, и у меня был один общий вопрос: «Предположим, мне нужно вставить около 2000+ записей, большинство людей действительно говорят, что не используют здесь пакетную обработку, но с другой стороны также слышали что «Ближайшей функцией к хранимой процедуре будет пакет, поскольку он позволит вам« связать »различные операторы DML, связанные с вставкой, обновлением или удалением.»

Так может любой предложите, как лучше всего создать один раз, сохранить и вызвать несколько раз, когда это необходимо, что может поддерживать более быстрое выполнение, как SP в SQL

1 Ответ

1 голос
/ 11 июля 2020

Пакеты в Cassandra имеют очень специфическое c использование:

  • для применения нескольких изменений в одной, часто к нескольким таблицам, чтобы обеспечить согласованность в обновлении данных, гарантируя, что все они будут применяться, или все потерпит неудачу. Это часто называют «записываемым пакетом» - в этом случае Cassandra выполняет копию пакета на нескольких серверах перед применением изменений и удаляет его после успешного применения пакетных операций. В результате такие пакеты выполняются намного медленнее, чем обычные операции.
  • для применения нескольких операций внутри одного раздела - часто это называется «незарегистрированным пакетом» - в этом случае все операции рассматриваются как одна мутация, и как результат это очень быстро по сравнению с несколькими отдельными операциями.

Таким образом, пакеты могут использоваться для множественных вставок / обновлений / удалений только внутри одного раздела (в противном случае производительность будет хуже по сравнению с отдельными операторами) , или когда вам нужна согласованность данных между несколькими таблицами. Самый быстрый способ вставить большой объем данных - выполнить несколько операций asyn c. Кроме того, если вы хотите загружать данные из файлов, то, возможно, лучше взглянуть на такие инструменты, как DSBulk , которые сильно оптимизированы для высокопроизводительной загрузки и выгрузки данных.

Более подробно подробности о хорошем и плохом использовании пакетов вы можете прочитать в документации и руководстве по архитектуре DSE.

PS Технически говоря, Cassandra классифицирует партии либо как мультипатитированные - в этом случае они всегда регистрируются , или один раздел - они не регистрируются.

...