2012-01-01 10 views
6

Estoy preparando un analizador de RSS que procesará una fuente RSS, la filtrará y luego descargará los elementos coincidentes. Supongamos que los archivos que se están descargando son archivos torrent legales.¿Debo usar un archivo de texto o una base de datos?

Ahora necesito mantener un registro de los archivos que ya he descargado, por lo que no se vuelven a hacer.

Ya lo tienes trabajar con SQLite (crear base de datos si no existe, fila de inserción, si una instrucción SELECT devuelve nada), pero el archivo JAR resultante es de 2,5 MB + (debido a las librerías SQLite).

Estoy pensando que si utilizo un archivo de texto, podría reducir el archivo jar a unos cientos de kilobytes.

que podía mantener una lista de los nombres de los archivos descargados - uno por línea - y leer todo el archivo en la memoria, buscar si existe un archivo, etc.

Las pocas preguntas que se me ocurren saber:

  • Di si 10 archivos se descargan al día, sería el fin del método archivo de texto tomando demasiados recursos?
  • general cuál es más rápido

De todos modos, ¿qué piensan ustedes? Podría usar algunos consejos aquí, ya que todavía soy nuevo en la programación y hago esto como una cosa de hobby :)

+0

+1 para la calificación de que los torrents son legales a pesar de no tener relevancia para el programa real. Eso me hizo sonrreir. – Taymon

Respuesta

4

Si necesita realizar un seguimiento solo de algunas informaciones (como el nombre del archivo), puede estar seguro usa un archivo de texto simple

Usando un BufferedReader para leer debe lograr un buen rendimiento.

+0

Si se puede reducir a pares de clave y valor, 'java.util.Properties' hará el trabajo con facilidad. – alf

2

Teóricamente DB (ya sea relacional o NoSQL es mejor. Sin embargo, si el tamaño de distribución es fundamental para que usted está usando el sistema de archivos puede ser preferible.

El único problema aquí es el rendimiento de acceso a datos (ya sea para escribir o para leer). Probablemente piense en el siguiente enfoque. No use un solo archivo. Utilice un directorio que contenga varios archivos en su lugar. El nombre del archivo contendrá una clave (o claves) que le permitirá acceder a datos específicos como la clave del mapa. En este caso, podrá acceder a los datos de manera relativamente fácil y rápida.

Probablemente eche un vistazo a XStream. Tienen la implementación del Mapa que se implementa como se describe anteriormente: tiendas entr en el disco, cada entrada en un archivo separado.

+0

¿Qué problemas ocasionará el acceso a los datos? Solo leeré o escribiré en un momento determinado, no en ambos. - Disculpe la respuesta tardía por cierto – lelouch

Cuestiones relacionadas