我有一个由 PHP 编写的基于 Web 的即时通讯应用程序。最近我从mysql迁移到couchdb,我认为这通常是一个好主意,到目前为止它工作得很好。我不需要 View 等。基本上我按 ID 获取文档。
但是我对性能有些怀疑。两个用户之间的对话存储在一个文档中。例如在 A 和 B 之间我有一个文档,在 C 和 B 之间我有另一个文档等。
我从不删除日志,当这两个用户之间发起新对话时,我使用 json_decode 解码存储的文档,打印出两个用户最近的对话历史记录。当他们中的一个人写新东西时,我在数组末尾添加新的聊天行(我从文档中获得),将数组重新编码为 json,最后更新文档。
我说的对吗?在 no-sql 数据库中存储如此大的数组的最佳做法是什么?
最佳答案
我会以不同的方式建模;对所说的每件事都使用一个文件。 {"from":"foo","to":"bar","text":"嘿那里"}。因此,您只需要制作新文档,而且每个文档都非常小。
添加一个时间戳,然后使用基于该时间戳的 View 来重建对话。
您需要使用服务器的时间来确保正确排序,因此我建议您通过更新处理程序 (http://wiki.apache.org/couchdb/Document_Update_Handlers) 进行更新并在此处添加时间戳。
关于json - couchdb - 信使应用程序中的 json 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472274/