Java - procesar ficheros

 
Vista:
sin imagen de perfil

procesar ficheros

Publicado por Alba (3 intervenciones) el 13/03/2015 11:09:16
Hola, necesito ayuda.
tengo un programa que procesa una serie de datos. En un fichero vcf tengo unos datos de manera que si el dato a procesar esta en el fichero vcf no lo proceso.
Hasta ahora estoy cargando todo el fichero en memoria, pero este fichero puede tener 3Gb de información y no es muy optimo hacerlo de esta manera. Alguien sabe si se puede hacer de otra manera?
Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 6
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

procesar ficheros

Publicado por Manuel (4 intervenciones) el 13/03/2015 12:36:43
No estoy seguro si te entiendo... lo que yo entiendo:

-tienes un archivo con n contactos de personas/instituciones (normalmente cuando se habla de archivos VCF son archivos con datos de contacto de gente en formato vCard)

-normalmente los archivos VCF realmente son archivos de texto sin más

-el archivo es grande

-tienes un programa que procesa datos vCard, si ya están en el fichero anterior, no hace nada

-actualmente para filtrar revisas todas las veces si el nuevo dato está o no en el archivo VCF

-si hasta aquí voy correctamente significa:

*por cada nuevo dato a procesar, si este está en el fichero VCF, de promedio tienes que procesar medio fichero (hay igual número de posibilidades de que esté al principio que al final)

*cuando no está, pues has leído una vez entera el archivo VCF

Si hasta aquí mi análisis de tus palabras es el correcto, pues sí, claramente no es que ya no sea optimo que no lo es, es que los fiches VCF ni siquiera están pensados para esto, su finalidad es para pasar contactos de un servicio o aplicación a otro, no para leerlo mi veces.

Que haría yo: pues recurrir a un sistema gestor de bases de datos adecuado y por cada nuevo dato, solo haces una consulta a la base de datos y listo. Por ejemplo, seguramente dentro del VCF aun están los datos en modo texto vCard, pues puedes pasarlos a xCard ya en XML (hay script que lo harán por ti)... después subes a una BD XML (tipo BaseX) y por cada nuevo registro, solo tienes que hacer una consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

procesar ficheros

Publicado por Alba (3 intervenciones) el 13/03/2015 12:45:06
No, no son datos de contactos.
El fichero le proceso una vez, tengo un objeto java que tiene como atributo un hashMap donde voy guardando cada uno de los datos del fichero. Y luego voy comprobando si el dato esta en ese hashMap y si esta no lo proceso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

procesar ficheros

Publicado por Tom (1831 intervenciones) el 14/03/2015 00:11:16
¿ Genómica ?
Pues no hay muchas posibilidades, si no te cabe en memoria está claro que debes mantener la info en el disco. Deberías, por cada dato a procesar, recorrer todo tu archivo para ver si está contenido o no.
Dependiendo de la información a buscar, puedes acelerar ese proceso manteniendo índices en memoria (lo más cortos posibles).
Podrías, por ejemplo, leer secuencialmente el fichero y solamente guardar en memoria una lista que contenga cada identificador de cromosoma y la posición en la que comienzan sus datos dentro del fichero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

procesar ficheros

Publicado por Alba (3 intervenciones) el 14/03/2015 12:07:28
Exacto, ok probare a ver asi. Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar