Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nosql 卡桑德拉数据模型_Nosql_Cassandra_Data Modeling - Fatal编程技术网

Nosql 卡桑德拉数据模型

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, 主键(国家、

我试图为问答游戏统计建立一个后端:我想知道全球每幅图像的识别率,以及各国图像的识别率

当前数据模型为:

TABLE results ( country text, percent float, image_id text, fail int, ok int, shown int, PRIMARY KEY (country, percent, image_id) ); 表格结果( 国家文本, 浮动百分比, 图像标识文本, 不合格整数, 好的, 显示int, 主键(国家、百分比、图像id) ); 我可以按国家查询结果,但无法获得全局结果(百分比较高的图像)

有什么提示吗?

可以定义“总计”国家,它将保存所有国家的统计数据总和

另外,由于cassandra的最终一致性,将
百分比
作为主键的一部分似乎不是一个好主意:不可能对
百分比
字段进行原子更新

我认为有两种可能的情况:要么数据集足够小,那么任何在
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的所有结果