cassandra - 如何避免分区键过大
问题描述
分区大小不应大于 10 MB(推荐)。我怎样才能避免这种情况?
我可以使用 2 个分区键,但我无法查询它们,它不适合我的查询。
如果您有 2 个分区键,并且执行查询,则必须像这样调用两个分区键:
user_id = partition key
post_id = partition key
SELECT * FROM posts WHERE user_id = 1 AND post_id = 1;
如果你使用它,你会得到一个错误,因为你没有调用 post_id
SELECT * FROM posts WHERE user_id = 1;
但是我的查询中不需要 post_id 或 user_id 我只需要其中一个,而不是两者都需要。那么我现在如何避免分区大小?
解决方案
你可以有如下的表格设计 -
CREATE TABLE user_post_by_month (
userid int,
year int,
month int,
postid int,
post text,
PRIMARY KEY ((userid,year,month),postid);
这种设计不会产生宽行。您可以按用户获取特定月份的帖子。如果您预计一个月内用户的帖子过多,您可以添加另一个存储桶,例如一周。
CREATE TABLE user_post_by_week (
userid int,
year int,
month int,
week int,
postid int,
post text,
PRIMARY KEY ((userid,year,month,week),postid);
推荐阅读
- java - Lollipop+ Unbind BeaconManager not working
- elasticsearch - Get all documents from elastic search with a field having same value
- javascript - JavaScript 显示模块模式私有变量状态
- powershell - Get value from pipeline with ValueFromPipelineByPropertyName
- node.js - 如何使用 node.js 设置重置密码功能?
- vba - Split cell content by "';" using VBA or Excel formula
- c# - In c# json object has only 1 data and json.Count is not working
- c++ - 每 (n) 秒打印一次的程序
- php - 如何绕过主题编辑器块?
- ios - 删除每个 MDCInputField 下方的标签/标签间距