我正在使用Spring/Hibernate/Tomcat和mysql数据库构建Route Planner Webapp,我有一个包含只读数据的数据库,例如总线停止坐标,从不更新的总线时间.我正在尝试让应用程序运行得更快,每次运行应用程序时,它都会对数据库执行大约1000次读取以计算路径.
我已经设置了一个Ehcache,它大大提高了从数据库时间的读取.我现在正在设置terracotta + Ehcache分布式缓存以与多个Tomcat JVM共享缓存.这看起来有点复杂.我已经尝试过memcached,但它的表现并不像ehcache那么快.
我想知道MongoDb或Redis是否更适合.我没有使用nosql的经验,但如果有人有任何想法,我将不胜感激.我需要的是快速访问只读数据库.
我已经设置了一个Ehcache,它大大提高了从数据库时间的读取.我现在正在设置terracotta + Ehcache分布式缓存以与多个Tomcat JVM共享缓存.这看起来有点复杂.
由于您的数据是只读的,我很想说您可以在没有分布式和复制缓存的情况下生存,除非初始加载缓存的开销很关键(在这种情况下,配置Ehcache并不困难) ,你只需要知道你去哪里).所以,如果你认为你真的需要这个,可能会要求更具体的指导.
我想知道MongoDb或Redis是否更适合.我没有使用nosql的经验,但如果有人有任何想法,我将不胜感激.我需要的是快速访问只读数据库.
首先,如果你采用NoSQL方式,请忘记Hibernate(虽然可能不是问题).其次,我真的很想知道更复杂的事情:(不)配置Ehcache进行分发(我仍然不相信你需要它)或改变你的方法来完全不同(VAST大多数企业业务不需要) .第三,没有什么比从同一JVM中的内存中读取数据更快.
总结一下:我会考虑不使用分布式缓存(并告别配置问题)或2.配置Ehcache进行分布式缓存(我认为这比改变整个方法要简单).
如果您想尝试路由,您甚至可以查看Neo4j,请参阅使用A*算法的博客