我正在开发一个Minecraft网络,它有几个服务器操纵'用户对象',这只是一个Mongo文档。修改用户对象后,需要立即将其写入数据库,否则可能会在其他服务器(具有较旧版本的用户对象)中覆盖,但有时需要写入数百个对象。时间..(几秒钟内)。我的问题是:如何在不真正使数据库过载的情况下轻松地将对象写入MongoDB数据库。
我一直在想一个想法,但我不知道它是否相关: - 在另一个线程中创建某种队列,每次需要将数据对象保存到队列中的数据库中,然后在“队列线程”中,对象将以某种间隔逐个保存。
提前致谢
btw我使用Morphia作为Java的框架
答案 0 :(得分:2)
“数秒钟内的数百个物体”听起来并不那么多。你现在能做多少?
对于写入操作的速度最重要的设置是WriteConcern。您目前使用的是什么,这是您项目的正确设置(数据安全性与速度)?
如果您需要一次执行许多写操作,您可以通过批量操作加快速度。它们已添加到MongoDB 2.6中,Morphia也支持它们 - 请参阅此unit test。
我对队列非常谨慎:
您可能希望阅读以下博文,了解为什么您可能希望避免这类操作的队列:http://widgetsandshit.com/teddziuba/2011/02/the-case-against-queues.html