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 |
|
|
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 |
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 :
|
Bibliothèques clientes Datastore :
|
Sécurité |
|
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