gpt4 book ai didi

cassandra - 使用部分分区键从 Cassandra 中删除数据

转载 作者:行者123 更新时间:2023-12-01 12:20:19 24 4
gpt4 key购买 nike

假设我在 Cassandra 中有下表:

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_idorder_id它用于存储时间序列数据。

数据没有 TTL ,因为它应该随时可以访问。

在某些情况下,我们可能需要删除给定 store_id 的所有数据。 .
这样做的最佳做法是什么?

到目前为止,我想到了以下解决方案:
  • 编写一个程序,该程序将从表中选择所有数据并删除给定 store_id 的记录。 . - 缺点是随着我们在表中插入更多数据,这将花费越来越多的时间。
  • 将数据留在表中。 - 这样做的唯一问题是我们将拥有无用的数据。
  • 将带有可用分区键的表名存储在不同的表中,可以通过 store_id 查询。 ,从中获取 key 并为每个或这些 key 创建删除语句。 - 我不喜欢这个概念,因为我必须维护记录。

  • 有没有人遇到过这个问题?从 Cassandra 清除未使用记录的最佳做法是什么(不包括 TTL)?

    最佳答案

    创建一个物化 View 来存储属于对应 store_ids 的 product_ids。通过这种方式,您可以查询给定 store_id 的 MV,然后从主表中删除相应的行。这样可以避免额外的应用程序代码来维护两个不同的表。

    create materialized view mv_customer_bought_product 
    as select product_id, store_id, order_time, email
    from customer_bought_product
    where order_time is not null
    and email is not null
    and product_id is not null
    and store_id is not null
    primary key (store_id, product_id, order_time, email) ;

    关于cassandra - 使用部分分区键从 Cassandra 中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889522/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com