Как реализовать пакет в Кассандре с Java - PullRequest
1 голос
/ 01 июля 2019

В настоящее время я настроил проект с помощью Springboot, я могу использовать CassandraRepository для запроса данных из базы данных Cassandra.

Но теперь я столкнулся с некоторыми проблемами:

  1. Как я могу использовать BatchStatment в Cassandra с CassandraRepository?
  2. Как создать оператор CassandraRepository?

Я хочу использовать BatchStatment.add(Statement) для реализации пакетного запроса.MappingManager.getSession().execute(statement)

Ответы [ 2 ]

3 голосов
/ 01 июля 2019

Для использования версии Springs есть CassandraBatchOperations из CassandraTemplate.batchOps().

MappingManager из DataStax ORM, так что он немного перемешивает.Хотя он напрямую не поддерживает пакетирование (потому что это обычно неправильно), вы можете вызвать метод mapper.saveQuery(obj), чтобы получить необработанный оператор и добавить его к new BatchStatement(), который вы создали самостоятельно, и передать его в Session.execute.

Убедитесь, что вам действительно нужны партии (для атомарности).Они медленные, дорогие и не масштабируются так же хорошо, как обычные вставки.

0 голосов
/ 04 июля 2019

Лучший подход для записи в cassandra - одновременная асинхронная запись (поддерживается драйвером Datastax).

Содержит ли пакетная операция смешанный ключ раздела, если да, то пакетная обработка будет медленнее по сравнению с асинхронной записью

для пакетных запросов со смешанными разделами мы реализовали метод пакетных операторов с поддержкой токенов, который действительно показал хорошую производительность при большом наборе данных.

Для получения подробной информации перейдите по этой ссылке: https://dzone.com/articles/efficient-cassandra-write

...