首页 文章

Cassandra数据模型

提问于
浏览
2

我尝试为测验游戏统计数据构建后端:我想知道全局每个图像的识别百分比以及按国家/地区识别图像的百分比 .

目前datamodel是:

TABLE results (
  country text,
  percent float,
  image_id text,
  fail int,
  ok int,
  shown int,
  PRIMARY KEY (country, percent, image_id)
);

我可以按国家/地区查询结果,但我无法获得全局结果(图片的百分比更高) .

任何提示?

2 回答

  • 0

    可以定义“TOTAL”国家/地区,该国家/地区将保留所有国家/地区的统计数据 .

    附:使 percent 成为主键的一部分并不可能 percent 字段的原子更新 .

    我认为有两种可能的情况:要么数据集足够小 - 那么在 percent 字段上具有二级索引的任何SQL DB都会比cassandra更好地工作,或者SQL DB会有太多数据 - 然后Cassandra用这个数据模型也不起作用,只有部分计数的map / reduce会起作用 .

  • 2

    你需要两个CF.

    另一种方法是使用排序分区并使用CompoteType的键,因此您的密钥不是PRIMARY KEY(country,percent,image_id)而是PRIMARY KEY((country,percent,image_id)) .

    您还需要另一列image_id,您可以在该image_id上放置一个二级索引,以便您可以执行image_id = x的查询

相关问题