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

Firebase propose deux solutions de base de données basées sur le cloud et accessibles aux clients qui prennent en charge la synchronisation des données en temps réel :

  • Cloud Firestore est la nouvelle base de données Firebase pour le développement d'applications mobiles. Il s'appuie sur les succès de la base de données en temps réel avec un nouveau modèle de données plus intuitif. Cloud Firestore propose également des requêtes plus riches et plus rapides et une évolutivité supérieure à celle de la base de données en temps réel.

  • Base de données en temps réel est la base de données d' origine de Firebase. Il s'agit d'une solution efficace et à faible latence pour les applications mobiles qui nécessitent des états synchronisés entre les clients en temps réel.

Quelle base de données Firebase recommande-t-elle ?

Votre choix de solution de base de données dépendra de nombreux facteurs, mais en ce qui concerne certaines fonctionnalités, nous pouvons vous faire des recommandations sur la base de données qui vous convient.

Les deux solutions offrent :

  • SDK client-first, sans serveurs à déployer et à entretenir
  • Mises à jour en temps réel
  • Niveau gratuit, puis payez pour ce que vous utilisez

Considérations clés

Au-delà des fonctionnalités de base communes aux deux bases de données, réfléchissez à la façon dont tout ou partie des considérations énumérées ci-dessous affecteront le succès de vos applications.

Rôle de la base de données
Mon application utilise une base de données pour...
Principalement la synchronisation des données, avec des requêtes de base.
Si vous n'avez pas besoin d' interrogation avancées, le tri et les transactions, nous recommandons la base de données en temps réel.
Requêtes, tris et transactions avancés.
Si vous avez besoin d' interactions complexes avec vos données, par exemple dans les applications de commerce électronique, nous vous recommandons de nuage Firestore.
Opérations sur les données
L'utilisation de la base de données de mon application ressemble à...
Quelques Go ou moins de données qui changent fréquemment.
Si votre application va envoyer un flux de petites mises à jour, comme dans une application tableau blanc numérique, nous recommandons la base de données en temps réel.
Des centaines de Go à To de données qui sont lues beaucoup plus souvent qu'elles ne sont modifiées.
Pour les jeux de données très volumineux, et lorsque les opérations de traitement par lots sont souvent nécessaires, nous vous recommandons de cloud Firestore.
Modèle de données
Je préfère structurer mes données comme...
Un arbre JSON simple.
Pour JSON données non structurées, nous recommandons la base de données en temps réel.
Documents organisés en collections.
Pour les documents structurés et collections, nous vous recommandons de cloud Firestore.
Disponibilité
Mes besoins de disponibilité sont...
Garantie de disponibilité extrêmement élevée de 99,999 %.
Si la disponibilité est de la plus haute importance, par exemple dans les applications de commerce électronique, nous vous recommandons de nuage Firestore.
Une garantie d'au moins 99,95% de disponibilité.
Quand ils sont très élevés , mais pas la disponibilité critique est acceptable, nous vous recommandons soit - Cloud Firestore ou la base de données en temps réel.
Requêtes hors ligne sur les données locales
Mon application devra effectuer des requêtes sur des appareils avec une connectivité limitée ou inexistante...
Souvent.
Pour des capacités sophistiquées d'interrogation sur les données locales lorsque l'utilisateur est hors ligne, nous vous recommandons de cloud Firestore.
Rarement ou jamais.
Si vous prévoyez que vos utilisateurs constamment en ligne, nous vous recommandons de cloud Firestore ou la base de données en temps réel.
Nombre d'instances de base de données
Dans mes projets individuels, j'ai besoin d'utiliser...
De nombreuses bases de données, par exemple une base de données pour chaque grand client.
Comme il vous permet d' ajouter plusieurs bases de données à un seul projet Firebase, nous recommandons la base de données en temps réel.
Une seule base de données.
Si vous avez besoin d' une base de données unique, nous vous recommandons soit - Cloud Firestore ou la base de données en temps réel.

Quelles sont les autres choses importantes à considérer?

Après avoir réfléchi sur les principales considérations précédentes, vous pourriez être prêt à choisir une base de données . Si vous pesez toujours le pour et le contre, cette section couvre 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.

Base de données en temps réel Cloud Firestore
Stocke les données sous la forme d'une grande arborescence JSON.
  • Les données simples sont très faciles à stocker.
  • Les données complexes et hiérarchiques sont plus difficiles à organiser à grande échelle.

En savoir plus sur le modèle de données de base de données en temps réel .

Stocke les données sous forme de collections de documents.
  • Des données simples sont faciles à stocker dans des documents, qui sont très similaires à JSON.
  • Les données complexes et hiérarchiques sont plus faciles à organiser à grande échelle, en utilisant des 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 .

Assistance en temps réel et hors ligne

Les deux ont des kits de développement logiciel en temps réel axés sur le mobile et prennent tous deux en charge le stockage de données local pour les applications prêtes à l'emploi.

