J'ai un service Web qui maintient l'état d'une "requête". Les états possibles sont "Active" et "InActive". Je stocke les informations de demande dans une base de données Cassandra. J'ai deux tables - une pour les demandes actives et une autre pour les demandes InActive. Ils ont tous les deux le même schéma.Obtention d'une entrée de base de données lors d'une opération de suppression dans Cassandra
Mon schéma est comme suit:
ActiveRequests{
UserId text,
RequestId int,
RequestData text
PRIMARY KEY(UserId, RequestId)
}
J'ai besoin de mettre en œuvre une API qui se déplacera une demande de l'état actif à l'état inactif. Je prévois de le faire en supprimant l'entrée de la table active, puis en ajoutant l'entrée supprimée à la table InActive.
Dans Cassandra, il semble qu'une opération DELETE
ne retourne pas réellement les données qui ont été supprimées. Donc, je dois faire un SELECT
sur l'entrée de la demande (de sorte que je puisse obtenir toutes les données de demande pour l'ajout à la table InActive) et ensuite faire une opération DELETE
. Y a-t-il une meilleure manière de faire cela?
EDIT
Vous pouvez demander pourquoi je maintiens les demandes actives et inactives comme des tables séparées. Je pourrais potentiellement les combiner dans une seule table et avoir une colonne IsActive
. Mon raisonnement pour maintenir des tables séparées est le suivant:
Je veux que mes requêtes à la table active soient très rapides. Si je veux interroger toutes les demandes actives dans une table qui a des demandes actives et InActive qui ne seront pas optimales. PartitionKey est userId et j'attends que la table InActive ait plusieurs 1000 requestIds pour un UserId donné. Mais, Active ne devrait avoir que 10 requestIds ou plus par UserId.
Pourquoi s'embêter avec deux tables? Si vous utilisez une seule table, cela devient un problème de retourner un drapeau, avec un simple dans CQL, mais une question intéressante: –
Sreekar
Je veux que mes requêtes à la Table Active soient très Si je veux interroger toutes les demandes actives dans une table qui a des demandes actives et InActive qui ne seront pas optimales.PartitionKey est userId et j'attends que la table InActive ait plusieurs 1000 requestIds pour un UserId donné. Mais, Active ne devrait avoir que 10 requestIds ou plus par UserId. – AndroidDev93