Pregunta

Estoy trabajando en un proyecto de Java que permitirá a los usuarios analizar varios archivos con potencialmente miles de líneas.La información analizada se almacenará en diferentes objetos, que luego se agregarán a una colección.

Dado que la GUI no requerirá cargar TODOS estos objetos a la vez y mantenerlos en la memoria, estoy buscando una forma eficiente de cargar/descargar datos de archivos, de modo que los datos solo se carguen en la colección cuando un usuario lo solicite. .

Sólo estoy evaluando opciones en este momento.También pensé en el caso en el que, después de cargar un subconjunto de datos en la colección y presentarlos en la GUI, la mejor manera de recargar los datos observados previamente.¿Volver a ejecutar el analizador/rellenar la colección/rellenar la GUI?¿O probablemente encontrar una manera de mantener la colección en la memoria o serializar/deserializar la colección misma?

Sé que cargar/descargar subconjuntos de datos puede resultar complicado si se realiza algún tipo de filtrado de datos.Digamos que filtro por ID, por lo que mi nuevo subconjunto contendrá datos de dos subconjuntos analizados anteriormente.Esto no sería un problema si mantengo una copia maestra de todos los datos en la memoria.

He leído que las colecciones de Google son buenas y eficientes cuando manejan grandes cantidades de datos y ofrecen métodos que simplifican muchas cosas, por lo que esto podría ofrecer una alternativa que me permita mantener la colección en la memoria.Esto es sólo una charla general.La cuestión de qué colección utilizar es un asunto aparte y complejo.

¿Sabes cuál es la recomendación general sobre este tipo de tareas?Me gustaría saber qué ha hecho con escenarios similares.

Puedo proporcionar más detalles si es necesario.

¿Fue útil?

Solución

Puede incrustar una base de datos en la aplicación, como HSQLDB.De esa manera, analiza los archivos la primera vez y luego usa SQL para realizar consultas simples y complejas.

HSQLDB (Base de datos HyperSQL) es el motor principal de la base de datos relacional SQL escrito en Java.Tiene un controlador JDBC y admite ANSI-92 SQL (Formato de árbol BNF) casi completo más completo. Ofrece un pequeño motor de base de datos rápido que ofrece tablas en memoria y basadas en disco y admite modos integrados y de servidor.Además, incluye herramientas como una herramienta SQL de línea de comandos y herramientas de consulta GUI.

Otros consejos

Si usted tiene un montón de datos, una gran cantidad de archivos, y tiene poco de memoria, que puede hacer una exploración inicial del archivo para indexarlo. Si el archivo se divide en los registros por los saltos de línea, y usted sabe cómo leer el registro, usted podría indexar los registros de lugares de bytes. Más tarde, si desea leer un cierto conjunto de Indices de, que haría una búsqueda rápida para encontrar qué byte rangos que necesita para leer, y leer los de InputStream del Archivo. Cuando usted no necesita los elementos más, que serán GCed. Usted nunca va a llevar más objetos de lo que necesita en el montón.

Esta sería una solución simple. Estoy seguro de que puede encontrar una biblioteca para ofrecerle más funciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top