4
我有一个内存中缓存它通过聚集一定程度存储一组信息 - 在学生下面的例子让我们说我把它存储由年,主题,老师:降低数据的粒度集
# Students Year Subject Teacher
1 30 7 Math Mrs Smith
2 28 7 Math Mr Cork
3 20 8 Math Mrs Smith
4 20 8 English Mr White
5 18 8 English Mr Book
6 10 12 Math Mrs Jones
不幸的是,我的缓存没有GROUP BY或类似的功能 - 所以当我想要在更高级别的聚合中查看事物时,我将不得不自己“滚动”数据。例如,如果我按年汇总的学生,受上述数据看起来像这样:
# Students Year Subject
1 58 7 Math
2 20 8 Math
3 38 8 English
4 10 12 Math
我的问题是这样 - 我最好怎么会在Java中做到这一点?从理论上讲,我可以从这个缓存中取回数以万计的对象,因此能够快速“收集”这些集合可能变得非常重要。
我最初的(也许是天真的)想法是按照以下方式做一些事情;
直到我用尽的记录列表:
- 每一个“独一无二”的记录,我来 跨越添加为关键, HashMap中。
- 如果我遇到一个记录是 有聚集的这个新的水平 相同的数据,其添加量 现有的一个。
现在我知道这是一个相当普遍的问题,有很多更好的方法来做到这一点。所以我很欢迎任何关于我是否指向正确的方向的反馈。
“获取新的缓存”我怕:)
戴夫不是一个选项。
我认为这是数据库发明的主要原因......所以关于这个主题有大量的文献。我认为你需要一个索引(或hashmap),用于你想在缓存上执行的每个'查询'。 – sje397 2011-06-07 15:40:01