Обходной путь - иногда объединять старые сообщения в вложения CouchDB .Они не будут видны при запросе по идентификатору документа.
Например, документ беседы:
{ "_id": "alice_bob"
, "_rev": "123-abcdef"
, "messages":
[ "alice: Hi, Bob!"
, "alice: Are you there?"
, "bob: Yes, what's up?"
, // ... etc.
, "bob: Thanks!"
]
}
Например, если длина беседы превышает 200 сообщений, разделите еев два массива:
- 150 самых старых сообщений (
"alice: Hi, Bob", and the next 149)
- 50 последних сообщений: (49 сообщений, до
"bob: Thanks!"
включительно)
Архивировать старые сообщения во вложении, возможно, с отметкой времени.
{ "_id": "alice_bob"
, "_rev": "123-abcdef"
, "_attachments":
{ "2011-09-19T17:29:17.293Z.json":
{ "content_type": "application/json"
, "data": /* 150 message JSON string goes here */
}
}
, "messages": [ /* latest 50 messages go here */ ]
}
При получении /db/alice_bob
вы не получите данные вложения, однако вы можетеизвлекать и даже удалять вложения непосредственно с этого URL.
/db/alice_bob/2011-09-19T17:29:17.293Z.json
Обратите внимание, что это в основном обходной путь. Преимущество заключается в том, что вам вообще не придется изменять код PHP (архивация сообщений может бытьфоновый процесс.) Но в долгосрочной перспективе методика Роберта более масштабируема и правильна.