我有一个很大的xml文件(1Gb)。我需要在这个xml文件上做很多查询(例如使用xpath)。结果是xml的一小部分。 我希望查询尽可能快,但1Gb文件对于工作内存来说可能太大。对一个大的XML文件进行随机查询
的XML看起来是这样的:
<all>
<record>
<id>1</id>
... lots of fields. (Very different fields per record including (sometimes) subrecords
so mapping on a relational database would be hard).
</record>
<record>
<id>2</id>
... lots of fields.
</record>
.. lots and lots and lots of records
</all>
我需要随机访问,例如使用作为重点选择记录。 (Id是最重要的,但其他领域也可能用作关键)。我不提前知道这些查询,他们到达并且必须尽快执行,没有批处理执行,但是实时。 SAX看起来不太有希望,因为我不想为每个查询重读整个文件。但是DOM看起来也不太有希望,因为文件非常大,增加额外的结构开销几乎肯定意味着它不适合工作内存。
哪个java库/方法可以用来最好地处理这个问题?
_你需要做什么类型的查询?查询是按批次还是按要求?您可以提供哪些场景的其他特征? – 2010-07-07 17:06:13
+1用于编辑以清楚地解释问题 – 2010-07-08 15:49:22