Tengo un archivo xml grande (1 Gb). Necesito hacer muchas consultas en este archivo xml (usando xpath por ejemplo). Los resultados son pequeñas partes del xml. Quiero que las consultas sean lo más rápidas posible, pero el archivo de 1 Gb es probablemente demasiado grande para la memoria de trabajo.Consultas aleatorias en un archivo xml grande
El XML es como la siguiente:
<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>
Necesito acceso aleatorio, la selección de registros usando, por ejemplo, como una tecla. (Id es más importante, pero también se pueden usar otros campos como clave). No sé las consultas por adelantado, llegan y deben ejecutarse lo antes posible, sin ejecución de lotes, pero en tiempo real. SAX no parece muy prometedor porque no quiero volver a leer el archivo completo para cada consulta. Pero DOM no parece muy prometedor tampoco, porque el archivo es muy grande y la adición de una sobrecarga de estructura adicional seguramente significará que no va a caber en la memoria de trabajo.
¿Qué biblioteca/enfoque de Java podría usar mejor para manejar este problema?
_¿Qué tipo de consultas necesitas hacer? ¿Las consultas se procesarán por lotes o por solicitud? ¿Qué otras características de su escenario puede proporcionar? –
+1 para editar para explicar el problema claramente –