Quando usar Cassandra vs. Solr no DSE?

Estou usando o DSE para integração com Cassandra / Solr, para que os dados sejam armazenados no Cassandra e indexados no Solr. É muito natural usar o Cassandra para lidar com a operação CRUD e usar o Solr para pesquisa de texto completo, respectivamente, e o DSE pode realmente simplificar a sincronização de dados entre o Cassandra e o Solr.

Quando se trata de consulta, no entanto, existem duas maneiras de seguir: Cassandra secundário / índice configurado manual vs. Solr. Quero saber quando usar qual método e qual é a diferença de desempenho em geral, especialmente na configuração do DSE.

Aqui está um exemplo de caso de uso no meu projeto. Eu tenho uma tabela Cassandra armazenando alguns dados da entidade do item. Além da operação básica de CRUD, também preciso recuperar itens por igualdade em algum campo (por exemplo, categoria) e depois classificar por alguma ordem (no meu caso aqui, um campo like_count).

Posso pensar em três maneiras diferentes de lidar com isso:

Declare 'indexed = true' no esquema do Solr para os campos de categoria e like_count e consulta no SolrCrie uma tabela desnormalizada no Cassandra com chave primária (categoria, como número, identificação)Crie uma tabela desnormalizada no Cassandra com chave primária (categoria, ordem, ID) e use um componente externo, como Spark / Storm ,, para classificar os itens por like_count

O primeiro método parece ser o mais simples de implementar e manter. Acabei de escrever um código trivial de acesso ao Solr e o restante do trabalho pesado é tratado pela pesquisa do Solr / DSE.

O segundo método requer desnormalização manual na criação e atualização. Eu também preciso manter uma tabela separada. Há também um problema de marca de exclusão, pois o like_count pode ser atualizado com freqüência. A parte boa é que a leitura pode ser mais rápida (se não houver lápides excessivas).

O terceiro método pode aliviar o problema da lápide ao custo de um componente extra para classificação.

Qual método você acha que é a melhor opção? Qual é a diferença no desempenho?

questionAnswers(1)

yourAnswerToTheQuestion