比方说,我在下面的表格有卡桑德拉:删除数据与分区键
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)
分区键store_id
和order_id
,它是为了存储时间序列数据使用。
该数据没有TTL
,因为它应该始终可以访问。
在某些情况下,我们可能需要删除给定store_id
的所有数据。 这样做的最佳做法是什么?
到目前为止,我已经想到了以下解决方案:
- 写一个程序,将选择所有从表中的数据,并与给定
store_id
删除记录。 - 缺点是,我们在表格中插入更多的数据会花费更多的时间。 - 将数据留在表中。 - 这样做的唯一问题是我们将有无用的数据。
- 将表名与可用分区键一起存储在不同的表中,可以通过
store_id
查询,从中获取键并为每个或那些键创建删除语句。 - 我不喜欢这个概念,因为我必须保持记录。
有没有人遇到过这个问题?清除Cassandra中未使用的记录(不包括TTL
)的最佳做法是什么?
你如何与分区键的一部分访问数据删除相应的记录?允许过滤将在生产中如此昂贵和无效。 – dilsingi
当我访问数据时,我有一个特定的'product_id'和'store_id'。 –
因此,它只有在删除时,您只有store_id和正常访问模式是通过product_id和store_id的分区键。基于此提供了我的答案。物化视图中的 – dilsingi