Mongodb 可以从多个进程同时访问数据库或内存文件吗?
这是我的情况。我有一个为多个用户设计的服务器应用程序,因此在同一时间有很多读/写操作。而且反应要快 目前,我将所有数据缓存在内存中,因此数据读取/写入操作的速度与我们预期的一样快。为了防止数据锁定给我带来问题,我使用队列将用户的请求排成一行,让他们逐个进入处理程序进程 但很快我发现了一个问题。程序一次只能处理一个请求。即使程序基准计时器报告我它使用零毫秒来处理,但在一秒钟内处理请求仍然有限制,比如说现在我每秒处理100次 所以我在寻找一些更并发的方法,比如8个进程同时处理8个请求。那太好了。但是数据共享有一个更大的问题,我不想重新发明轮子。所以我检查了mongodb、redis和sqlite 这是我的作业,如果我错了,请纠正我,谢谢 mongodb和redis的速度确实很快,但它们使用了相同的机制,一次可以处理一个请求,这不是我想要的 因此sqlite更加紧密,多个进程可以同时打开同一个db文件并进行读取,痛苦在于它的写锁(我不知道sqlite3中的新锁工作得有多好) 我的问题是,对于这种情况,是否有可靠且良好的解决方案?如果我把写过程分开,会有帮助吗Mongodb 可以从多个进程同时访问数据库或内存文件吗?,mongodb,sqlite,concurrency,redis,database,Mongodb,Sqlite,Concurrency,Redis,Database,这是我的情况。我有一个为多个用户设计的服务器应用程序,因此在同一时间有很多读/写操作。而且反应要快 目前,我将所有数据缓存在内存中,因此数据读取/写入操作的速度与我们预期的一样快。为了防止数据锁定给我带来问题,我使用队列将用户的请求排成一行,让他们逐个进入处理程序进程 但很快我发现了一个问题。程序一次只能处理一个请求。即使程序基准计时器报告我它使用零毫秒来处理,但在一秒钟内处理请求仍然有限制,比如说现在我每秒处理100次 所以我在寻找一些更并发的方法,比如8个进程同时处理8个请求。那太好了。但是
感谢您的评论MongoDB的解决方案是切分。基本上允许您在这个问题上投入更多的处理器。更多处理器=更多写入线程 每个MongoDB实例只有一个写线程。分片提供了更多的实例,因此允许更多的写入 然而,这里有一个更大的问题。磁盘吞吐量 我已经让Mongo运行了超过1000次插入/秒,如果整个过程都在RAM中的话。但大多数人使用Mongo作为数据库,并提供实际的文件支持。因此,如果您使用Mongo进行非常繁重的写操作,您必须准备能够接受该吞吐量水平的磁盘
同样,解决磁盘吞吐量问题的方法是分片。构建更多的碎片,您将获得更少的写入/磁盘和基本上更少的锁定。并不是所有的服务器逻辑过程都需要相应的,我正在尝试优化非相应部分。对于sqlite,请参阅:感谢您纠正我有关monongdb解决方案的问题。我要把它挖得更深一点!谢谢!