Pregunta Pros y contras de SQLite y preferencias compartidas [cerrado]


¿Cuál es el buen mecanismo para almacenar información entre la base de datos SQLite y las Preferencias Compartidas?

¿Por qué usar preferencias compartidas? ¿Por qué usar sqlite? Traté de encontrar la diferencia entre ellos, y cuál es el mejor mecanismo para el almacenamiento de datos, pero no puedo encontrar la respuesta adecuada en Google. Por favor ayúdame con ejemplos y explicaciones.


123
2018-06-08 08:54


origen


Respuestas:


Realmente depende de los datos que desea almacenar.

SQLite

Se deben almacenar grandes cantidades de los mismos datos estructurados en una base de datos SQLite ya que las bases de datos están diseñadas para este tipo de datos. Como los datos están estructurados y gestionados por la base de datos, se puede consultar para obtener un subconjunto de datos que coincida con ciertos criterios utilizando un lenguaje de consulta como SQL. Esto hace posible buscar en los datos. Por supuesto, administrar y buscar grandes conjuntos de datos influye en el rendimiento, por lo que leer datos de una base de datos puede ser más lento que leer datos de las Preferencias Compartidas.

Preferencias compartidas

SharedPreferences es un almacén de claves / valores en el que puede guardar datos bajo determinada clave. Para leer los datos de la tienda, debe conocer la clave de los datos. Esto hace que leer los datos sea muy fácil. Pero tan fácil como es almacenar una pequeña cantidad de datos, es difícil almacenar y leer datos estructurados grandes, ya que necesita definir la clave para cada dato, además, no puede realmente buscar dentro de los datos, excepto que tiene un cierto concepto para nombrando las llaves.


142
2018-06-08 09:49



Esta pregunta tiene una respuesta aceptada, pero creo que hay más que decir sobre el tema, con respecto a la velocidad.

Las Preferencias Compartidas de una aplicación y DB Sqlite son solo archivos, almacenados en los directorios de la aplicación en el sistema de archivos del dispositivo. Si la cantidad de datos no es demasiado grande, la opción Sqlite implicará un archivo más grande y más complicado con más sobrecarga de procesamiento para un acceso simple.

Por lo tanto, si la naturaleza de los datos no determina su elección (como se explica en la respuesta aceptada), y la velocidad sí importa, entonces probablemente sea mejor utilizar las Preferencias Compartidas.

Y leer algunos datos a menudo está en el camino crítico para mostrar la actividad principal, así que creo que la velocidad suele ser muy importante.

Un último pensamiento con respecto a la velocidad y la eficiencia: si necesita utilizar una base de datos Sqlite para algunos datos estructurados, entonces probablemente sea más eficiente almacenar también las preferencias del usuario en la base de datos para que no abra un segundo archivo. Esta es una consideración bastante menor: probablemente valga la pena considerarla solo si necesita acceder tanto a los datos estructurados como a las preferencias antes de poder mostrar la actividad principal.


80
2017-11-27 02:16



Mi opinión es que no se trata de velocidad o tamaño, sino de los tipos de operaciones que desea realizar con sus datos.

Si planeas hacer unirse, ordenar, y otras operaciones DB en sus datos, luego vaya a Sqlite. Un ejemplo es ordenar los datos por fecha.

Si desea asignar valores simples (como int, boolean, String), utilice Preferencias. Las operaciones DB no funcionarán aquí y no hace falta decir que necesita tener todas las claves. Un ejemplo es la contraseña del usuario o la configuración de la aplicación.

La gran tentación de adoptar Preferencias es cuando desea usarlo para almacenar un POJO aplanado (un objeto JSON serializado) como String. Tener esa necesidad es en realidad el signo de usar Sqlite. Por qué ? Porque los datos complejos eventualmente necesitarán opraciones complejas. Imagine recuperar una entrada específica que podría manejarse con un simple "SELECCIONAR ... DONDE id = 1". En la ruta de Preferencias, este será un proceso largo desde la deserialización hasta la iteración de los resultados.


13
2018-04-06 03:37



  • Para almacenar una gran cantidad de datos, vaya al sistema de base de datos SQLite. Esta permitirá al usuario buscar datos también.

  • Por otro lado, para almacenar una cantidad pequeña de datos, vaya a Compartido Preferencias En este caso, un gran sistema de base de datos es innecesario. Esto permitirá al usuario simplemente guardar datos y cargarlos.


3
2017-11-06 07:41



Olvide SQLLite Olvídese de SharedPreferences, use Realm. Una solución única para todo su almacenamiento local. Puede usar objetos antiguos simples de Java como RealmObjects y almacenar allí sus datos. Puede convertir consultas seleccionadas en archivos JSON. No es necesario analizar toda la base de datos. Mira este enlace: https://realm.io/news/introducing-realm/


-5
2017-11-27 10:20