eff*_*iss 3 database-design mongodb
我第一次使用MongoDB,而且我不完全确定在我所处的情况下最佳实践是什么.这就是我想要做的:
我正在创建一个iPhone应用程序,人们可以创建一个事件,然后聊聊它(为了解决一些细节,让我们说).我有一个活动的集合.我不知道如何存储用户的聊天记录.我希望聊天与其相应的事件相关联,但我不确定如何做到这一点,因为MongoDB不是关系型的.
我应该为聊天和链接(我的意思是MongoDB链接)创建另一个集合/文档吗?
设计MongoDB架构时的一个关键问题是何时嵌入以及何时链接.嵌入是BSON文档中对象和数组的嵌套.链接是文档之间的引用.
这就是官方MongoDB架构设计文档的开始.
在设计文档数据库时,需要记住以下几点:
阅读MongoDB文档我已经指出并回答上述问题会给你最终答案.
我会在"事件"文档中嵌入聊天记录.
似乎聊天将始终在事件的上下文中被引用,因此将其嵌入内部以便可以轻松访问它是有意义的.
对性能的影响更为微妙.有些事情需要考虑:
如果您使用嵌入式方法,则在检索文档时,聊天内容已经包含在其中.因此,不需要后续查询来检索聊天.这使得访问聊天速度更快,但也可能使得检索事件文档的速度变慢(因为它们更大).但是,您可以排除不需要的字段(这使得性能与具有两个不同集合的方案的性能相当)
如果您需要在与事件不同的上下文中处理聊天,可能有一天需要使用单独的集合.然而,现在嵌入它们的决定似乎很合理,你总是可以编写一个简单的脚本来将它们移动到自己的集合中.
希望有所帮助,欢呼!
归档时间: |
|
查看次数: |
3182 次 |
最近记录: |