Elasticsearch vs Cassandra vs Elasticsearch avec Cassandra
Je suis en train d'apprendre les bases NoSQL, et de regarder les différentes options pour l'un de mes exigences du client. J'ai traversé plusieurs ressources avant de mettre en place cette question (une personne avec peu de connaissances dans les bases NoSQL)
- J'ai besoin de stocker des données au plus vite et de lire les données.
- Entièrement sûres et facilement extensible.
- En mesure de rechercher à travers des données à des fins d'analyse.
J'ai fini avec une courte liste de: Cassandra and Elasticsearch
Ce que je ne comprends, c'est Cassandra est une parfaite solution de stockage NoSQL pour moi, car je peux écrire des données et de lire les données à l'aide des indices. Où il échoue ou qu'il risque d'échouer est sur Analytics. Dans l'avenir, si je veux obtenir des données à partir de from_date to to_date
, ou plus de moyens pour obtenir des données à des fins d'analyse, si je n'ai pas de conception du modèle de Données correctement ou de maintien à long terme de la vue, qui peut être assez difficile dans le monde en constante évolution.
Tout Elastic Search
est meilleur lors de l'indexation (soutenu par Lucene), et peut rechercher les données au hasard en jetant un texte aléatoire. Mais est-ce vraiment la même, même si je veux récupérer les données from_date to to_date
(je m'attends il pourrait être). Mais la vraie question est, est-il un Moteur de Recherche, ou parfait de stockage de données NoSQL comme Cassandra? Si oui, pourquoi avons-nous encore besoin de Cassandra?
Si ces deux sont dans un monde différent, veuillez l'expliquer! Comment pouvons-nous combiner entre eux pour obtenir une solution plus efficace?
- Vous devriez considérer aussi la DSE Search = Cassandra + solr intégré = le meilleur des deux mondes: une solution évolutive db pour le stockage motivée par la recherche de la puissance de Solr.
- Je suppose que DSE est commercial et nous ne sommes pas à la recherche après les logiciels commerciaux.
- Si vous êtes une startup avec un chiffre d'affaires net < 2 millions de dollars (US), ils vous permettront d'utiliser des DSE gratuit (pour au moins un an ou deux).
Vous devez vous connecter pour publier un commentaire.
L'une de nos applications utilise des données stockées dans les deux Cassandra et ElasticSearch. Nous utilisons Cassandra pour accéder à ces dossiers chaque fois que nous pouvons, et nous avons des données dupliquées dans des tables de requêtes conçu pour adhérer à l'application spécifique du côté de la demande. Pour plus libérale de recherche de nos tables de requêtes peut permettre, ElasticSearch effectue cette fonctionnalité bien.
Nous avons demandé à cette même question (de nous)..."Pourquoi ne pas simplement obtenir tout ce à partir de ElastsicSearch?"
La réponse est que ElasticSearch a été conçu pour être un moteur de recherche, et non une banque de données persistantes. Parfois, ElasticSearch perd écrit. Schéma changements sont difficiles à faire dans ElasticSearch sans souffler tout de suite et de rechargement. Pour cela, j'ai écrit des emplois qui sont conçus pour garder ElasticSearch en synchronisation avec notre cluster Cassandra. Il y avait aussi un assez récente discussion sur Quora sur ce sujet, qui a abouti à des points similaires.
Cela étant dit, ElasticSearch œuvres grande comme un moteur de recherche. Et Cassandra œuvres grande comme une solution évolutive, de haute performance de la banque de données. Mais interrogation de données est différent de recherche pour les données. Il ya des moments que nous avons besoin de l'un ou de l'autre, et d'une combinaison des deux fonctionne bien pour notre application. Il peut (ou peut ne pas) fonctionnent bien pour la vôtre.
Comme google analytics, j'ai eu quelques succès en utilisant le Cassandra Étincelle connecteur, pour servir plus complexe requêtes OLAP. Espérons que cela aide.
Cassandra + Lucene est une excellente option. Il existe différentes initiatives de ce problème, par exemple:
Après avoir travaillé sur ce problème moi-même, j'ai réalisé que les bases de données NoSQL comme casandra sont bons quand vous voulez vous assurer que vous êtes en préservant votre schéma de données fiables opération d'écriture, et ne veulent pas prendre avantage de l'indexation des opérations qui elasticsearch propose. Dans le cas où vous souhaitez conserver certains indices de données puis elasticsearch est bon dans le cas où vous faites confiance à votre régime et ne va faire beaucoup plus de lectures que de l'écrit.
Mon cas était d'analyse des données. J'ai donc conservé une grande partie de mon Latex élastique de recherche depuis plus tard, j'ai voulu parcourir à travers les données d'un lot de voir ce qui devrait être ma prochaine étape. Je l'aurais utilisé casandra si je voulais avoir beaucoup de changements dans le schéma de données dans mon analytique pilelines.
Aussi il y a beaucoup de belles représentant des outils comme kibana que vous pouvez utiliser pour présenter vos données avec des graphiques. Peut-être que je suis paresseux, mais ils sont très beau et ils m'ont aidé.
Stockage des données dans une combinaison de Cassandra et ElasticSearch vous donne plus de fonctionnalités. Il vous permet de rechercher à clé-valeur, les tableaux, et vous permet aussi de rechercher des données dans les index.
La combinaison vous donne beaucoup de flexibilité, idéal pour votre application.
Elassandra est la solution combinée de Cassandra + Elastic search , Il utilise des Élastiques de recherche pour indexer les données et Cassandra comme la banque de données , je ne suis pas sûr à propos de la performance, mais aussi par ce l'article , sa performance est bonne.
Si votre application a besoin fonctionnalité de recherche puis , Elassandra est la meilleure option open source. DSE de recherche est disponible, mais son cher.
Nous avons développé une application où nous avons utilisé la Elasticsearch et Cassandra.
Des données similaires ont été stockées dans Cassandra et indexés dans Elasticsearch.
De notre application, l'INTERFACE utilisateur a été d'avoir des fonctionnalités comme la recherche, les agrégations, les données d'exportation, etc.
Le back-end microservices ont été continuellement énorme de données (sur Kafka sujets) et de les stocker dans Cassandra. Une fois que les données sont stockées dans Cassandra, les services seraient assurez-vous que les données sont indexées dans Elasticsearch.
Cassandra a été agissant en tant que "Source de vérité" Elasticsearch. Dans le cas, où réindexation de l'ES de l'indice a été nécessaire, nous avons demandé Cassandra et reindexé les données dans ES.
Cette solution a permis de nous, car c'est très facile de l'échelle et de la recherche et des agrégations ont été beaucoup plus rapide.