Java 如何处理MongoDB中的贪婪写锁定?

Java 如何处理MongoDB中的贪婪写锁定?,java,mongodb,locking,read-write,readwritelock,Java,Mongodb,Locking,Read Write,Readwritelock,我的问题-有没有一种方法可以同时读写MongoDB?还是让MongoDB阅读器变得贪婪? 我有一个web应用程序,它使用MongoDB作为数据库。在我的应用程序中,我有一个正在侦听的串行事件。在这个串行事件中,我创建了一个新线程来处理该事件。在线程中,解析serial中的字符串并创建一个对象,然后将其写入mongo数据库(创建一个新文档并将其添加到特定集合) 然而,当这个串行事件发生时,我还试图从数据库中读取数据并更新一个图表,以显示来自这个集合的新传入数据。问题在于,由于MongoDB是编写器

我的问题-有没有一种方法可以同时读写MongoDB?还是让MongoDB阅读器变得贪婪?

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

然而,当这个串行事件发生时,我还试图从数据库中读取数据并更新一个图表,以显示来自这个集合的新传入数据。问题在于,由于MongoDB是编写器贪婪的(请参阅),因此似乎永远不允许进行读取

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

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


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

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

读者需要多快才能看到新编写的对象?如果您能够处理一些延迟,那么可以针对副本集二级副本进行读取。并非没有它自己的问题(特别是处理复制延迟),它可以帮助处理只读查询


<>我也会考虑查看MangoStand和MangoTopl的输出,以了解数据库被锁定的时间和使用什么样的集合。我的系统每秒向数据库写入大约70次,我认为由于这个原因,我的读取永远无法通过。然而,这实际上是我程序中的另一个问题。它在我的JSP页面中——当我收到数据时,绘制成一个图形需要花费很长时间,因此它会减慢对更多数据方法的请求。这与MongoDB无关。