我正在编写一些Java代码,旨在为一个围绕着拥有数十亿条目的数据库的项目构建一个小型框架。我希望保持高级别,并且从数据库中检索的数据应该很容易用于统计推断。我决定在这个项目中使用Map接口。
核心概念是将属性(“数据库中的列”)映射到值(“单元格”),以处理单个数据集(我指的是数据库中的列)时使代码可读:我使用枚举对象(命名为“Attribute”)表示属性类型,这意味着映射<Attribute,String>
,因为数据元素都是字符串(也不是很大,最多40个字符左右)。总共有15列,所以有15个枚举,而地图将只有这么多条目或更少。
因此,看起来我将有很多Map对象在某些时候浮动,但是相对较小的有效载荷(15-)。我的目标是不要由于实现内存开销而使内存爆炸,与实际有效载荷相比。(拉伸目标:使用相同的CPU使用量;])
我之前并不真正熟悉Java Collections的所有不同实现,当今天问题出现时,我查看了迄今为止我最喜欢的'HashMap',并且对宣布的内存开销感到不满意。我相信,除了标准实现之外,还有许多未随Java一起发货的实现。搜索我的情况没有带来太多结果,所以我问你:
您是否知道适用于我的用例(低条目计数,低价值大小,可枚举键等)的Map实现?
我希望我已经清楚地阐述了我的用例,并且渴望听取您的意见=)非常感谢!
拉伸答案目标,绝对是可选的,只有在您有时间和知识的情况下才适用:
- 处理属性(字符串)向量和推理数据的矩阵(计数/概率)的集合实现(矩阵:在这里我真的一无所知,迄今为止没有使用Java进行过严肃的数学工作)
- 用于统计推断的数学库,参见上文