【发布时间】:2010-09-24 17:27:48
【问题描述】:
我有一个包含 int[] 成员的类。数组变得非常大,大小约为 56M。(数组可扩展,实现类似于 arraylist)。现在我想将数组部分存储在数据库中,以提高内存。我有 oracle 数据库供我使用。我还想缓存更多使用的索引。我想知道是否存在用于此目的的 api。否则请提出实施方法。
【问题讨论】:
标签: java database arrays memory int
我有一个包含 int[] 成员的类。数组变得非常大,大小约为 56M。(数组可扩展,实现类似于 arraylist)。现在我想将数组部分存储在数据库中,以提高内存。我有 oracle 数据库供我使用。我还想缓存更多使用的索引。我想知道是否存在用于此目的的 api。否则请提出实施方法。
【问题讨论】:
标签: java database arrays memory int
为什么不序列化数组对象。 每个数组大小为 2m ,该类被序列化并存储在一个文件中。最后反序列化这些类并合并数组。
【讨论】:
我会看BerkeleyDB 而不是关系数据库。这将负责写入磁盘和缓存。
不确定将ints 直接存储为值还是条带更有意义——我先从第一个开始,然后在使条带复杂化之前看看性能如何。
【讨论】:
56M 不是很大,除非您正在为移动设备进行开发。 1 Gb 在服务器/工作站中的成本约为 100 美元,因此 56MB 的价值约为 6 美元。如果您有很多 GB,则可能值得这样做。
如果您想要一个可扩展的 int[],我建议您查看 TIntArrayList,它是一个使用 int[] 的类似 ArrayList 的集合。
顺便说一句:RDBMS 数据使用的内存将远远超过您打算保存的内存,并且可能会慢 10 倍或更慢,具体取决于您对数组的操作。
【讨论】: