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

Posted

技术标签:

【中文标题】使用 IN 运算符进行 BigTable 查询以获取所有用户组键【英文标题】:BigTable query with IN operator to get all user group keys 【发布时间】:2011-01-20 19:58:55 【问题描述】:

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

平台将不依赖 db(Google 的 BigTable)。

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

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

例如:

SELECT * FROM News WHERE group_key IN [list_of_groups_where_i_am]

这很好用,但是有子查询并且列表的限制是 30 项。 另一种方法是对内容进行强缓存。

有人知道吗?或任何学习材料,例如...

【问题讨论】:

【参考方案1】:

有了这样的需求,您可以针对读取或写入进行优化,但通常不能同时针对两者进行优化。您拥有写入优化版本 - 只需使用正确的组键写入记录,但有一个复杂的查询来获取所有组的内容。

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

【讨论】:

以上是关于使用 IN 运算符进行 BigTable 查询以获取所有用户组键的主要内容,如果未能解决你的问题,请参考以下文章

在同一事务上读取和修改 - Bigtable

MongoDB in Go (golang) with mgo:如何使用逻辑运算符进行查询?

SQL --------------- 运算符 = 与 in

MongoDB/mongoose 查询和 $in 运算符

如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?

MongoDB:使用 $or 运算符按条件顺序查询时如何对文档进行排序?