gpt4 book ai didi

Cassandra - 数据建模时间序列 - 避免 "Hot Spots"?

转载 作者:行者123 更新时间:2023-12-02 22:42:50 25 4
gpt4 key购买 nike

我正在开发 Cassandra 数据模型来存储用户上传的记录。

潜在的问题是,某些用户可能在 5 分钟内上传 50-100k 行,这可能会导致分区键 (user_id) 出现“热点”。 (如果每个分区超过 10k 行,Datastax 建议重新考虑数据模型)。​​

如何避免短时间内分区键上有太多记录?

我尝试过使用Time Series suggestions from Datastax ,但即使我有年、月、日、小时列,热点仍然可能出现。

CREATE TABLE uploads (
user_id text
,rec_id timeuuid
,rec_key text
,rec_value text
,PRIMARY KEY (user_id, rec_id)
);

用例是:

  • 根据user_id获取所有上传记录
  • 按日期范围搜索上传记录范围

最佳答案

一些可能的想法:

  1. 使用复合分区键而不仅仅是 user_id。分区键的第二部分可以是从 1 到 n 的随机数。例如,如果 n 为 5,那么您的上传将分布在每个用户的 5 个分区上,而不是仅一个。缺点是当您进行读取时,您必须重复读取 n 次才能读取所有分区。

  2. 有一个单独的表来处理传入的上传,使用rec_id作为分区键。这会将上传负载均匀地分布在所有可用节点上。然后,要将这些数据放入以 user_id 作为分区键的表中,请定期运行 Spark 作业来提取新的上传内容,并以单个分区可以处理的速率将它们添加到基于 user_id 的表中。

  3. 修改您的前端以限制单个用户上传记录的速率。如果只有少数用户以足够高的速度上传而导致问题,那么限制他们可能比修改整个架构更容易。

关于Cassandra - 数据建模时间序列 - 避免 "Hot Spots"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210871/

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