Я пытаюсь создать (простой) твиттер-клон, который использует CouchDB как Database-Backend.Из-за его ограниченного набора функций я почти закончил с кодированием, но с CouchDB осталась одна вещь, которую я не могу решить - временная шкала для каждого пользователя.
Как и в твиттере, временная шкала для каждого пользователя должна отображатьтвиты всех людей, за которыми я следую, в хронологическом порядке.С SQL это довольно простой оператор Select, но я не знаю, как воспроизвести его с помощью CouchDBs Map / Reduce.
Вот SQL-оператор, который я бы использовал с RDBMS:
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"
}
С просмотр сопоставлений довольно просто запросить у CouchDB список «всех твитов с user_id = 1 в хронологическом порядке».
Но как мне получить список «всех твитов, принадлежащих пользователям с идентификатором 1?», 2,3, ... упорядочено в хронологическом порядке "?Нужна ли другая схема для моего приложения?