Choisissez une base de données: Cloud Firestore ou Realtime Database

Firebase propose deux bases de données de documents accessibles aux clients et basées dans le cloud. Nous recommandons aux nouveaux clients de commencer par Cloud Firestore :

  • Cloud Firestore est une base de données de documents compatible JSON de niveau entreprise recommandée, approuvée par plus de 250 000 développeurs. Il convient aux applications avec des modèles de données riches nécessitant une capacité de requête, une évolutivité et une haute disponibilité. Il offre également une synchronisation client à faible latence et un accès aux données hors connexion.

  • Realtime Database est la base de données JSON Firebase classique. Il convient aux applications avec des modèles de données simples nécessitant des recherches simples et une synchronisation à faible latence avec une évolutivité limitée.

Quels sont les autres points importants à prendre en compte ?

Après avoir réfléchi aux considérations clés précédentes, vous serez peut-être prêt à choisir une base de données. Si vous hésitez encore entre les avantages et les inconvénients, cette section présente d'autres différences entre Cloud Firestore et Realtime Database.

Modèle de données

Realtime Database et Cloud Firestore sont des bases de données NoSQL.

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Stocke les données sous forme de collections de documents.
  • Les données simples sont faciles à stocker dans des documents, qui sont très semblables à JSON.
  • Les données hiérarchiques complexes sont plus faciles à organiser à grande échelle à l'aide de sous-collections dans les documents.
  • Nécessite moins de dénormalisation et d'aplatissement des données.

En savoir plus sur le modèle de données Cloud Firestore

Stocke les données sous forme d'un grand arbre JSON.
  • Les données simples sont très faciles à stocker.
  • Il est plus difficile d'organiser des données hiérarchiques complexes à grande échelle.

En savoir plus sur le modèle de données Realtime Database

Assistance en temps réel et hors connexion

Les deux proposent des SDK en temps réel axés sur le mobile et prennent en charge le stockage local des données pour les applications utilisables hors connexion.

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Fonctionnement hors connexion pour les clients Apple, Android et Web. Compatibilité hors connexion pour les clients Apple et Android.

Présence

Il peut être utile de savoir quand un client est en ligne ou hors connexion. Firebase Realtime Database peut enregistrer l'état de la connexion du client et fournir des mises à jour chaque fois que l'état de la connexion du client change.

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Non compatible en mode natif. Vous pouvez vous appuyer sur la compatibilité de Realtime Database avec la présence en synchronisant Cloud Firestore et Realtime Database à l'aide de Cloud Functions. Consultez Créer une présence dans Cloud Firestore. La présence est prise en charge.

Requête

Récupérez, triez et filtrez les données de l'une ou l'autre base de données à l'aide de requêtes.

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Requêtes indexées avec tri et filtrage composés.
  • Vous pouvez enchaîner des filtres et combiner le filtrage et le tri sur une propriété dans une même requête.
  • Les requêtes sont superficielles : elles ne renvoient que les documents d'une collection ou d'un groupe de collections spécifiques, et non les données des sous-collections.
  • Les requêtes doivent toujours renvoyer des documents entiers.
  • Les requêtes sont indexées par défaut : les performances des requêtes sont proportionnelles à la taille de l'ensemble de résultats, et non à l'ensemble de données.
Requêtes approfondies avec des fonctionnalités de tri et de filtrage limitées.
  • Les requêtes peuvent trier ou filtrer une propriété, mais pas les deux.
  • Les requêtes sont profondes par défaut : elles renvoient toujours l'intégralité du sous-arbre.
  • Les requêtes peuvent accéder aux données à n'importe quel niveau de précision, jusqu'aux valeurs des nœuds feuilles individuels de l'arborescence JSON.
  • Les requêtes ne nécessitent pas d'index. Toutefois, les performances de certaines requêtes se dégradent à mesure que votre ensemble de données augmente.

Écritures et transactions

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Opérations d'écriture et de transaction avancées.
  • Opérations d'écriture de données : définissez et mettez à jour des opérations, ainsi que des transformations avancées telles que les opérateurs de tableaux et numériques.
  • Les transactions peuvent lire et écrire des données de manière atomique à partir de n'importe quelle partie de la base de données.
