代码之家  ›  专栏  ›  技术社区  ›  Srini Kandula

缓存java应用程序的只读数据

  •  4
  • Srini Kandula  · 技术社区  · 15 年前

    我使用第三方API从数据库加载数据。加载记录后,我将加载数据,必须加载加载数据的关联,然后加载在顶层找到的关联的关联。就像是载入家谱。

    1. 如果有可能微调业务逻辑,我不会在这里问这个问题。

    按需缓存数据是一种选择,但我想看看是否能做得更好。

    如果你知道更好的主意,建议我。谢谢你/

    4 回复  |  直到 15 年前
        1
  •  6
  •   Stephen C    15 年前

    如果你知道更好的主意,建议我。

    在执行此操作之前,请分析应用程序以确保它是 真正地

    一旦修复了导致记录加载缓慢的根本原因,缓存只读记录仍然是一个好主意,但您可能不需要预加载缓存。相反,只需按需加载记录。

        2
  •  2
  •   drekka    15 年前

    听起来你是在重新发明轮子。我想用hibernate。除了简化访问数据库的代码外,hibernate还内置了缓存和延迟加载数据,因此它只根据您的请求创建对象。因此,你上面描述的很多东西已经准备好了,你可以集中精力整理你的业务逻辑。我怀疑,一旦您解决了业务逻辑性能问题,就不需要像复杂的缓存系统和hibernate默认值那样做了。

        3
  •  1
  •   andref    15 年前

    正如maximdim在评论中所说,预先加载整个过程将需要很多时间。如果你的系统不是很奇怪,用户就不会一次需要所有的数据。而是按需缓存。我还建议使用已建立的缓存解决方案,例如 EHCache

    在过去的一个项目中,我们必须查询一个运行在非现场大型机上的非常繁忙、非常迟缓的服务,以便组装其中一个实体。我们应用程序的平均响应时间主要由此查询控制。因为我们检索到的数据大多是使用EHCache的只读缓存,所以解决了我们的问题。

        4
  •  0
  •   Kevin Day    15 年前

    jdbm有一个很好的、持久的映射实现( http://code.google.com/p/jdbm2/ )-这可能有助于您进行本地缓存-这肯定比将pojo序列化为XML并将其写回SQL数据库快得多。

    如果您的数据是真正的只读的,那么我认为最好的解决方案是将源数据库视为一个输入队列,为您的应用程序数据库提供数据。创建一个后台进程(heck,最好是一个服务),让它监视源数据库并保持应用程序数据库同步。