3

我的问题 -有没有办法同时读取和写入 MongoDB?还是让 MongoDB 阅读器变得贪婪?

我有一个使用 MongoDB 作为数据库的 Web 应用程序。在我的应用程序中,我有一个正在监听的串行事件。在此串行事件中,我创建了一个新线程来处理该事件。在线程中,解析来自 serial 的字符串并创建一个对象,然后将其写入 mongo 数据库(创建一个新文档并将其添加到特定集合中)。

但是,在发生此串行事件时,我还尝试从数据库中读取数据并更新图表以显示来自该集合的新传入数据。问题在于,由于 MongoDB 对编写器很贪心(请参阅http://docs.mongodb.org/manual/faq/concurrency/),因此似乎永远不允许发生读取。

我的系列事件大约每秒发生 2/3 次。我的阅读速度也大约每秒 2 次。数据需要保持写入数据库,以便所有客户端都可以访问它,而不仅仅是接收串行事件的客户端。

所以我的问题是,有没有办法让我的阅读我可以将 MongoDB 上的锁更改为读者贪婪吗?或者有没有一种方法可以在不影响速度的情况下同时读写?分片是否可以解决这个问题(我对分片了解不多,所以不确定这是否能解决我的问题)?

如果您想发布任何代码,请告诉我!任何意见或解决方法将不胜感激!

4

1 回答 1

0

你是说你的阅读根本没有通过吗?到底发生了什么?是的,每个数据库的 mongodb 写锁可能会导致问题,但通常比您讨论的事务级别要高得多。

您的读者需要多快才能看到新写入的对象?如果您可以处理一些延迟,您可以读取副本集辅助节点。并非没有它自己的问题(特别是处理复制滞后),它可以帮助处理只读查询。

我还考虑查看 mongostat 和 mongotop 的输出,以了解数据库锁定的时间量以及正在使用的集合。

于 2014-04-08T22:48:45.347 回答