J'ai un problème avec la fonctionnalité de mon application qui s'intègre à Cassandra. J'essaie de créer un flux de contenu pour mon users
. Les utilisateurs peuvent créer des messages qui, à leur tour, ont le champ user_id
. J'utilise Redis pour l'ensemble du graphe social et j'utilise des colonnes Cassandra uniquement pour les objets. Dans Redis, l'utilisateur 1 a un ensemble nommé user:1:followers
avec tous ses identifiants. Ces identifiants correspondent aux ID Cassandra dans la table users et user_ids dans la table posts.Cassandra/Redis: Façon de créer des flux sans indice secondaire Cassandra 'IN'?
Mon objectif était à l'origine de brancher simplement tous les user_id
s de cette Redis mis dans une requête qui utiliserait FROM posts WHERE user_id IN (user_ids here)
et saisir tous les postes de l'indice secondaire user_id
. Le problème est que Cassandra ne fait pas exprès support l'opérateur IN
dans les index secondaires car cet index forcerait Cassandra à rechercher TOUS ses nœuds pour cette valeur. Je ne dispose que de deux options: Soit créer une liste Redis de user:1:follow_feed
pour les ID poste, puis rechercher l'index principal de Cassandra pour ces publications dans une seule requête, ou conserver la façon dont je l'ai maintenant et exécuter une requête individuelle pour chaque user_id
dans l'ensemble user:1:follower
. Je suis vraiment contre la première option parce que j'ai déjà des tonnes et des tonnes de données graphiques dans Redis, et cette option ajouterait une nouvelle liste pour chaque utilisateur. La deuxième façon est bien pire. Je voudrais mettre une charge de lecture massive sur Cassandra et il faudrait beaucoup de temps pour exécuter des requêtes individuelles pour un ensemble d'identifiants. Je suis coincé entre un rocher et un endroit difficile, autant que je le vois. Est-il possible d'interroger les index secondaires avec plusieurs valeurs? Sinon, existe-t-il un moyen plus efficace de charger ces flux de contenu (RAM et vitesse) par rapport aux options de plusieurs listes Redis ou de plusieurs requêtes Cassandra? Merci d'avance.
Intéressant, donc la clé primaire peut être à la fois le user_id et le post_id? – user3181113
La clé primaire peut être un composite de la clé de partition (le premier élément d'une clause PRIMARY KEY * et * la ou les clés de clustering) (toutes les entrées restantes dans cette clause PRIMARY KEY. –