- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个内存缓存,它通过一定的聚合级别存储一组信息 - 在下面的学生示例中,假设我按年份、主题、教师存储它:
# 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 中最好地做到这一点?理论上,我可以从此缓存中拉回数万个对象,因此能够快速“汇总”这些集合可能变得非常重要。
我最初(也许是天真的)的想法是按照以下思路做一些事情;
直到我用完记录列表:
据我所知,这是一个相当普遍的问题,并且有更好的方法来解决这个问题。因此,我欢迎任何关于我是否指向正确方向的反馈。
恐怕“获取新缓存”不是一个选项 :)
-戴夫。
最佳答案
您的“初步想法”不是一个坏方法。改进它的唯一方法是为您聚合的字段(年份和主题)建立索引。 (这基本上就是 dbms 在定义索引时所做的事情。)然后您的算法可以重铸为遍历所有索引值;您不必检查每条记录的结果散列。
当然,您必须在填充缓存时构建索引并在数据修改时维护它。
关于java - 降低数据集的粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6267545/
我有 2 个事实表,每个表都有一个度量组,生产和生产订单。生产具有较低粒度的生产信息(在组件级别)生产订单具有较高级别的信息(具有抬头数量等的订单级别)。 我在 productionorderid 的
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我第一次尝试了解 Akka/Actors,并且对每个 Actor 职责的粒度有点困惑。 在我的应用程序中,有可以使用 WidgetRegistrar 注册/取消注册的 Widget。要向 Regist
我们一直在使用 MVP 模式和 Winforms,并取得了相当大的成功。然而,关于 MVP 总是弹出一个问题: 对于演示者来说,什么是好的粒度? 我的意思是:对于 Winforms,细粒度通常适用于用
我通常使用 git add -p 添加更改,而且很多时候有几个代码块的大块头,由空行分隔。 但是,git 不会进一步拆分 大块头,我不得不求助于手动编辑。 如何增加 hunk 的粒度,以便每个代码块都
例如,我看到 dumps.wikimedia.org/other/pagecounts-raw/,但那里没有特定国家/地区的数据... 最佳答案 据我所知,没有。出于明显的隐私原因,发布的页面查看统计
JavaScript 的源映射似乎通常不比 token 粒度更精细。 例如,identity-map uses token granularity . 我知道我看过其他例子,但不记得在哪里。 为什么我
我有这些目录: ./Tools ./ook/Tools. 我在 setup.cfg 中的 py.test 的 norecursedirs 选项中添加了 Tools。正如预期的那样,当 py.test
我正在使用这个 Accelerometer graph来自 Apple 并尝试转换他们的 G-force 代码以计算 +/- 128。 下图显示标签中的 x、y、z 值与图表上的输出不匹配:(请注意,
此问题围绕 Android 应用程序的架构展开。 在使用 LifeCycle 组件 ViewModel 时,最好是每个 fragment 一个 ViewModel 还是订阅 fragment 的父 A
我是一名优秀的程序员,十分优秀!