Когда использовать Кассандру против Солра в DSE?

Я использую DSE для интеграции Cassandra / Solr, поэтому данные хранятся в Cassandra и индексируются в Solr. Вполне естественно использовать Cassandra для обработки операций CRUD и использовать Solr для полнотекстового поиска соответственно, и DSE действительно может упростить синхронизацию данных между Cassandra и Solr.

Однако, когда дело доходит до запроса, на самом деле есть два пути: вторичный / настроенный вручную индекс Cassandra и Solr. Я хочу знать, когда использовать какой метод и какова разница в производительности в целом, особенно при настройке DSE.

Вот один пример использования в моем проекте. У меня есть таблица Cassandra, в которой хранятся некоторые данные об объектах. Помимо основной операции CRUD, мне также нужно извлечь элементы по равенству в некотором поле (скажем, категории), а затем отсортировать по некоторому порядку (в моем случае здесь поле like_count).

Я могу думать о трех разных способах справиться с этим:

Объявите 'indexed = true' в схеме Solr как для категории, так и для поля like_count, а также для запроса в SolrСоздайте денормализованную таблицу в Cassandra с первичным ключом (категория, like_count, id)Создайте денормализованную таблицу в Cassandra с первичным ключом (категория, заказ, идентификатор) и используйте внешний компонент, такой как Spark / Storm ,, чтобы отсортировать элементы по like_count

Первый метод представляется наиболее простым для реализации и поддержки. Я просто пишу некоторый тривиальный код доступа к Solr, а остальная тяжелая работа выполняется поиском Solr / DSE.

Второй метод требует ручной денормализации при создании и обновлении. Мне также нужно вести отдельную таблицу. Существует также проблема с надгробными плитами, так как like_count может часто обновляться. Хорошей частью является то, что чтение может быть быстрее (если нет чрезмерных надгробий).

Третий метод может облегчить проблему захоронения за счет одного дополнительного компонента для сортировки.

Какой метод вы считаете лучшим? Какая разница в производительности?

Ответы на вопрос(1)

Ваш ответ на вопрос