web-dev-qa-db-fra.com

Avantages et inconvénients de SQLite et des préférences partagées

Quel est le bon mécanisme pour stocker des informations dans 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 stocker les données, mais je suis incapable de trouver la réponse appropriée sur Google. S'il vous plaît aidez-moi avec des exemples et des explications.

142
Rana.S

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

SQLite

De grandes quantités de données structurées identiques doivent être stockées dans une base de données SQLite, car celles-ci 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 correspondant à certains critères à l'aide d'un langage de requête tel que SQL. Cela permet de rechercher dans les données. Bien entendu, la gestion et la recherche de grands ensembles de données ont une incidence sur les performances. Par conséquent, la lecture des données d'une base de données peut être plus lente que celle des données de SharedPreferences.

Préférences partagées

SharedPreferences est un magasin de clés/valeurs dans lequel vous pouvez enregistrer des données sous certaines clés. 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 que de stocker une petite quantité de données, il est difficile de stocker et de lire des données structurées volumineuses, car vous devez définir une clé pour chaque donnée. nommer les clés.

151
Flo

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

Les SharedPreferences et la base de données SQL 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 importante, l’option Sqlite impliquera un fichier plus volumineux et plus compliqué avec davantage de temps 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 feriez probablement mieux d'utiliser SharedPreferences.

Et lire certaines données est souvent sur le chemin critique pour afficher l’activité principale, alors je pense que la vitesse est souvent très importante.

Une dernière idée concernant la rapidité et l’efficacité: si vous devez 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 d’éviter l’ouverture d’un deuxième fichier. Ceci est une considération assez mineure - elle mérite probablement d'être prise en compte uniquement si vous devez accéder à la fois aux données structurées et aux préférences avant de pouvoir afficher l'activité principale.

87
Tom

Mon avis est qu’il ne s’agit ni de la vitesse ni de la taille, mais du type d’opérations que vous souhaitez effectuer sur vos données.

Si vous envisagez de faire rejoindre, trier, et d'autres opérations de base de données sur vos données, choisissez Sqlite. Un exemple est le tri des données par date.

Si vous souhaitez mapper des valeurs simples (telles que int, boolean, String), utilisez Preferences. Les opérations de base de données ne fonctionneront pas ici et il va sans dire que vous devez avoir toutes les clés. Un exemple est le mot de passe de l'utilisateur ou la configuration de l'application.

La grande tentation d'adopter les préférences est lorsque vous souhaitez l'utiliser pour stocker un POJO aplati (un objet JSON sérialisé) sous forme de chaîne. Avoir un tel besoin est en fait le signe d’utiliser Sqlite. Pourquoi ? Parce que des données complexes nécessiteront éventuellement des opérations complexes. Imaginez que vous récupériez une entrée spécifique qui pourrait être gérée par un simple "SELECT ... WHERE id = 1". Dans le chemin des préférences, le processus sera long, de la désérialisation à l'itération des résultats.

15
inmyth
  • Pour stocker une quantité énorme de données, optez pour le système de base de données SQLite. Cela permettra également à l'utilisateur de rechercher des données.

  • D'autre part, pour stocker une petite quantité de données, choisissez Préférences partagées. Dans ce cas, un système de base de données énorme n'est pas nécessaire. Cela permettra à l'utilisateur de simplement sauvegarder des données et de les charger.

3
Sami Al-Jabar