Avantages et inconvénients de SQLite et préférences partagées [fermé]

Quel est le bon mécanisme pour stocker des informations entre la base de données SQLite et les préférences partagées?

Pourquoi utiliser les préférences partagées? Pourquoi utiliser sqlite? J'ai essayé de trouver la différence entre eux, et quel est le meilleur mécanisme pour le stockage de données, mais je suis incapable de trouver la réponse appropriée sur Google. Aidez-moi avec des exemples et des explications.

128
demandé sur Bill 2011-06-08 12:54:11

5 réponses

Cela dépend vraiment des données que vous voulez stocker.

SQLite

De grandes quantités de données structurées doivent être stockées dans une base de données SQLite car les bases de données sont conçues pour ce type de données. Comme les données sont structurées et gérées par la base de données, il peut être interrogé pour obtenir un sous-ensemble de données qui correspond à certains critères en utilisant un langage de requête comme SQL. Cela permet de rechercher dans les données. Bien sûr la gestion et la recherche de grands ensembles d'influences de données les performances de lecture des données d'une base de données peuvent être plus lentes que celles de SharedPreferences.

SharedPreferences

SharedPreferences est un magasin de clés/valeurs dans lequel vous pouvez enregistrer des données sous une certaine clé. Pour lire les données du magasin, vous devez connaître la clé des données. Cela rend la lecture des données très facile. Mais aussi facile de stocker une petite quantité de données aussi difficile de stocker et de lire de grandes données structurées que vous devez définir une clé pour chaque de plus, vous ne pouvez pas vraiment rechercher dans les données, sauf que vous avez un certain concept pour nommer les clés.

143
répondu Flo 2012-04-11 22:47:11

Cette question a une réponse acceptée, mais je pense qu'il y a plus à dire sur le sujet-en ce qui concerne la vitesse.

SharedPreferences et Sqlite DB d'une application ne sont que des fichiers, stockés dans les répertoires de l'application sur le système de fichiers du périphérique. Si la quantité de données n'est pas trop grande, L'option Sqlite impliquera un fichier plus grand et plus compliqué avec plus de surcharge de traitement pour un accès simple.

Donc, si la nature des données ne dicte pas votre choix (comme expliqué dans la réponse acceptée), et la vitesse compte, alors vous êtes probablement préférable d'utiliser SharedPreferences.

Et la lecture de certaines données est souvent sur le chemin critique pour afficher l'activité principale, donc je pense que la vitesse est souvent très importante.

Une dernière pensée concernant la vitesse et l'efficacité-si vous avez besoin d'utiliser une base de données Sqlite pour certaines données structurées, il est probablement plus efficace de stocker également les préférences de l'utilisateur dans la base de données afin de ne pas ouvrir un second fichier. Ceci est un assez considération mineure-ne vaut probablement la peine d'être prise en compte que si vous devez accéder à la fois aux données structurées et aux préférences avant de pouvoir afficher l'activité principale.

82
répondu Tom 2012-11-27 02:16:29

Ma prise est, il ne s'agit pas de vitesse ou de taille mais des types d'opérations que vous voulez faire à vos données.

Si vous envisagez de faire joindre, tri, et d'autres DB opérations sur vos données, alors allez - Sqlite. Un exemple est le tri des données par date.

Si vous voulez mapper des valeurs simples (comme int, boolean, String) puis utiliser Préférences. Les opérations DB ne fonctionneront pas ici et inutile de dire que vous devez avoir toutes les clés. Un exemple est mot de passe utilisateur ou configuration de l'application.

La grande tentation d'embrasser les préférences est quand vous voulez l'utiliser pour stocker un POJO aplati (un objet JSON sérialisé) en tant que chaîne. Avoir un tel besoin est en fait le signe d'utiliser Sqlite. Pourquoi? Parce que les données complexes auront finalement besoin d'oprations complexes. Imaginez récupérer une entrée spécifique qui pourrait être gérée par un simple "SELECT"... Où id = 1". Dans le chemin des préférences, Ce sera un long processus allant de la désérialisation à l'itération des résultats.

14
répondu inmyth 2015-04-08 06:19:57
  • Pour stocker une énorme quantité de données, optez pour le système de base de données SQLite. Ce permettra à l'utilisateur de rechercher des données ainsi.

  • D'autre part, pour stocker une petite quantité de données, optez pour Shared Préférence. Dans ce cas, un énorme système de base de données est inutile. Cela permettra à l'utilisateur de simplement enregistrer des données et de les charger.

3
répondu Sami Al-Jabar 2015-11-06 07:41:37

Oubliez SQLLite oubliez SharedPreferences, utilisez Realm. Une solution unique pour tout votre stockage local. Vous pouvez utiliser des objets Java anciens comme RealmObjects et y stocker vos données. Vous pouvez convertir les requêtes sélectionnées en fichiers JSON. Pas besoin d'analyser toute la base de données. Vérifiez ce lien: https://realm.io/news/introducing-realm/

-5
répondu greenspand 2015-11-27 10:20:45