Introduction¶
Qu'est-ce que SQLite ?¶
SQLite est un moteur de base de données relationnelle embarqué, léger et sans serveur. Contrairement aux SGBD traditionnels (MySQL, PostgreSQL), SQLite ne nécessite aucun processus serveur distinct : la base de données est un simple fichier sur le système de fichiers local.
C'est la solution de stockage de données la plus déployée au monde : chaque smartphone Android et iOS embarque SQLite, tout comme les navigateurs web modernes (Chrome, Firefox, Safari). Dans le contexte des bases de données embarquées et mobiles, SQLite est un choix incontournable.
Caractéristiques principales¶
Avantages de SQLite
- Base de données dans un seul fichier : Facile à sauvegarder et à partager
- Aucune configuration nécessaire : Pas de serveur à installer
- Transactions ACID complètes : Garantit l'intégrité des données
- Taille réduite : Environ 600 Ko seulement
- Multi-plateforme : Windows, Linux, macOS, Android, iOS
Cas d'usage dans les systèmes embarqués et mobiles¶
SQLite est la solution de référence pour :
| Cas d'usage | Description | Exemples |
|---|---|---|
| Applications Android | Stockage local avec Room Persistence Library | WhatsApp, Instagram, Gmail |
| Applications iOS | Base de données embarquée avec Core Data ou directement | Messages, Contacts, Notes |
| Systèmes embarqués | IoT, capteurs, dispositifs médicaux | Compteurs intelligents, drones |
| Applications web offline | Cache local dans les navigateurs | Progressive Web Apps (PWA) |
| Edge computing | Traitement de données à la périphérie | Applications industrielles |
Quand ne pas utiliser SQLite
SQLite n'est pas recommandé pour :
- Applications web à fort trafic avec écritures simultanées
- Bases de données de plusieurs téraoctets
- Contrôle d'accès utilisateur granulaire
- Environnements nécessitant un serveur SQL dédié
SQLite dans Android¶
Android intègre SQLite depuis sa première version. Chaque application Android peut créer des bases de données SQLite privées stockées dans /data/data/package_name/databases/.
graph TB
A[Application Android] --> B[Room Library]
B --> C[SQLite API Android]
C --> D[Moteur SQLite]
D --> E[Fichier .db local]
style A fill:#a5d6a7
style B fill:#fff59d
style C fill:#90caf9
style D fill:#ce93d8
style E fill:#ffab91
Pourquoi apprendre SQLite avant Room ?
- Déboguer : Extraire et analyser les bases de vos apps Android
- Concevoir : Prototyper votre schéma avant de coder
- Optimiser : Comprendre les index et les requêtes efficaces
- Migrer : Gérer les évolutions de schéma dans vos apps
Architecture SQLite¶
graph LR
A[Application] --> B[Interface SQLite]
B --> C[Moteur SQL]
C --> D[Fichier .db]
style A fill:#e1f5ff
style B fill:#fff9c4
style C fill:#f3e5f5
style D fill:#c8e6c9
SQLite dans l'écosystème Android¶
SQLite et Android
Android intègre SQLite nativement depuis sa première version. Chaque application Android peut créer et utiliser des bases de données SQLite privées stockées dans son espace de stockage interne.
Évolution dans Android :
- Android 1.0-4.x : API SQLite native directe
- Android 5.0+ : Introduction de Room Persistence Library (recommandé)
- Android moderne : Room + Kotlin Coroutines + Flow
Architecture de stockage Android¶
graph TB
A[Application Android] --> B[Room Persistence Library]
B --> C[SQLite API]
C --> D[Moteur SQLite Natif]
D --> E[Fichier .db dans /data/data/package/]
style A fill:#a5d6a7
style B fill:#fff59d
style C fill:#90caf9
style D fill:#ce93d8
style E fill:#ffab91
Pourquoi apprendre SQLite brut ?
Même si vous utiliserez Room dans vos applications Android, comprendre SQLite directement est essentiel pour :
- Déboguer les bases de données de vos applications
- Concevoir efficacement vos schémas avant de coder
- Analyser les données stockées sur l'appareil
- Optimiser les performances avec les bons index
Outils pour travailler avec SQLite¶
1. sqlite3 (CLI)¶
L'interface en ligne de commande native de SQLite :
Avantages pour le développement mobile :
- Déboguer les bases de données Android via ADB
- Tester des requêtes avant de les implémenter dans l'app
- Automatisation de scripts de migration
- Analyser les bases extraites d'appareils
Exemple : Déboguer une base Android
2. DB Browser pour SQLite¶
Outil graphique open-source pour concevoir et visualiser :
Avantages pour le développement mobile :
- Prototyper le schéma de base de données avant codage
- Visualiser et éditer les données de test
- Générer les scripts SQL pour Room
- Analyser les bases de données extraites d'Android
Workflow recommandé
- Concevoir le schéma dans DB Browser
- Générer le script SQL
- Implémenter avec Room dans Android
- Déboguer avec sqlite3 via ADB
Comparaison : Bases embarquées vs Client-Serveur¶
| Caractéristique | SQLite (Embarqué) | MySQL/PostgreSQL (Client-Serveur) |
|---|---|---|
| Architecture | In-process, fichier local | Processus serveur distant |
| Taille binaire | ~600 Ko | 50-200 Mo |
| Configuration | Aucune | Serveur, ports, utilisateurs |
| Connexion réseau | Non requise | Requise |
| Transactions | ACID complet | ACID complet |
| Concurrence | Lecture multiple, écriture unique | Lectures/écritures multiples |
| Cas d'usage | Mobile, embarqué, offline | Web, entreprise, cloud |
| Consommation ressources | Minimale (parfait pour mobile) | Élevée |
Pourquoi SQLite pour le mobile ?
Avantages décisifs pour Android/iOS :
- Zéro latence réseau : Données locales = app ultra-rapide
- Économie batterie : Pas de connexion réseau permanente
- Mode offline : Application fonctionnelle sans internet
- Sécurité : Données privées dans le sandbox de l'app
- Léger : Idéal pour les ressources limitées des mobiles
Limitations à connaître
- Pas adapté aux écritures concurrentes massives
- Pas de gestion utilisateurs (sécurité = sandbox OS)
- Pas de réplication automatique (sync = backend custom)
Solution : SQLite local + API REST pour synchronisation cloud
Prochaines étapes¶
Maintenant que vous comprenez ce qu'est SQLite, passons à la pratique !