缓存大型只读数据库建议

时间:2010-05-10 22:44:02

标签: database hibernate caching

我正在使用Spring,Hibernate和Mysql构建网站。 mysql数据库包含有关坐标和位置等的信息,它永远不会更新,只能查询。该数据库包含15000行坐标和48000行坐标连接。 每次处理请求时,应用程序都需要读取所有这些坐标,大约需要3-4秒。 我想设置一个缓存,以便快速访问数据。 我正在研究memcached,你能告诉我这是否是我最好的选择吗?

3 个答案:

答案 0 :(得分:3)

虽然Memcached有CacheProvider实现,但我的想法是:

  • Memcached不是正式的supported,上面的CacheProvider是第三方实现(虽然这可能不是一个问题)。
  • Memcached运行 out-process ,它是一个客户端服务器缓存,每个请求都有网络和编组开销
  • 像EhCache这样的缓存运行进程内(在同一个JVM中),因此访问速度更快(无论是使用内存存储还是磁盘存储),并且不会有任何网络通信集群节点之间的只读模式,即根本没有开销。
  • 我认为Ehcache会明显加快(参见下面的参考资料)。

换句话说,我会选择Ehcache。

参考文献:

答案 1 :(得分:2)

有趣的问题。我已经非常成功地在一个hibernate项目中使用了ehcache,但后来我不仅仅读取了数据。

Memcached最初并不是设计用于像hibernate这样的上下文,尽管我没有看到任何无法使用它的原因。在你的上下文中memcached唯一的缺点是你可能不需要时髦的分布式缓存能力,因为你可能在一台服务器上有足够的内存来处理你的负载,因此你不会从客户端服务器开销中获得任何东西。分布式缓存。

我认为你不会后悔你决定使用memcached。它被广泛用于缓存网站,我认为没有理由不能在你的上下文中使用它。

答案 2 :(得分:0)

您是否也看过Hibernate分片? Hibernate允许您将不同的行放在不同的数据库中,使查找更容易。它已经过去3年了。 This是一个很好的起点。