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

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

  • Cloud Firestore est la base de données de documents compatible avec JSON de niveau professionnel recommandée, approuvée par plus de 250 000 développeurs. Il convient aux applications dotées de modèles de données riches nécessitant une interrogabilité, 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 êtes peut-être prêt à choisir une base de données. Si vous évaluez toujours 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 tous deux des bases de données NoSQL.

Cloud Firestore [ PREFERRED ] 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 au format JSON.
  • Les données hiérarchiques complexes sont plus faciles à organiser à grande échelle à l'aide de sous-collections dans des 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 la forme d'un grand arbre JSON.
  • Les données simples sont très faciles à stocker.
  • Les données hiérarchiques complexes sont plus difficiles à organiser à grande échelle.

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

Fonctionnement 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 de données local pour les applications compatibles avec le mode hors connexion.

Cloud Firestore [ PREFERRED ] Realtime Database
Compatibilité hors connexion avec les clients Apple, Android et Web. Fonctionnement 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 [ PREFERRED ] Realtime Database
Non compatible en mode natif. Vous pouvez exploiter 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. Présence compatible.

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 [ PREFERRED ] 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écifique, et non les données de sous-collection.
  • 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 votre ensemble de résultats, et non à votre 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 en fonction d'une propriété, mais pas les deux à la fois.
  • Les requêtes sont profondes par défaut: elles renvoient toujours l'ensemble du sous-arbre.
  • Les requêtes peuvent accéder aux données avec n'importe quel niveau de précision, jusqu'aux valeurs individuelles de nœuds feuilles dans l'arborescence JSON.
  • Les requêtes ne nécessitent pas d'index. Toutefois, les performances de certaines requêtes diminuent à mesure que votre ensemble de données augmente.

Écritures et transactions

Cloud Firestore [ RECOMMANDÉ ] Realtime Database
Opérations d'écriture et de transaction avancées
  • Écriture d'opérations de données via des opérations d'ensemble et de mise à jour, ainsi que des transformations avancées telles que des opérateurs numériques et de tableau.
  • Les transactions peuvent lire et écrire de manière atomique des données 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 [ RECOMMANDÉ ] Realtime Database
Cloud Firestore est une solution régionale et multirégionale qui s'adapte automatiquement.
  • Solution à faible latence, avec des temps de réponse typiques inférieurs à 30 ms
  • héberge vos données dans plusieurs centres de données situés dans des régions distinctes, garantissant une évolutivité mondiale et une grande fiabilité.
  • Disponible dans des configurations régionales ou multirégionales dans le monde entier.
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. Option idéale pour la synchronisation d'état fréquente.
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 [ PREFERRED ] Realtime Database
Performances de disponibilité extrêmement élevées.
  • Performances de temps d'activité types de 99,999%.
  • Si la disponibilité est de la plus haute importance, par exemple dans les applications d'e-commerce, utilisez Cloud Firestore.
Haute disponibilité
  • Disponibilité habituelle de 99,95%.

Évolutivité

Cloud Firestore [ PREFERRED ] Realtime Database
Le scaling est automatique.
  • Il est entièrement automatisé. Les limites de scaling sont d'environ un million de connexions simultanées et 10 000 écritures/seconde. Nous prévoyons d'augmenter ces limites à l'avenir.
  • Limite les taux d'écriture sur des documents ou des index individuels.
Le scaling nécessite la segmentation.
  • Évoluez jusqu'à environ 200 000 connexions simultanées et 1 000 écritures/seconde dans une seule base de données. Pour aller au-delà, vous devez fractionner vos données sur plusieurs bases de données.
  • Aucune limite locale sur les taux d'écriture sur des éléments de données individuels.

Sécurité

Cloud Firestore [ PREFERRED ] Realtime Database
Règles non en cascade qui combinent l'autorisation et la validation.
  • Lecture et écriture à partir de SDK mobiles sécurisés par Cloud Firestore Security Rules.
  • Lecture et écriture à partir de SDK de 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 et la validation.

Tarifs

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

Cloud Firestore [ PREFERRED ] Realtime Database
Les frais sont principalement facturés en fonction des opérations effectuées dans votre base de données (lecture, écriture, suppression) et, à un tarif inférieur, de la bande passante et de l'espace de stockage.

Cloud Firestore accepte les plafonds de dépenses quotidiens pour les projets App Engine afin de vous assurer de ne pas dépasser les coûts que vous acceptez.

En savoir plus sur les forfaits Cloud Firestore

Ne facture que la bande passante et le stockage, mais à un tarif 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. Gardez à l'esprit les différences décrites précédemment si vous décidez d'utiliser les deux bases de données dans votre application.

Apprenez-en 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 découvrir comment ajouter une base de données à vos projets Firebase.