Archivo JSON VS SQLite android




performance csv (4)

Desarrollaré una aplicación de Android con muchos datos (archivos json con algunas filas y CSV para datos gráficos con muchas filas), estos datos cambian cada 5 minutos y reemplazan todos los datos anteriores (o en su mayoría).

¿Cuáles son los mejores enfoques para diseñar esto? Tengo 2 opciones:

  • Guarde todos los datos en una base de datos sqlite y sincronícelos con un IntentService.

  • guarde los datos en archivos json y csv y reemplácelos cada 5 minutos.

¿Qué enfoque tendrá el mejor rendimiento? Esto considerando el tiempo para analizar los archivos, ordenar los datos, el tiempo de descarga y la consistencia de los datos.

¿Alguna otra idea?

PD: Necesito un sistema de caché también, en caso de que si no tengo internet y necesito los datos almacenados previamente


El propósito de JSON y SQLite es completamente diferente entre sí.

  • JSON = se utiliza enviar y recibir datos entre el servidor y el cliente.
  • SQLite = se utiliza para almacenar datos.

Idealmente, esto debería depender de si necesita los datos anteriores, para tal vez compararlos con los datos actuales y así sucesivamente. Como regla general, uso SQLite cuando necesita que los datos se almacenen y recuperen en una etapa posterior. En caso de que los datos solo se muestren, prefiero guardarlos en la memoria del programa. Tenga en cuenta que esto no implica la operación de archivos.


Ventajas de SQLite:

  • Los cambios son ACID
  • Puede realizar solicitudes complejas más rápido (por ejemplo, "dame solo los campos A, B de los elementos con (C / D)> E")
  • Apostaría más compacto para big data (los enteros se almacenan como enteros en lugar de una cadena de dígitos individuales)
  • Solo un archivo
  • Puede combinar datos antiguos con datos nuevos fácilmente
  • Puede actualizar los datos actuales, incluso mientras lo usa
  • La concurrencia puede ser manejada

Ventajas para JSON / CSV:

  • Más fácil de depurar (texto plano)
  • Más rápido para hacer una actualización completa (copiar el nuevo archivo + eliminar el anterior)

Para la pregunta original, todo el borrado / reemplazo de los datos hace que JSON / CSV sea el ganador.

Sin embargo, si la aplicación fuera a recuperar datos parciales cada 10 s y fusionarlos / actualizarlos con el anterior, SQLite sería una mejor opción.


Sqlite se utiliza principalmente cuando desea que los datos se guarden y utilicen en el futuro. En su caso, los datos cambian cada 5 minutes por lo que es mejor tener JSON ya que cada vez que se realice el store y la retrieve Database connection la Database connection después de 5 minutes , tomará algún tiempo.

ACTUALIZAR:

También tuve la misma aplicación en la que los datos cambiaban cada vez. En ese caso, utilicé Map<K, V> y ArrayList para mantener los valores, porque a medida que los datos cambian cada vez, creo que no es posible almacenar los datos en Sqlite cada vez. Se necesita mucho tiempo para realizar el almacenamiento de la conexión de base de datos, recuperar y actualizar los datos en Sqlite.





csv