Aller au contenu

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 :

sqlite3 ma_base.db

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

1
2
3
4
5
# Extraire la base de données d'un appareil Android
adb pull /data/data/com.example.app/databases/app.db

# Analyser avec sqlite3
sqlite3 app.db

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é

  1. Concevoir le schéma dans DB Browser
  2. Générer le script SQL
  3. Implémenter avec Room dans Android
  4. 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 !