Les bases mobiles et embarquées

La base qui vit dans l'application : SQLite et ses particularités, le journal WAL, les migrations de schéma et la synchronisation hors ligne.

  • 26 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation

Quelques cartes du deck

  • Base embarquée : de quoi s'agit-il ?

    Voir la réponse

    Base qui tourne dans le processus même de l'application, sans serveur à part, et qui tient souvent dans un seul fichier.

    Pas d'installation ni de réseau : l'application ouvre le fichier. En contrepartie, la concurrence et les droits par utilisateur sont limités.

  • Dans SQLite : CREATE TABLE t(n INTEGER); INSERT INTO t VALUES ('12'), ('douze'); SELECT typeof(n) FROM t;. Que rend la requête, ligne par ligne ?

    • integer, puis text
    • text, puis text
    • integer, puis null
    • l'insertion de 'douze' échoue
    Voir la réponse

    integer, puis text

    Le texte '12' est convertible, donc rangé comme entier. 'douze' ne l'est pas : SQLite le garde en texte, sans erreur. Le type déclaré n'est qu'une affinité.

  • SQLite stocke une base entière dans … et n'autorise qu'… à la fois.

    Voir la réponse

    SQLite stocke une base entière dans un seul fichier et n'autorise qu'un seul écrivain à la fois.

    C'est la raison de son succès dans les applications mobiles, et de sa limite dans un service très concurrent.

  • Affinité de types : de quoi s'agit-il ?

    Voir la réponse

    Règle de SQLite selon laquelle le type déclaré d'une colonne est une préférence de conversion, non une contrainte stricte.

    Une valeur convertible est convertie ('12' devient un entier), sinon elle est gardée telle quelle : une colonne d'entiers peut donc contenir du texte.

  • Après une mise à jour, l'application plante avec « no such column: priorite » chez les anciens utilisateurs seulement. Quelle correction est juste ?

    • Créer le schéma complet à chaque démarrage avec CREATE TABLE
    • Des migrations numérotées appliquées au démarrage selon la version du schéma
    • Demander aux utilisateurs de réinstaller l'application
    • Passer la colonne en type TEXT pour qu'elle accepte tout
    Voir la réponse

    Des migrations numérotées appliquées au démarrage selon la version du schéma

    Le schéma n'est créé qu'à l'installation : les anciennes bases n'ont pas la colonne. Un CREATE TABLE IF NOT EXISTS ne modifie pas une table existante, et une réinstallation efface les données locales.