Maison >interface Web >js tutoriel >Comment puis-je synchroniser les données dénormalisées dans Firebase pour maintenir l'intégrité des données ?

Comment puis-je synchroniser les données dénormalisées dans Firebase pour maintenir l'intégrité des données ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 21:30:41118parcourir

How Can I Synchronize Denormalized Data in Firebase to Maintain Data Integrity?

Synchronisation des données dénormalisées dans Firebase

Garantir l'intégrité des données dans une base de données Firebase dénormalisée est crucial pour maintenir la cohérence entre plusieurs emplacements. Voici trois approches pratiques pour synchroniser les données dénormalisées :

Mise à jour transactionnelle

L'utilisation des écritures multi-chemins vous permet de mettre à jour plusieurs chemins de manière atomique. Par exemple, lorsque vous mettez à jour le nom d'un utilisateur dans son profil, vous pouvez simultanément mettre à jour le nom d'utilisateur dans tous les messages associés à cet utilisateur :

var 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

Si le maintien de la cohérence instantanée des données est Moins critique, vous pouvez utiliser un script côté serveur pour mettre à jour les données de manière asynchrone. Cette approche garantit une cohérence éventuelle, car la base de données finira par rattraper son retard et refléter les valeurs correctes.

function renameUser(ref, uid, name) {
  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 });
    })
  });
}

Ne s'en soucie pas

Dans certains cas, il peut ne pas être nécessaire de maintenir la cohérence entre les données dupliquées. données. Par exemple, dans une application de chat, il peut être acceptable d'afficher le nom de l'utilisateur tel qu'il était au moment de l'envoi d'un message, plutôt que de mettre à jour tous les messages passés pour refléter le nom actuel.

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