Por lo tanto, para algunos trabajos de investigación, necesito analizar una tonelada de datos de movimientos en bruto (actualmente casi un registro de datos, y en crecimiento) y escupir información cuantitativa y trazados.Cargando y analizando cantidades masivas de datos
Escribí la mayoría utilizando Groovy (con JFreeChart para crear gráficos) y cuando el rendimiento se convirtió en un problema, reescribí las partes principales en Java.
El problema es que el análisis y el trazado dura aproximadamente un minuto, mientras que la carga de todos los datos lleva unos 5-10 minutos. Como se puede imaginar, esto se vuelve realmente molesto cuando quiero hacer pequeños cambios en los gráficos y ver la salida.
Tengo un par de ideas sobre la fijación del mismo:
cargar todos los datos en una base de datos SQLite.
Beneficios: Será rápido. Podré ejecutar SQL para obtener datos agregados si es necesario.Contras: Tengo que escribir todo ese código. Además, para algunas de las parcelas, necesito acceso a cada punto de datos, por lo que cargar algunos cientos de miles de archivos, algunas partes pueden ser lentas.
Java RMI para devolver el objeto. Todos los datos se cargan en un objeto raíz, que, cuando se serializa, es de aproximadamente 200 megas. No estoy seguro de cuánto tiempo llevaría transferir un objeto de 200 megas a través de RMI. (mismo cliente).
Tendría que ejecutar el servidor y cargar todos los datos, pero eso no es gran cosa.
Major Pro: esto debe tomar la menor cantidad de tiempo para escribir
ejecutar un servidor que carga los datos y ejecuta un guión maravilloso de mando dentro de la máquina virtual servidor. En general, esto parece la mejor idea (para el tiempo de implementación vs rendimiento, así como otros beneficios a largo plazo)
Lo que me gustaría saber es que otras personas abordado este problema?
Post-análisis (29/03/2011): Un par de meses después de escribir esta pregunta, terminé teniendo que aprender R para ejecutar algunas estadísticas. Usando R era mucho, mucho más fácil y más rápido para el análisis de datos y la agregación de lo que estaba haciendo.
Eventualmente, terminé usando Java para ejecutar la agregación preliminar, y luego ejecuté todo lo demás en R. R también era mucho más fácil hacer gráficos hermosos que usar JFreeChart.
Sé que las bases de datos son, en general, la mejor apuesta y las más escalables y las que no. Si estuviera escribiendo una aplicación real, sería una pregunta. Creo que tienes razón, si el # 2 se puede lograr con un golpe de rendimiento mínimo (ya que se puede implementar en aproximadamente 5 líneas de código), esa puede ser mi mejor opción. –
@Rev - no es "el más escalable". Las tecnologías como Hadoop son más escalables. –