¿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 almacenar datos, pero no puedo encontrar la respuesta adecuada en Google. Por favor, ayúdame con ejemplos y explicaciones.
Respuestas:
Realmente depende de los datos que desea almacenar.
SQLite
Grandes cantidades de los mismos datos estructurados deben almacenarse en una base de datos SQLite ya que las bases de datos están diseñadas para este tipo de datos. A medida que la base de datos estructura y administra los datos, se puede consultar para obtener un subconjunto de datos que coincida con ciertos criterios utilizando un lenguaje de consulta como SQL. Esto permite 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 SharedPreferences.
Preferencias compartidas
SharedPreferences es un almacén de clave / valor donde puede guardar datos bajo cierta 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, tan difícil como almacenar y leer datos estructurados grandes, ya que necesita definir la clave para cada uno de los datos, además, realmente no puede buscar dentro de los datos, excepto que tiene un cierto concepto para nombrando las llaves.
fuente
Esta pregunta tiene una respuesta aceptada, pero creo que hay más que decir sobre el tema: con respecto a la velocidad.
SharedPreferences y Sqlite DB de una aplicación 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 dicta su elección (como se explica en la respuesta aceptada) y la velocidad es importante, entonces probablemente sea mejor usar SharedPreferences.
Y leer algunos datos a menudo es una ruta crítica para mostrar la actividad principal, por lo que creo que la velocidad a menudo es muy importante.
Una última reflexión con respecto a la velocidad y la eficiencia: si necesita usar una base de datos Sqlite para algunos datos estructurados, entonces probablemente sea más eficiente también almacenar las preferencias del usuario en la base de datos para no abrir 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.
fuente
Mi opinión es que no se trata de velocidad o tamaño, sino del tipo de operación que desea hacer con sus datos.
Si usted planea hacer unirse a , tipo , y otras operaciones de base de datos en sus datos y luego ir a SQLite . Un ejemplo es ordenar los datos por fecha.
Si desea asignar valores simples (como int, boolean, String), use Preferencias . Las operaciones de DB no funcionarán aquí y no hace falta decir que necesita tener todas las claves. Un ejemplo es la contraseña de 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 tal necesidad es en realidad la señal para usar Sqlite. Por qué ? Porque los datos complejos eventualmente necesitarán operaciones 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.
fuente
SharedPreferences
claves / valores a la vez (por ejemplo, las teclasuser
ypassword
), de modo que esté seguro de que ambas teclas están desarmadas o ambas están configuradas.Para almacenar una gran cantidad de datos, vaya al sistema de base de datos SQLite. Esto permitirá al usuario buscar datos también.
Por otro lado, para almacenar una pequeña cantidad de datos, vaya a Preferencias compartidas. En este caso, un gran sistema de base de datos es innecesario. Esto permitirá al usuario simplemente guardar datos y cargarlos.
fuente
Olvida SQLLite olvida SharedPreferences, usa Realm. Una solución única para todo su almacenamiento local. Puede utilizar objetos Java simples como RealmObjects y almacenar sus datos allí. Puede convertir consultas seleccionadas en archivos JSON. No es necesario analizar toda la base de datos. Consulte este enlace: https://realm.io/news/introducing-realm/
fuente