gpt4 book ai didi

java - 降低数据集的粒度

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:49 26 4
gpt4 key购买 nike

我有一个内存缓存,它通过一定的聚合级别存储一组信息 - 在下面的学生示例中,假设我按年份、主题、教师存储它:

#    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 中最好地做到这一点?理论上,我可以从此缓存中拉回数万个对象,因此能够快速“汇总”这些集合可能变得非常重要。

我最初(也许是天真的)的想法是按照以下思路做一些事情;

直到我用完记录列表:

  • 我来的每一个“独特”的记录across 被添加为 a 的键 HashMap 。
  • 如果我遇到一条记录对于这个新级别具有相同的数据的聚合,将其数量添加到现有的。

据我所知,这是一个相当普遍的问题,并且有更好的方法来解决这个问题。因此,我欢迎任何关于我是否指向正确方向的反馈。

恐怕“获取新缓存”不是一个选项 :)

-戴夫。

最佳答案

您的“初步想法”不是一个坏方法。改进它的唯一方法是为您聚合的字段(年份和主题)建立索引。 (这基本上就是 dbms 在定义索引时所做的事情。)然后您的算法可以重铸为遍历所有索引值;您不必检查每条记录的结果散列。

当然,您必须在填充缓存时构建索引并在数据修改时维护​​它。

关于java - 降低数据集的粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6267545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com