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)
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?
Cassandra + Lucene est une excellente option. Il existe différentes initiatives pour ce problème, par exemple:
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é.
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.
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.
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.