【发布时间】:2011-10-17 13:52:23
【问题描述】:
我正在尝试构建一个(简单的)twitter-clone,它使用 CouchDB 作为数据库后端。 由于它减少了功能集,我几乎完成了编码,但还有一件事我无法用 CouchDB 解决 - 每个用户的时间线。
与 twitter 一样,每个用户的时间线应该按时间顺序显示我关注的所有人的推文。使用 SQL,这是一个非常简单的 Select-Statement,但我不知道如何使用 CouchDBs Map/Reduce 重现它。
这是我将与 RDBMS 一起使用的 SQL 语句:
SELECT * FROM tweets WHERE user_id IN [1,5,20,33,...] ORDER BY created_at DESC;
CouchDB 架构详细信息
用户模式:
{
_id:xxxxxxx,
_rev:yyyyyy,
"type":"user",
"user_id":1,
"username":"john",
...
}
推文模式:
{
"_id":"xxxx",
"_rev":"yyyy",
"type":"tweet",
"text":"Sample Text",
"user_id":1,
...
"created_at":"2011-10-17 10:21:36 +000"
}
使用view collations,查询 CouchDB 以获取“所有 user_id = 1 按时间顺序排列的推文”列表非常简单。
但是如何检索“所有属于 ID 为 1、2、3、...的用户的推文,按时间顺序排列”的列表?我的应用程序是否需要其他架构?
【问题讨论】:
标签: join twitter couchdb clone timeline