Choisir entre le mode natif et le mode Datastore

Lorsque vous créez une base de données Firestore, vous pouvez configurer l'instance de base de données pour qu'elle s'exécute en mode Datastore. Cela permet d'assurer la rétrocompatibilité de la base de données avec Datastore. Cette page vous aide à comprendre la différence entre les modes de base de données Firestore suivants: le mode natif et le mode Datastore.

Cloud Firestore en mode natif

Firestore représente la prochaine version majeure de Datastore ainsi qu'une nouvelle image de marque du produit. Tirant parti des meilleures fonctionnalités de Datastore et de Firebase Realtime Database, Firestore est une base de données de documents NoSQL conçue pour le scaling automatique, les hautes performances et le confort de développement des applications.

Firestore introduit les fonctionnalités suivantes:

  • Une couche de stockage à cohérence forte
  • Un modèle de données de collection et de document
  • Mises à jour en temps réel
  • Des bibliothèques clientes mobiles et Web

Même si Firestore est rétrocompatible avec Datastore, ce n'est pas le cas des nouvelles fonctionnalités de modèle de données, de mises à jour en temps réel et de bibliothèques clientes mobiles et Web. Pour accéder à toutes les fonctionnalités de Firestore, vous devez utiliser Firestore en mode natif.

Cloud Firestore en mode Datastore

Firestore en mode Datastore utilise le comportement du système Datastore et parvient à accéder à la couche de stockage de Firestore en supprimant les limitations suivantes relatives à Datastore :

  • Toutes les requêtes Datastore sont désormais fortement cohérentes, sauf si vous demandez explicitement une cohérence à terme.
  • Les requêtes dans les transactions n'ont plus besoin d'être des requêtes ascendantes.
  • Les transactions ne sont plus limitées à 25 groupes d'entités.
  • Les écritures dans un groupe d'entités ne sont plus limitées à 1 par seconde.

Le mode Datastore désactive les fonctionnalités de Firestore qui ne sont pas compatibles avec Datastore :

  • Le projet acceptera les requêtes API Datastore et refusera les requêtes API Firestore.
  • Le projet utilisera les index Datastore au lieu des index Firestore.
  • Vous pouvez utiliser les bibliothèques clientes Datastore dans ce projet, mais pas les bibliothèques clientes Firestore.
  • Les fonctionnalités en temps réel de Firestore ne seront pas disponibles.
  • Dans la console Google Cloud, la base de données utilisera le lecteur Datastore.

Tarifs et emplacements

Les bases de données, qu'elles soient en mode natif ou en mode Datastore, utilisent la même grille tarifaire et sont disponibles aux mêmes emplacements. Les tarifs et les emplacements sont décrits en détail dans les pages suivantes :

Firestore en mode natif

Firestore en mode Datastore

Choisir un mode de base de données

Lorsque vous créez une base de données Firestore, vous devez sélectionner un mode de base de données. Vous pouvez avoir à la fois des bases de données en mode Datastore et en mode natif dans le même projet, mais chaque base de données ne peut être que d'un seul type. Lorsque vous choisissez un mode de base de données, nous vous recommandons de procéder comme suit :

  • Utilisez Firestore en mode Datastore pour les nouveaux projets de serveur.

    Firestore en mode Datastore vous permet d'utiliser les architectures de serveur Datastore établies, tout en supprimant les limitations fondamentales relatives à Datastore. Le mode Datastore peut effectuer un scaling automatique jusqu'à plusieurs millions d'écritures par seconde.

  • Utilisez Firestore en mode natif pour les nouvelles applications mobiles et Web.

    Firestore propose des bibliothèques clientes Web et mobiles avec des fonctionnalités en temps réel et hors ligne. Le mode natif peut effectuer un scaling automatique jusqu'à plusieurs millions de clients simultanés.

Comparatif des fonctionnalités

Le tableau suivant compare le comportement du système pour les modes de base de données :

Cloud Firestore en
mode natif
Firestore en
mode Datastore
Modèle de données Base de données de documents organisée en documents et collections Entités organisées en genres et groupes d'entités
Couche de stockage Une couche de stockage à cohérence forte. Une couche de stockage à cohérence forte.
Requêtes et transactions
  • Requêtes fortement cohérentes sur toute la base de données
  • Supprime les limitations liées à la cohérence de Datastore
  • Requêtes fortement cohérentes sur toute la base de données
  • Les transactions peuvent accéder à n'importe quel nombre de groupes d'entités
Compatibilité avec l'API Datastore v1 Non, les requêtes sont refusées Oui
Compatibilité avec l'API Firestore v1 Oui Non, les requêtes sont refusées
Mises à jour en temps réel

Offre la possibilité d'écouter un document ou un ensemble de documents pour des mises à jour en temps réel

Lors de l'écoute d'un document ou d'un ensemble de documents, vos clients sont informés de toutes les modifications des données et reçoivent l'ensemble de données le plus récent

Non compatible
Persistance des données hors connexion Les bibliothèques clientes Web et mobiles sont compatibles avec la persistance des données hors connexion Non compatible
Bibliothèques clientes Bibliothèques clientes Firestore :
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Bibliothèques clientes Datastore :
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • C++
Sécurité
  • Cloud Identity and Access Management (IAM) s'occupe de l'accès aux bases de données
  • Les règles de sécurité Firestore acceptent l'authentification et l'autorisation sans serveur pour les bibliothèques clientes Web et mobiles
IAM gère l'accès aux bases de données
Performances Effectue un scaling automatique jusqu'à plusieurs millions de clients simultanés. Effectue un scaling automatique jusqu'à plusieurs millions d'écritures par seconde
Contrat de niveau de service Contrat de niveau de service Firestore Contrat de niveau de service Firestore
Emplacements

Les deux modes sont compatibles avec les mêmes emplacements. Pour obtenir une liste détaillée des pays et régions, consultez les pages suivantes:

Tarifs

Les deux modes utilisent la même grille tarifaire pour les opérations d'entité et de document.

Firestore en mode Datastore ne facture pas les opérations mineures.

Les deux modes utilisent la même grille tarifaire pour les données stockées et la bande passante réseau.

Pour en savoir plus sur les tarifs, consultez les pages suivantes:

Console Console Firebase et lecteur Firestore de la console Google Cloud Lecteur Datastore de la console Google Cloud
Espaces de noms Non compatible Espaces de noms acceptés
Intégration de la bibliothèque cliente App Engine

Non compatible avec les environnements d'exécution standards Python 2.7 et PHP 5.5 d'App Engine

Compatible avec l'environnement standard App Engine, tous les autres environnements d'exécution

Compatible avec l'environnement flexible App Engine, tous les environnements d'exécution

Compatible avec tous les environnements d'exécution

Créer une base de données

Vous pouvez créer une base de données Firestore en mode natif ou en mode Datastore. Ce choix ne dépend pas des modes des bases de données existantes de votre projet.

Pour en savoir plus, consultez Créer et gérer des bases de données.

Basculer entre le mode natif et le mode Datastore

Si votre base de données est vide, vous pouvez passer du mode natif au mode Datastore.

Définissez la base de données sur le mode natif:

gcloud

Utilisez la commande gcloud firestore databases update pour passer votre base de données en mode natif.

gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'

Remplacez DATABASE_ID par l'ID de votre base de données.

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • DATABASE_ID: ID de la base de données

Définissez la base de données sur le mode Datastore:

gcloud

Utilisez la commande gcloud firestore databases update pour passer votre base de données en mode Datastore.

 gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'

Remplacez DATABASE_ID par l'ID de votre base de données.

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • DATABASE_ID: ID de la base de données