使用IN运算符进行BigTable查询以获取所有用户组密钥

时间:2011-01-20 19:58:55

标签: caching permissions nosql bigtable

我未来的社交应用程序中的权限几乎没有问题。

平台将是nonrel db(谷歌的BigTable)。

在我的应用程序中,每个用户都有一个组(例如:朋友,合作者,家人......)。小组中有一些朋友(比如Facebook)。并且可以仅为该组发布一些内容(新闻,短文,...)。 如果我的群组中有用户,那么这就是我的朋友。就像在Facebook,但更多的群体。

我的想法是,每个用户都可以在一个页面中看到(自己“提供”)所有朋友的所有最后内容(如Facebook的热门新闻)。 但是我在创建简单查询方面遇到了问题。

例如:

SELECT * FROM News WHERE group_key IN [list_of_groups_where_i_am]

这样做很好,但是有子查询和列表限制是30项。 其他方式是强烈缓存内容。

有人有想法吗?或任何学习材料,例如......

1 个答案:

答案 0 :(得分:1)

对于这样的要求,您可以优化读取或写入,但通常不能同时优化。您具有写入优化版本 - 只需使用正确的组密钥编写记录,但具有复杂查询以获取所有组的内容。

读取优化版本将内容(或仅其ID)写入每个用户的订阅源,这使得读取查询非常简单。