首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡桑德拉-数据建模时间序列-避免“热点”?

卡桑德拉-数据建模时间序列-避免“热点”?
EN

Stack Overflow用户
提问于 2015-07-03 16:15:48
回答 1查看 2.5K关注 0票数 3

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

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

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

我尝试过使用Datastax的时间序列建议,但是即使我有年、月、日、小时列,也可能会出现热点。

代码语言:javascript
复制
CREATE TABLE uploads (
    user_id text
   ,rec_id timeuuid
   ,rec_key text
   ,rec_value text
   ,PRIMARY KEY (user_id, rec_id)
);   

用例是:

  • 通过user_id获取所有上传记录
  • 按日期范围搜索上载记录
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-06 12:41:46

一些可能的想法:

  1. 使用复合分区键,而不是只使用user_id。分区键的第二部分可以是从1到n的随机数。例如,如果n为5,那么您的上传将分散在每个用户的五个分区上,而不仅仅是一个。缺点是当您读取时,必须重复它们n次才能读取所有分区。
  2. 有一个单独的表来处理传入的上传,使用rec_id作为分区键。这将在所有可用节点上平均分配上载负载。然后,以user_id作为分区键,将这些数据放入表中,定期运行spark作业,提取新的上传内容,并以单个分区能够处理的速率将它们添加到基于user_id的表中。
  3. 修改前端以控制个人用户上传记录的速度。如果只有少数用户以足够高的速度上传到导致问题,那么限制他们比修改整个体系结构要容易得多。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31210871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档