Folks, Je voudrais résoudre ce qui suit avec une table à Cassandra. Lesdites pistes de service lorsque les utilisateurs ouvrent un actif. Lors d'événements ultérieurs sur le même actif, nous écrasons simplement accessDate.Cassandra Schema pour la récupération des enregistrements de date
exemple enregistrement:
{userId: "string", assetId: "string", accessdate: unixTimestamp}
Ceci dit, nous devons remplir les conditions d'accès suivantes (chaque l'exigence a sa propre puce pour la lisibilité):
- Etre capable de renvoyer tous les actifs qu'un utilisateur a ouverts et à quelle heure.
Ceci est facile à réaliser, table pourrait ressembler à:
CREATE TABLE user_assets_tracker (
userId uuid,
accessDate timestamp,
assetId uuid,
PRIMARY KEY (userid, accessDate, assetId)
);
Cela nous permet d'interroger l'ensemble des actifs, et quand chacun était la dernière fois.
SELECT *
FROM user_assets_tracker
WHERE userId = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
>
Dandy. Maintenant, les choses les plus difficiles, dont je ne suis pas sûr, espéraient que les gens pourraient intervenir:
- Montrez-moi tous les éléments ajoutés au cours des 30 derniers jours.
Naturellement, la limite n'est pas ce dont nous avons besoin. En outre, nous pouvons avoir besoin de 2 tables pour y parvenir.
SELECT *
FROM user_assets_tracker
WHERE userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
LIMIT 10; ?????
- Montrez-moi le dernier élément accessible pour l'utilisateur. Je pense que celui-ci est plus facile, le LIMIT 1 résout cela.
Ceci est probablement avant droit, avec ce schéma:
CREATE TABLE user_assets_tracker (
userId uuid,
accessDate timestamp,
assetId uuid,
PRIMARY KEY (userid, accessDate, assetId)
);
SELECT *
FROM user_assets_tracker
WHERE userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
ORDER BY accessDate DESC;
LIMIT 1;
- Extrayez la fiche complète pour un userId particulier + assetId
Depuis accessdate vient avant assetId dans notre schéma, Je ne suis pas sûr de savoir comment faire cela aussi. Une autre table?
Merci!
PS Il semble que SASI Index pourrait être la solution
MERCI BEAUCOUP! Question rapide, je vois que dans le premier exemple vous avez (userid, accessdate, assetid), mais dans la seconde vous avez (userid, assetid, accessdate); Comment la requête unique fonctionnera-t-elle alors? – Cmag