0

我想知道为保存活动流数据的表设置键的最佳方法是什么。每种活动类型都有不同的属性(有一些常见的属性)。以下是一些项目将包含的示例:

跟随活动:

  • 类型
  • 用户身份
  • 时间戳
  • follower_user_id
  • followee_user_id

评论活动

  • 类型
  • 用户身份
  • 时间戳
  • comment_id
  • commenter_user_id
  • commented_user_id

为了显示流,我将查询 user_id 并按时间戳排序。还会有其他类型的查询 - 例如,我偶尔需要查询 user_id AND type 以及 comment_id、follower_user_id 等内容。

所以我的问题是:

  1. 我的主键应该是使用 user_id 和时间戳的哈希和范围键吗?
  2. 我是否需要为所有其他项目建立二级索引——例如comment_id,或者如果没有索引,结果是否会足够快地返回?二级索引限制为 5 个,这对于我需要执行的所有类型的查询来说是不够的。
4

1 回答 1

0

我会考虑您是否可以将数据分成两个(或更多)表 - 允许更好地使用您的查询。根据需要(如果需要)将两者结合起来,即 - 您的类型成为您的表,而不是像在 SQL 中那样的鉴别器

如果您不分开表格,那么我的答案将是

  1. 是的 - 我认为这将是最好的选择,因为它似乎大部分时间都是你使用它的方式。
  2. 不,但是您确实需要考虑最频繁的查询是什么以及围绕它的性能注意事项。哪些需要高性能——哪些“足够好”足够好?

缓存和异步处理的组合可以使执行缓慢的扫描足够好 - 但它并不能消除对具有一些本地二级索引的要求。

于 2013-08-07T02:13:26.943 回答