web-dev-qa-db-fra.com

Elasticsearch vs Cassandra vs Elasticsearch avec Cassandra

J'apprends NoSQL et j'examine différentes options pour répondre aux besoins de l'un de mes clients. J'ai passé en revue diverses ressources avant de poser cette question (une personne ayant peu de connaissances en NoSQL)

  • J'ai besoin de stocker des données plus rapidement et de lire des données. 
  • Entièrement sécurisé et facilement évolutif.
  • Capable de rechercher dans les données pour Analytics.

Je me suis retrouvé avec une courte liste de: Cassandra and Elasticsearch

Ce que je comprends, c'est que Cassandra est pour moi une solution de stockage NoSQL parfaite, car je peux écrire et lire des données à l’aide d’index. Où cela échoue ou pourrait échouer est sur Analytics. À l'avenir, si je veux obtenir des données à partir de from_date to to_date, ou plus de façons d'obtenir des données pour l'analyse, si je ne conçois pas correctement le modèle de données ou ne conserve pas une vision à long terme, ce qui pourrait être assez difficile dans un monde en constante évolution.

Alors que Elastic Search est le meilleur pour l’indexation (soutenu par Lucene), il peut rechercher les données de manière aléatoire en lançant du texte aléatoire. Mais cela fonctionne-t-il de la même manière, même si je souhaite récupérer des données from_date to to_date (je suppose que cela pourrait être le cas). Mais la vraie question est: est-ce un moteur de recherche, ou un stockage de données NoSQL parfait comme Cassandra? Si oui, pourquoi avons-nous encore besoin de Cassandra?

Si les deux sont dans un monde différent, expliquez-le! Comment pouvons-nous les combiner pour obtenir une solution plus efficace?

95
Reddy

Cassandra + Lucene est une excellente option. Il existe différentes initiatives pour ce problème, par exemple:

28
Alvaro Agea

Après avoir moi-même travaillé sur ce problème, je me suis rendu compte que les bases de données NoSQL telles que casandra sont utiles lorsque vous souhaitez vous assurer que vous conservez votre schéma de données avec une opération d'écriture fiable et que vous ne souhaitez pas tirer parti des opérations d'indexation proposées par elasticsearch. Si vous souhaitez conserver certaines données d'index, alors elasticsearch est utile si vous faites confiance à votre schéma et n'allez faire que beaucoup plus de lectures que d'écritures.

Mon cas était l'analyse de données. J'ai donc conservé beaucoup de mes Latices en recherche élastique car plus tard, je voulais parcourir beaucoup de données pour voir quelle devrait être ma prochaine étape. J'aurais utilisé casandra si je voulais avoir beaucoup de changements dans le schéma des données de mes colonnes d'analyse.

Il existe également de nombreux outils représentant Nice, comme kibana, que vous pouvez utiliser pour présenter vos données avec de bons graphiques. Peut-être que je suis paresseux mais ils sont très beaux et ils m'ont aidé. 

7
M.Rez

Le stockage de données dans une combinaison de Cassandra et ElasticSearch vous offre la plupart des fonctionnalités. Il vous permet de rechercher des tables clé-valeur et vous permet également de rechercher des données dans des index.

La combinaison vous donne beaucoup de flexibilité, idéale pour votre application. 

3
user2089236
  • Comme elasticsearch est construit sur Lucene index et si vous souhaitez stocker l'indexation dans elasticsearch, vous obtiendrez de meilleures performances que l'indexation dans Cassandra même pour la récupération des données.
  • Si vos exigences ne sont pas liées à la récupération en temps réel, vous pouvez également utiliser elasticsearch comme base de données NoSQL. Certains pensent que ElasticSearch perd des écritures et que les modifications de schéma sont difficiles, mais si votre volume de données n'est pas trop volumineux. Vous pouvez facilement réaliser elasticsearch en tant que moteur de recherche avec la meilleure indexation et avec elasticsearch en tant que base de données NoSQL. Vous pouvez l’empêcher de plusieurs façons. J'ai travaillé sur les modifications de schéma dans elasticsearch. Si votre structure de données est cohérente, cela créera des problèmes.
  • Être un partisan d'ElasticSearch ou de SOlr. J'ai travaillé sur les deux moteurs de recherche et j'ai appris que les deux moteurs de recherche peuvent être utilisés couramment si vous les configurez correctement. 
  • Seul inconvénient auquel je peux penser, si vous visez un résultat en temps réel et que vous ne pouvez pas comprendre le délai de votre milliseconde dans votre réponse. Ensuite, il vaut mieux prendre l’aide d’autres bases de données NoSQL telles que Cassandra ou Couchbase. 
  • Cassandra avec Solr fonctionne mieux que Cassandra avec elasticSearch. 
0
vishal yadav

Nous avions développé une application utilisant Elasticsearch et Cassandra. Des données similaires ont été stockées dans Cassandra et indexées dans Elasticsearch.

L'interface utilisateur de notre application comportait des fonctionnalités telles que des recherches, des agrégations, l'exportation de données, etc. Les microservices dorsaux recevaient continuellement d'énormes données (sur des sujets liés à Kafka) et les stockaient dans Cassandra. Une fois les données stockées dans Cassandra, les services s’assureraient que les données sont indexées dans Elasticsearch.

Cassandra agissait comme "source de vérité" pour Elasticsearch. Dans les cas où la réindexation de l'index ES était nécessaire, nous avons interrogé Cassandra et réindexé les données dans ES.

Cette solution nous a aidés, car elle était très facile à mettre à l’échelle et les recherches et les agrégations étaient beaucoup plus rapides.

0
Sumit A

Elassandra est la solution combinée de Cassandra + Elastic search. Il utilise la recherche Elastic pour indexer les données et Cassandra en tant que magasin de données. Je ne suis pas sûr de la performance, mais selon cet article article , ses performances est bon.
Si votre application a besoin d'une fonctionnalité de recherche, Elassandra est la meilleure option open source. La recherche DSE est disponible mais coûte cher.

0
anavaras lamurep