Google Firebase
Sommaire
- 1- Objectif
- 2- Présentation
- 3- Les avantages de Firebase
- 4- Les services offerts par Firebase
- 5- Realtime Database
- 5.1.1- FireBase synchronisation automatique
- 5.1.2- FireBase et serveur d'applications
- 6- Organisation des données dans Firestore
- 6.1- Choix d'organisation des données dans Firestore
- 6.2- Documents
- 6.3- Collections
- 6.4- Sous-collections
- 6.5- Collections au niveau racine dans Firestore
- 6.5.1- Cours Flutter
Google Firebase
-
Objectif
- Connaitre Google Firebase
-
Présentation
Firebase
, est une startup back-end-as-a-service (BaaS) créé en 2011 par Andrew Lee et James Tamplin, est un ensemble de services d’hébergement destinés à tout type d’application. Il a été racheté par Google en 2014.Google Firebase
est un logiciel de développement d’applications soutenu par Google qui permet aux développeurs de développer des applications Android, iOS et web .Firebase
fournit des outils pour suivre les analyses, signaler et réparer les plantages d’applications, créer des expériences de marketing et de produits.Firebase
propose un certain nombre de services parmi ces services on cite une Base de données en temps réel- La base de données en temps réel Firebase est une base de données NoSQL hébergée dans le cloud qui permet de stocker et de synchroniser les données entre les utilisateurs en temps réel. Les données sont synchronisées sur tous les clients en temps réel et sont toujours disponibles lorsqu’une application se déconnecte.
Firebase
est le nom d’une plateforme mobile de Google qui facilite la création de back-end à la fois scalable et performant. En d’autres termes, il s’agit d’une plateforme qui permet de développer rapidement des applications pour mobile et pour le web.-
Les avantages de Firebase
- Vitesse de Développement :
- Firebase offre un gain de temps considérable grâce à ses API et SDK intégrés, permettant aux développeurs de se concentrer sur le développement front-end sans avoir à coder le backend.
- Solution Complète de Développement :
- Firebase propose une solution tout-en-un couvrant toutes les étapes du cycle de développement, de la création à la publication et au suivi des applications.
- Fiabilité et Évolutivité :
- Proposé par Google, Firebase bénéficie de la fiabilité et de l’infrastructure évolutive de Google Cloud Platform, assurant des mises à jour automatiques et une disponibilité constante.
- Engagement des Utilisateurs :
- Avec des outils comme Cloud Messaging et Analytics, Firebase aide à engager et à fidéliser les utilisateurs, augmentant ainsi le succès de l’application.
- Support de la Communauté :
- Firebase dispose d’une large communauté de développeurs et d’utilisateurs qui partagent des ressources, des conseils et des solutions, facilitant ainsi la résolution des problèmes et l’apprentissage.
-
Les services offerts par Firebase
- Voici les services les plus populaires de Firebase:
- Cloud Firestore: c’est une base de donnée NoSQL en temps reel. Il offre une architecture de Collection/Document. Il convient de noter que Firestore est techniquement un produit Google Cloud, pas un produit Firebase. Pourquoi est-il répertorié avec Firebase? Firebase ajoute des SDK à utiliser dans votre application mobile pour rendre possible l’accès direct aux données, supprimant ainsi le besoin de ce composant middleware embêtant.
- Base de Données en Temps Réel (Realtime Database) et Cloud Firestore :
- Firebase propose deux solutions de base de données pour stocker et synchroniser les données en temps réel entre les clients.
- Realtime Database: c’est une base de donnee NoSQL en temps réel tout comme Cloud Firestore. Très utile pour des système de messagerie
- Cloud storage: Firebase Storage offre un moyen simple d’enregistrer des fichiers binaires, le plus souvent des images, mais ce n’est que Google Cloud Storage.
- Authentification :
- Firebase Authentication permet de gérer facilement les processus de connexion et d’inscription des utilisateurs. Il prend en charge plusieurs méthodes d’authentification, y compris les connexions via Google, Facebook, Twitter, et les adresses email.
- Cloud Storage :
- Firebase Storage est conçu pour stocker et servir des fichiers utilisateur, tels que des images et des vidéos, avec une intégration fluide à Google Cloud Storage.
- Cloud Messaging :
- Firebase Cloud Messaging (FCM) permet d’envoyer des notifications push sur les appareils Android, iOS et le web, facilitant ainsi la communication avec les utilisateurs.
- Analytics :
- Firebase Analytics offre des analyses détaillées des interactions des utilisateurs avec l’application, permettant aux développeurs de comprendre le comportement des utilisateurs et d’optimiser l’application en conséquence.
- Hosting: Firebase comprend un service d’hébergement facile à utiliser pour tous vos fichiers statiques (HTML, CSS, JS, images). Il les sert à partir d’un CDN global avec HTTP/2.
- Firebase Cloud Messaging: il permet d’envoyer des messages et des notifications aux utilisateurs
- Cloud Functions: un autre produit Google Cloud. À l’aide des SDK Firebase pour Cloud Functions, vous pouvez écrire et déployer du code, exécuté sur l’infrastructure «sans serveur» (serverless) de Google, qui répond automatiquement aux événements provenant d’autres produits Firebase.
-
Realtime Database
- Firebase Realtime Database n’est autre qu’une base de données NoSQL, bénéficiant d’un hébergement « Cloud » et permettant le stockage et la synchronisation de données de vos utilisateurs. Les développeurs peuvent gérer cette base de données en temps réel.
- Firebase Realtime Database est capable de fournir à votre application la valeur des données et les mises à jour appliquées sur ces dernières avec à une simple API. Grâce à la synchronisation en temps réel, les utilisateurs de votre application peuvent consulter leurs données depuis n’importe quel terminal (sur le web ou depuis leur mobile). Notez que cette base de données est livrée avec des SDK mobiles et web et permet la création d’amplifications sans utiliser de serveurs.
-
FireBase synchronisation automatique
- Quand vos utilisateurs passent en mode hors ligne, les SDK de base de données en temps réel utilisent le cache pour enregistrer les modifications. Quand l’appareil est en ligne, les données locales connaissent une synchronisation automatique.
- La base de données en temps réel offre une excellente prise en charge hors ligne car elle conserve un cache interne de toutes les données que vous avez interrogées.
- Lorsqu’il n’y a pas de connexion Internet, l’application utilise les données du cache, permettant aux applications de rester réactives. Lorsque l’appareil se connecte à Internet, la base de données en temps réel synchronise les modifications des données locales avec les mises à jour à distance qui se sont produites lorsque le client était hors ligne, résolvant automatiquement tout conflit.
-
FireBase et serveur d’applications
- Les appareils clients accèdent directement à la base de données en temps réel , sans avoir besoin d’un serveur d’applications. Les règles de sécurité déterminent qui a accès à quelles données et comment y accéder.
-
Organisation des données dans Firestore
-
Choix d’organisation des données dans Firestore
- Dans Firestore, on peut structurer ses données de plusieurs façons :
- 📄 Documents simples
- Utiles pour des données petites et fixes (ex : profil utilisateur).
- 📂 Collections multiples
- Idéal pour séparer différentes entités (ex : utilisateurs, produits, commandes).
- 📁 Sous-collections dans des documents
- Recommandé quand une entité possède plusieurs éléments dynamiques ou en constante évolution (ex : commentaires d’un article, messages d’un chat).
-
Documents
- Un document est un enregistrement léger contenant un champ associé à des valeurs. Un nom identifie chaque document et nous pouvons le traiter comme un enregistrement JSON léger.
-
Collections
- Les documents sont regroupés dans des collections, qui sont des conteneurs très simples. Les collections sont dépourvues de schéma. Nous sommes libres de choisir les champs et les types de données que nous stockons dans chaque document. Les documents d’une même collection peuvent contenir et stocker différents champs et différents types de données.
- Une collection contient des documents et rien d’autre.
- Il ne peut pas contenir directement des champs bruts avec valeur.
- Il ne peut pas contenir d’autres collections.
- Les noms des documents d’une collection sont uniques.
- Nous pouvons fournir nos clés, telles que les identifiants d’utilisateur.
- Nous pouvons autoriser Cloud Firestore à créer automatiquement des identifiants aléatoires pour nous.
- Il n’est pas nécessaire de créer ou de supprimer des collections.
- La collection existe, lorsque nous créons le premier document.
- Si tous les documents d’une collection sont supprimés, la collection n’existera plus.
-
Sous-collections
- Une sous-collection est une collection imbriquée dans un document spécifique. Elle permet d’organiser les données qui sont liées logiquement à un élément principal.
- Exemple : Application de gestion de classes et devoirs
- Autre exemple : Application de gestion de restaurants et menus
-
Collections au niveau racine dans Firestore
- Dans Firestore, une collection au niveau racine est une collection qui se trouve directement à la racine de la base de données, non imbriquée dans un document.
- Elle sert à organiser les grandes entités de votre application. Chaque collection racine peut contenir plusieurs documents, et chaque document peut ensuite contenir d’autres données ou sous-collections.
- Exemple 1 : Application e-commerce
- Chaque collection représente une catégorie de données indépendante (produits, utilisateurs, commandes).
- Exemple 2 : Application de gestion scolaire
- Ici, les collections « Étudiants », « Cours » et « Inscriptions » sont au même niveau hiérarchique : la racine de Firestore.
- Avantages des collections racine :
- Organisation claire et logique.
- Requêtes faciles : on peut interroger directement chaque collection.
- Idéal pour des entités principales comme utilisateurs, articles, produits, etc.
- Quand les utiliser ?
- Utilisez des collections racine lorsque vos données représentent des blocs indépendants de l’application, par exemple :
-
// Collection
Classes
// Document 1
classeA
nom : "Terminale S"
prof : "Mme Dupont"
// Sous-collection
Devoirs
// Document 1
devoir1
titre : "Maths - Intégrales"
date_limite : "2025-04-30"
// Document 2
devoir2
titre : "Physique - Optique"
date_limite : "2025-05-03"
// Document 2
classeB
nom : "Première L"
prof : "M. Martin"
// Sous-collection
Devoirs
// Document 1
devoir1
titre : "Français - Dissertation"
date_limite : "2025-04-28"
// Document 2
devoir2
titre : "Histoire - Révolution française"
date_limite : "2025-05-05"
// Document 3
classeC
nom : "Seconde"
prof : "Mme Leroy"
// Sous-collection
Devoirs
// Document 1
devoir1
titre : "SVT - Cellules"
date_limite : "2025-04-25"
// Document 2
devoir2
titre : "Anglais - Compréhension écrite"
date_limite : "2025-05-02"
// Document 3
devoir3
titre : "Maths - Équations"
date_limite : "2025-05-07"
// Collection
Restaurants
// Document
resto_pizza_delice
nom : "Pizza Délice"
ville : "Paris"
// Sous-collection
Menus
// Document
menu1
nom : "Menu Maxi"
prix : 14.99
// Document
menu2
nom : "Menu Végétarien"
prix : 11.50
Produits (collection au niveau racine)
├── produit1 (document)
│ ├── nom : "T-shirt"
│ ├── prix : 25.00
├── produit2
├── nom : "Pantalon"
├── prix : 45.00
Utilisateurs (collection au niveau racine)
├── utilisateur1
│ ├── nom : "Alice"
│ ├── email : "alice@example.com"
Commandes (collection au niveau racine)
├── commande1
├── utilisateur : "utilisateur1"
├── total : 70.00
Étudiants (collection au niveau racine)
├── etudiant1
│ ├── nom : "Karim"
│ ├── niveau : "2ème année"
Cours
├── cours1
│ ├── titre : "Programmation"
│ ├── professeur : "Mme Souad"
Inscriptions
├── inscription1
├── etudiant : "etudiant1"
├── cours : "cours1"
-
Utilisateurs
Articles
Produits
Commandes
Messages