Java 用于读密集型应用程序的内存mongodb

Java 用于读密集型应用程序的内存mongodb,java,mongodb,tokumx,fongo,Java,Mongodb,Tokumx,Fongo,我有一个项目,其中的数据是只读的(根本没有写入),每个请求执行数千次读取,因此瓶颈是从数据库获取数据 我们在tmpfs(约12GB压缩数据库)上运行tokumx,但它仍然很慢,因为序列化和套接字通信需要大量时间,所以我想“缓存”一个重要的450万文档集合,这些文档可以通过一个简单的查询访问。最终,我们可能会将整个数据库迁移到一些内存中的数据存储中,因为这将使其速度更快 目前,我正在考虑使用一个在应用程序启动时加载的普通hashmap,但我不确定这是最好的方法:)其他选项,如Fongo,都是为单元

我有一个项目,其中的数据是只读的(根本没有写入),每个请求执行数千次读取,因此瓶颈是从数据库获取数据

我们在tmpfs(约12GB压缩数据库)上运行tokumx,但它仍然很慢,因为序列化和套接字通信需要大量时间,所以我想“缓存”一个重要的450万文档集合,这些文档可以通过一个简单的查询访问。最终,我们可能会将整个数据库迁移到一些内存中的数据存储中,因为这将使其速度更快

目前,我正在考虑使用一个在应用程序启动时加载的普通hashmap,但我不确定这是最好的方法:)其他选项,如Fongo,都是为单元测试而设计的,我不确定它们是否足够快,以适应这种情况


有什么建议可以用来解决这个问题吗?

我建议你去谷歌图书馆查番石榴


使用缓存,您可以在应用程序启动时加载数据,但如果数据不在缓存中,您可以创建一个函数来查询数据库。

您使用的是哪种查询?因为如果它是某种聚合/DW类型的查询,那么使用
columnstore
SQL Server
是一个不错的选择。它很可能比内存中的解决方案更快。