【发布时间】:2015-07-10 06:44:44
【问题描述】:
我们计划在应用程序端缓存数据库表(以避免数据库调用)。我们的缓存是键值对实现。如果我使用主键(column1)作为键,所有其他数据作为值,我们如何对缓存执行以下查询?
select * from table where column1=?
从表中选择 * 列 2=?和column3 =?
从表中选择 * column4=?和 第5列=?和 column6=?
一个最简单的选择是构建 3 个缓存,如下所示。
(column1) --> 数据
(column2+column3) --> 数据
(column4+column5) --> 数据
还有其他更好的选择吗?
要点:
- 表包含数百万条记录
- 我们正在使用 Java ConcurrentHashMap 进行缓存实现。
【问题讨论】:
-
与其重新发明查询系统,您是否考虑过像 H2 这样的内存数据库?
-
您是否考虑过在
Hibernate中使用标准缓存? docs.jboss.org/hibernate/orm/3.3/reference/en/html/…它将解决您的问题并避免缓存实现问题。
标签: java algorithm caching data-structures