Maison > développement back-end > Golang > Client Firestore dans Google App Engine : par requête ou global ?

Client Firestore dans Google App Engine : par requête ou global ?

Linda Hamilton
Libérer: 2024-11-25 11:45:15
original
567 Les gens l'ont consulté

Firestore Client in Google App Engine: Per-Request or Global?

Création d'un client Firestore dans Google App Engine : par requête ou globale ?

Conscience du contexte dans Google App Engine

Google App Engine (GAE) suggère d'utiliser un context.Context limité à la requête HTTP pour chaque bibliothèque cliente. Cela garantit que le client est lié à la demande spécifique, fournissant des données spécifiques au contexte pour les opérations de base de données.

Par demande par rapport au client global

Approche par demande :

Dans l'exemple fourni, un nouveau client Firestore est créé dans la fonction de gestionnaire pour chaque request :

func (s *server) person(ctx context.Context, id int) {
    _, err := s.db.Client.Collection("people").Doc(uid).Set(ctx, p)
}
Copier après la connexion

Bien que cette approche garantisse que le client est isolé de la requête en cours, elle peut être inefficace et introduire une surcharge inutile, en particulier pour les requêtes de longue durée ou les opérations à haute fréquence.

Approche client globale :

Une approche alternative consiste à créer un seul client Firestore global et à le réutiliser pour plusieurs requêtes. Cependant, cela n'était pas réalisable dans l'ancien runtime Go dans GAE.

Nouveau runtime Go 1.11

Avec l'introduction du runtime Go 1.11 pour la norme GAE, les restrictions de portée contextuelle ont été assouplies. Cela vous permet désormais d'utiliser le contexte de votre choix.

Bonnes pratiques pour Go 1.11 et Firestore

Dans le nouveau runtime standard GAE, il est recommandé de :

  1. Initialisez le client Firestore dans la fonction main() ou init() en utilisant l'arrière-plan context :

    func init() {
     var err error
     client, err = firestore.NewClient(context.Background())
    }
    Copier après la connexion
  2. Dans les gestionnaires de requêtes, utilisez le contexte de requête pour les appels d'API :

    func handleRequest(w http.ResponseWriter, r *http.Request) {
     doc := client.Collection("cities").Doc("Mountain View")
     doc.Set(r.Context(), someData)
    }
    Copier après la connexion

En suivant ces bonnes pratiques, vous pouvez profiter des gains d'efficacité fournis en réutilisant un client Firestore global tout en conservant le contexte spécifique à la demande dans vos opérations de base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal