image de chargement
Retour au glossaire

Firestore

Base de données NoSQL serverless de Google offrant synchronisation en temps réel, scalabilité automatique et intégration native avec Firebase.

Mis à jour le 14 janvier 2026

Firestore (Cloud Firestore) est une base de données NoSQL orientée documents, développée par Google dans l'écosystème Firebase. Conçue pour les applications mobiles, web et serveur, elle offre une synchronisation en temps réel des données entre clients, une architecture serverless éliminant la gestion d'infrastructure, et une scalabilité automatique pour gérer des millions d'utilisateurs simultanés.

Fondements techniques

  • Architecture orientée documents avec collections et sous-collections imbriquées permettant une modélisation flexible des données
  • Synchronisation temps réel via WebSockets avec gestion automatique de la reconnexion et résolution des conflits
  • Modèle de tarification basé sur les lectures/écritures et le stockage, avec mode offline intégré pour réduire les coûts
  • Requêtes composées avec indexation automatique et support des filtres, tri et pagination

Avantages stratégiques

  • Zéro configuration serveur : infrastructure totalement gérée par Google avec scalabilité automatique mondiale
  • Synchronisation multi-plateforme instantanée : les modifications sont propagées en millisecondes à tous les clients connectés
  • Mode offline-first natif : les applications fonctionnent sans connexion avec synchronisation automatique au retour en ligne
  • Sécurité granulaire : règles de sécurité déclaratives au niveau des documents avec validation côté serveur
  • Intégration Firebase complète : authentification, Cloud Functions, Analytics et autres services dans un écosystème unifié

Exemple concret

firestore-example.ts
import { initializeApp } from 'firebase/app';
import { 
  getFirestore, 
  collection, 
  doc, 
  setDoc, 
  onSnapshot,
  query,
  where,
  orderBy
} from 'firebase/firestore';

// Initialisation
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);

// Écriture de données
const addTask = async (taskData: Task) => {
  const taskRef = doc(collection(db, 'tasks'));
  await setDoc(taskRef, {
    ...taskData,
    createdAt: new Date(),
    status: 'pending'
  });
  return taskRef.id;
};

// Lecture temps réel avec requête
const subscribeToActiveTasks = (userId: string, callback: Function) => {
  const q = query(
    collection(db, 'tasks'),
    where('userId', '==', userId),
    where('status', 'in', ['pending', 'in-progress']),
    orderBy('createdAt', 'desc')
  );

  // Listener temps réel
  return onSnapshot(q, (snapshot) => {
    const tasks = snapshot.docs.map(doc => ({
      id: doc.id,
      ...doc.data()
    }));
    callback(tasks);
  }, (error) => {
    console.error('Erreur synchronisation:', error);
  });
};

// Utilisation
const unsubscribe = subscribeToActiveTasks('user123', (tasks) => {
  console.log('Tâches mises à jour:', tasks);
});

// Nettoyage
// unsubscribe();

Mise en œuvre

  1. Créer un projet Firebase via la console Google Cloud et activer Cloud Firestore en mode natif
  2. Modéliser les données en collections/documents : éviter les imbrications excessives (max 3 niveaux recommandé)
  3. Configurer les règles de sécurité Firestore pour protéger l'accès aux données selon les rôles utilisateurs
  4. Créer les index composés nécessaires pour les requêtes complexes (Firestore suggère automatiquement les index manquants)
  5. Intégrer les SDK clients (Web, iOS, Android) et implémenter la logique de synchronisation temps réel
  6. Optimiser les coûts : utiliser le cache local, limiter les listeners actifs, implémenter la pagination

Conseil Pro

Privilégiez la dénormalisation des données pour optimiser les lectures. Firestore facture par opération : dupliquer certaines données dans plusieurs documents réduit le nombre de requêtes nécessaires. Par exemple, stockez le nom d'utilisateur directement dans les posts plutôt que de faire une jointure. Utilisez Cloud Functions pour maintenir la cohérence lors des mises à jour.

Outils et écosystème

  • Firebase Console : interface web pour gérer les données, configurer les règles de sécurité et monitorer l'usage
  • Firebase Emulator Suite : environnement local pour tester Firestore, Authentication et Functions sans coûts
  • Firestore REST API : accès aux données via HTTP pour intégrations serveur ou langages non supportés par les SDK
  • Firebase Extensions : modules pré-configurés (recherche full-text avec Algolia, resize d'images, triggers email)
  • Firestore Security Rules Playground : testeur interactif pour valider les règles de sécurité avant déploiement
  • Datastore Mode : alternative à Firestore pour applications serveur nécessitant des transactions ACID complexes

Firestore révolutionne le développement d'applications en éliminant la complexité infrastructure traditionnelle des bases de données. Sa synchronisation temps réel native et son mode offline automatique permettent de créer des expériences utilisateur fluides sans gérer WebSockets ou logique de cache complexe. Pour les équipes cherchant à accélérer le time-to-market tout en garantissant scalabilité et fiabilité mondiale, Firestore offre un ratio valeur/complexité exceptionnel, particulièrement pour les applications collaboratives, les dashboards temps réel et les applications mobiles modernes.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.