Opérations d'écriture et de transaction de base.

Fiabilité et performances

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Cloud Firestore est une solution régionale et multirégionale qui évolue automatiquement.
  • Solution à faible latence, avec des temps de réponse typiques ne dépassant pas 30 ms.
  • Vos données sont stockées dans plusieurs centres de données situés dans des régions distinctes, ce qui garantit une évolutivité mondiale et une fiabilité élevée.
  • Disponible dans des configurations régionales ou multirégionales à travers le monde.
Pour en savoir plus sur les caractéristiques de performances et de fiabilité de Cloud Firestore, consultez le Contrat de niveau de service.
Realtime Database est une solution régionale.
  • Disponible dans les configurations régionales. Les bases de données sont limitées à la disponibilité zonale dans une région.
  • Latence extrêmement faible, avec des temps de réponse typiques ne dépassant pas 10 ms. Il s'agit d'une option idéale pour la synchronisation fréquente des états.
Pour en savoir plus sur les caractéristiques de performances et de fiabilité de Realtime Database, consultez le Contrat de niveau de service.

Temps d'activité

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Performances de disponibilité extrêmement élevées.
  • Un temps d'activité typique de 99,999 %.
  • Si la disponibilité est de la plus haute importance, par exemple dans les applications d'e-commerce, utilisez Cloud Firestore.
Hautes performances en termes de disponibilité.
  • Un temps d'activité typique de 99,95 %.

Évolutivité

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
La mise à l'échelle est automatique.
  • Le scaling est entièrement automatique. Les limites de scaling sont d'environ un million de connexions simultanées et 10 000 écritures par seconde. Nous prévoyons d'augmenter ces limites à l'avenir.
  • Comporte des limites sur les taux d'écriture dans des documents ou des index individuels.
Le scaling nécessite le partitionnement.
  • Faites évoluer votre base de données unique pour atteindre environ 200 000 connexions simultanées et 1 000 écritures par seconde. Pour aller au-delà, vous devez partitionner vos données sur plusieurs bases de données.
  • Aucune limite locale sur les taux d'écriture pour les éléments de données individuels.

Sécurité

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Règles non en cascade qui combinent autorisation et validation.
  • Lecture et écriture à partir de SDK mobiles sécurisés par Cloud Firestore Security Rules.
  • Lecture et écriture à partir des SDK serveur sécurisés par Identity and Access Management (IAM).
  • Les règles ne sont pas appliquées en cascade, sauf si vous utilisez un caractère générique.
  • Les règles peuvent contraindre les requêtes : si les résultats d'une requête peuvent contenir des données auxquelles l'utilisateur n'a pas accès, la requête entière échoue.
Langage de règles en cascade qui sépare l'autorisation de la validation.

Tarifs

Les deux solutions sont disponibles dans les forfaits Spark et Blaze.

Cloud Firestore [ PRÉFÉRÉ ] Realtime Database
Les frais sont principalement basés sur les opérations effectuées dans votre base de données (lecture, écriture, suppression) et, à un taux inférieur, sur la bande passante et le stockage.

Cloud Firestore est compatible avec les limites de dépenses quotidiennes pour les projets App Engine. Vous pouvez ainsi vous assurer de ne pas dépasser les coûts que vous êtes prêt à payer.

En savoir plus sur les forfaits Cloud Firestore

Les frais ne concernent que la bande passante et le stockage, mais à un taux plus élevé.

En savoir plus sur les forfaits Realtime Database

Utiliser Cloud Firestore et Realtime Database

Vous pouvez utiliser les deux bases de données dans la même application ou le même projet Firebase. Les deux bases de données NoSQL peuvent stocker les mêmes types de données et les bibliothèques clientes fonctionnent de manière similaire. Si vous décidez d'utiliser les deux bases de données dans votre application, gardez à l'esprit les différences décrites précédemment.

En savoir plus sur les fonctionnalités disponibles dans Realtime Database et Cloud Firestore

Prêt à choisir une base de données ?

Nous espérons que cette comparaison vous a aidé à choisir une solution de base de données Firebase. Vous pouvez maintenant apprendre à ajouter une base de données à vos projets Firebase.