Java Application / ArrayList与直接数据库查询相对

时间:2013-06-04 05:34:55

标签: java performance data-binding

简而言之,我想知道在Java中使用arraylists来保存包含大量数据的对象是多么有效。 arraylist可以在多长时间内成长,是否有任何问题使用arraylist在运行时保存2000多个客户详细信息(对象)?它是否以任何方式达到了性能?或者有没有更好的方法来设计需要快速访问数据的应用程序?

我正在为我的小型ERM应用程序开发一个新模块(客户主要跟踪器),该应用程序还处理公司的工资单详细信息。到目前为止,数据并不是那么庞大,现在有了这个模块,我期待数据库快速增长,我将不得不从数据库加载2000多个客户详细信息来执行不同的数据操作和更新。

我想要一些关于哪种方法会更好的建议,

  1. 查询客户数据库(100多列)并获取每个交易的数据。 (每个都有很多单独的查询)

  2. 将每行加载到对象中,将其保存在开头的arraylist中,并在需要时使用列表处理每一行。并在事务结束时保存对象(行)?

  3. 很抱歉,如果我问过一个转储问题,我真的是一个独立的开发者,从经验丰富的开发人员的角度来看,这听起来有点尴尬。

2 个答案:

答案 0 :(得分:2)

  1. 由于内部数组的ArrayList类型索引,任何int可以容纳不超过2个 31 -1个元素。

  2. 有一种名为in memory Db的方法,暗示您在内存中保存了大量数据,以便快速访问它。但这种方法也意味着:

  3. 一个。你有很多内存,可用于保存所有必要的数据(可能是几十千兆字节);

    湾db实现了紧凑的数据存储形式。这意味着db不会包含现成的java对象,而是包含字节数组数据的片段,您可以根据需要对其进行构造。

    所以,你需要估计,你想要加载到内存中的所有数据需要多少内存,并决定这种方法是否符合条件。

答案 1 :(得分:2)

取决于你有多少内存。查询每个事务的DB也不是一个好方法。更好的方法是根据你的内存大小将数据加载到内存中,一旦你完成它,删除它并触发下一组数据库查询。这样你就可以优化内存和数据库查询。