Maison >interface Web >js tutoriel >Comment maintenir la cohérence des données dans la dénormalisation de Firebase ?

Comment maintenir la cohérence des données dans la dénormalisation de Firebase ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 13:13:18585parcourir

How to Maintain Data Consistency in Firebase Denormalization?

Maintenir la cohérence des données dans la dénormalisation de Firebase

Lors de l'écriture de données sur Firebase à plusieurs emplacements pour une récupération plus rapide, il est crucial de maintenir la cohérence des données dans tous emplacements. Voici deux approches pour y parvenir :

Écritures atomiques

Firebase fournit désormais un moyen d'effectuer des écritures atomiques sur plusieurs chemins simultanément. À l'aide de la méthode multipathWrites, vous pouvez mettre à jour plusieurs emplacements en une seule opération.

let updates = {}; // all paths to be updated and their new values
updates['users/'+uid+'/name'] = name;
var query = ref.child('messages').orderByChild('user').equalTo(uid);
query.once('value', function(snapshot) {
  snapshot.forEach(function(messageSnapshot) {
    updates['messages/'+messageSnapshot.key()+'/username'] = name;
  })
  ref.update(updates);
});

Cohérence éventuelle

Cette approche implique la mise à jour asynchrone des données dupliquées. Tout d’abord, mettez à jour la source principale de données (par exemple, le profil de l’utilisateur). Ensuite, recherchez toutes les instances des données dupliquées (par exemple, les messages contenant le nom de l'utilisateur) et mettez-les à jour une par une.

ref.child('users').child(uid).update({ name: name });
var query = ref.child('messages').orderByChild('user').equalTo(uid);
query.once('value', function(snapshot) {
  snapshot.forEach(function(messageSnapshot) {
    messageSnapshot.update({ username: name });
  })
});

Conseils pour la cohérence des données

  • Utiliser des références en lecture seule : Créer des références à des données dénormalisées à partir d'une source en lecture seule (par exemple, un ensemble de règles qui autorise uniquement les lectures) pour empêcher les écritures involontaires.
  • Surveiller les modifications des données : Écoutez les modifications apportées à la source principale de données et déclenchez les mises à jour des données dupliquées de manière asynchrone.
  • Évitez de vous fier uniquement aux données dénormalisées : Comprenez que les données dénormalisées ne sont pas toujours à jour, complétez-le donc par des requêtes sur la source de données principale si nécessaire.

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!

Déclaration:
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