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.
- Notions
- Questions
- Ranger et relier
- 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, puistexttext, puistextinteger, puisnull- l'insertion de
'douze'échoue
Voir la réponse
integer, puistextLe 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
TEXTpour 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 EXISTSne modifie pas une table existante, et une réinstallation efface les données locales.- Créer le schéma complet à chaque démarrage avec