Disons que je le tableau suivant Cassandra:Supprimer les données de Cassandra avec une partie de la partition clé
customer_bought_product (
store_id uuid,
product_id text,
order_time timestamp,
email text,
first_name text,
last_name text,
PRIMARY KEY ((store_id, product_id), order_time, email)
Les clés de partition sont store_id
et order_id
et il est utilisé afin de stocker des données de séries chronologiques.
Les données n'ont pas de TTL
, car elles devraient être accessibles en tout temps. Dans certains cas, nous pouvons avoir besoin de supprimer toutes les données pour store_id
. Quelle est la meilleure pratique pour le faire?
Jusqu'à présent, j'ai pensé des solutions suivantes:
- Ecrire un programme, qui sélectionnera toutes les données de la table et supprimer les enregistrements avec la donnée
store_id
. - L'inconvénient est que cela prendra de plus en plus de temps car nous insérons plus de données dans le tableau. - Laissez les données dans le tableau. - Le seul problème avec cela, c'est que nous aurons des données inutiles.
- Stockez le nom de la table avec les clés de partition disponibles dans une table différente, qui peut être interrogée par
store_id
, récupérez les clés et créez une instruction de suppression pour chacune de ces clés. - Je n'aime pas ce concept, parce que je dois tenir les dossiers.
Est-ce que quelqu'un a rencontré ce problème? Quelle est la meilleure pratique pour effacer les enregistrements inutilisés de Cassandra (à l'exclusion de TTL
)?
Comment pouvez-vous accéder aux données avec une partie de clé de partition? AUTORISER LE FILTRAGE va être si coûteux et inefficace dans la production. – dilsingi
Lorsque j'accède aux données, j'ai un 'product_id' spécifique et un' store_id'. –
C'est donc seulement pendant les suppressions que vous avez juste le store_id et le modèle d'accès normal est via la clé de partition de product_id et store_id. A fourni ma réponse basée sur ceci. – dilsingi