![](/img/trans.png)
[英]In mongodb is there a performance reason to separate collections into more than on database?
[英]MongoDB: separate collections for read and write for high performance
我使用mongodb,并希望设计数据库以满足较高的可伸缩性要求。 目前,假设集合A被大量用于读写操作。 写入将暗示一个锁(现在为数据库锁,希望在将来的发行版中为集合锁),从而锁定读取操作。
我的想法是将A复制到A和A-tmp,这两个都有相同的架构。 A保留所有数据,而A-tmp最初为空。 新条目将插入A-tmp。 使用来自A-tmp的cronjob条目定期移至A。在写入后应用程序尝试查找数据时,将查找A,如果随后未找到数据,则查找A-tmp。 因此,当在A中找不到条目时,A-tmp主要用于写入和偶尔读取。A主要用于读取并定期从A-tmp写入。
这是一个合理的解决方案吗? 还是这几乎没有优势? 还是在我转向复制和其他硬件分片时为我处理?
写入将暗示一个锁(现在为数据库锁,希望在将来的发行版中为集合锁),从而锁定读取操作。
它不仅会自动锁定读取,锁定是作家贪婪,但有一些规则可以让读取等退却。
我将事实上粘贴此链接: http : //docs.mongodb.org/manual/faq/concurrency/
使用cronjob,A-tmp中的条目会定期移至A。
听起来很简单。
还是这几乎没有优势?
现在很好地注意到您的标题中提到了“ db”,但您的问题中提到了A和A-tmp都是集合。
我将以收藏为基础。
不,将它们分开不会有太大好处,除非有一个合理的逻辑理由说明原因,即应用程序/方案设计。
还是在我转向复制和其他硬件分片时为我处理?
这样的事情不会为您处理,复制会将您的数据库复制到集合中的其他成员,而分片会将您的数据库分布在多台计算机上。
他们与此完全不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.