Base de données en temps réel Cloud Firestore
Prise en charge hors ligne des clients iOS et Android. Prise en charge hors ligne des clients iOS, Android et Web.

Présence

Il peut être utile de savoir quand un client est en ligne ou hors ligne. 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.

Base de données en temps réel Cloud Firestore
Présence soutenue. Non pris en charge nativement. Vous pouvez tirer parti de la prise en charge de la présence par Realtime Database en synchronisant Cloud Firestore et Realtime Database à l'aide de Cloud Functions. Voir présence Construire en nuage Firestore .

Interrogation

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

Base de données en temps réel Cloud Firestore
Requêtes profondes avec limitation de tri et de fonctionnalité filtration .
  • Les requêtes peuvent trier ou filtrer sur 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 quelle granularité, jusqu'aux valeurs de nœud feuille individuelles dans l'arborescence JSON.
  • Les requêtes ne nécessitent pas d'index ; cependant, les performances de certaines requêtes se dégradent à mesure que votre ensemble de données augmente.
Indexées requêtes avec le composé de tri et de filtrage .
  • Vous pouvez chaîner des filtres et combiner le filtrage et le tri sur une propriété dans une seule requête.
  • Les requêtes sont superficielles : elles ne renvoient que les documents d'une collection ou d'un groupe de collections particulier et ne renvoient pas de 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.

Écritures et transactions

Base de données en temps réel Cloud Firestore
Opérations d'écriture et de transaction de base.
  • L' écriture de données par le biais des opérations de mise à jour. Ensemble et
  • Les transactions sont atomiques sur un sous - arbre de données spécifique.
Opérations avancées d'écriture et de transaction.
  • Opérations de l' écriture de données par le biais des opérations de réglage et de mise à jour ainsi que des transformations avancées telles que tableau et les opérateurs numériques.
  • Les transactions peuvent atomiquement lire et des données d'écriture à partir d' une partie de la base de données.

Fiabilité et performances

Base de données en temps réel Cloud Firestore
Realtime Database est une solution régionale.
  • Disponible dans des configurations régionales. Les bases de données sont limitées à la disponibilité zonale au sein d'une région.
  • Latence extrêmement faible, option idéale pour une synchronisation d'état fréquente.
En savoir plus sur les performances en temps réel des bases de données et les caractéristiques de fiabilité dans le Service Level Agreement .
Cloud Firestore est une solution régionale et multirégionale qui évolue automatiquement.
  • Héberge vos données dans plusieurs centres de données dans des régions distinctes, garantissant une évolutivité mondiale et une fiabilité élevée.
  • Disponible dans des configurations régionales ou multirégionales dans le monde entier.
En savoir plus sur les performances et les caractéristiques cloud FireStore fiabilité dans l' accord de niveau de service .

Évolutivité

Base de données en temps réel Cloud Firestore
La mise à l'échelle nécessite un sharding.
  • Évoluez jusqu'à environ 200 000 connexions simultanées et 1 000 écritures/seconde dans une seule base de données. La mise à l'échelle au-delà nécessite le partage de 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.
La mise à l'échelle est automatique.
  • Échelle complètement automatiquement. Actuellement, les limites de mise à l'échelle sont d'environ 1 million de connexions simultanées et 10 000 écritures/seconde. Nous prévoyons d'augmenter ces limites à l'avenir.
  • A des limites sur les taux d'écriture à des documents individuels ou des index.

Sécurité

Base de données en temps réel Cloud Firestore
Langage de règles en cascade qui sépare l'autorisation et la validation. Règles non en cascade qui combinent autorisation et validation.
  • Lectures et écritures de mobiles SDKs garantis par nuage FireStore Règles de sécurité .
  • Lit et écrit de SDKs serveur sécurisé par gestion des identités et des accès (IAM) .
  • Les règles ne sont pas en cascade à moins que vous n'utilisiez un caractère générique.
  • Les règles peuvent restreindre 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.

Prix

Les deux solutions sont disponibles sur le plan des prix Spark et Blaze .

Base de données en temps réel Cloud Firestore
Seulement les frais de bande passante et de stockage, mais à un taux plus élevé.

En savoir plus sur en temps réel des plans de tarification de base de données .

Charges principalement sur les opérations effectuées dans votre base de données (lecture, écriture, suppression) et, à un taux inférieur, la bande passante et le stockage.

Cloud Firestore soutient quotidiennement les limites de dépenses pour les projets App Engine, pour vous assurer que vous ne dépassez pas les coûts que vous êtes à l' aise avec.

En savoir plus sur les plans de tarification Nuage FireStore .

Utiliser Cloud Firestore et la base de données en temps réel

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 ci - dessus si vous décidez d' utiliser les deux bases de données dans votre application .

En savoir plus sur les fonctionnalités disponibles dans les deux bases de données en temps réel et Nuage Firestore .

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

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.