Nosql 卡桑德拉数据模型
我试图为问答游戏统计建立一个后端:我想知道全球每幅图像的识别率,以及各国图像的识别率 当前数据模型为: TABLE results ( country text, percent float, image_id text, fail int, ok int, shown int, PRIMARY KEY (country, percent, image_id) ); 表格结果( 国家文本, 浮动百分比, 图像标识文本, 不合格整数, 好的, 显示int, 主键(国家、百分比、图像id) ); 我可以按国家查询结果,但无法获得全局结果(百分比较高的图像) 有什么提示吗?可以定义“总计”国家,它将保存所有国家的统计数据总和 另外,由于cassandra的最终一致性,将Nosql 卡桑德拉数据模型,nosql,cassandra,data-modeling,Nosql,Cassandra,Data Modeling,我试图为问答游戏统计建立一个后端:我想知道全球每幅图像的识别率,以及各国图像的识别率 当前数据模型为: TABLE results ( country text, percent float, image_id text, fail int, ok int, shown int, PRIMARY KEY (country, percent, image_id) ); 表格结果( 国家文本, 浮动百分比, 图像标识文本, 不合格整数, 好的, 显示int, 主键(国家、
百分比
作为主键的一部分似乎不是一个好主意:不可能对百分比
字段进行原子更新
我认为有两种可能的情况:要么数据集足够小,那么任何在percent
字段上具有二级索引的SQL DB都会比cassandra做得更好,要么SQL DB的数据太多,那么使用此数据模型的cassandra也不会工作,只有部分计数的映射/减少才行。您需要两个CFs
另一种方法是使用排序分区并使用CompoteType键,因此您的键不是主键(country,percent,image_id),而是主键((country,percent,image_id))
您还需要另一个列,image\u id,您可以在该image\u id上放置一个二级索引,这样您可以在image\u id=x是image\u id唯一的地方进行查询,或者它可以与任何国家相关,这样国家和image\u id都必须是PK的一部分?image\u id是唯一的,它是PK的一部分,因此我可以查询特定image\u id的所有结果