Écritures transactionnelles
Dans ce tutoriel, nous allons expliquer comment effectuer une écriture transactionnelle dans une statistique. Selon le processus utilisé pour stocker les statistiques, les développeurs peuvent rencontrer des scénarios susceptibles d’entraîner la duplication d’une opération, en particulier avec l’agrégation SUM. Pour gérer ces scénarios complexes, nous avons ajouté la fonctionnalité d’écriture transactionnelle. Nous allons commencer par un exemple portant sur un jeu multijoueur dans lequel de nombreuses parties se déroulent simultanément. Ce jeu stocke un grand nombre de statistiques et d’autres valeurs de télémétrie pour chaque partie. Pour ne pas perturber l’expérience des joueurs, le studio a décidé d’envoyer les statistiques toutes les 10 minutes plutôt qu’en temps réel. Cette approche garantit une expérience fluide aux joueurs qui enchaînent les parties. Toutefois, elle introduit de nouveaux défis techniques. Nous avons désormais besoin d’une file d’attente pour exécuter les requêtes toutes les 10 minutes. Mais que se passe-t-il si nous voulons rejouer les événements de la file d’attente pour une raison quelconque? Nous risquons alors de rencontrer un problème, en particulier si nous avons des statistiques utilisant l’agrégation SUM, car nous devons éviter de compter deux fois les mêmes valeurs. Dans ce contexte, nous allons montrer comment résoudre ce problème particulier.Création d’une définition de statistique
Nous allons commencer par créer une définition de statistique; à ce stade, nous n’avons besoin d’ajouter aucune configuration particulière pour les écritures transactionnelles.Ajout de données à une statistique
Pour poursuivre notre exemple, nous allons ajouter des données à la statistique définie précédemment. La principale différence entre une requête normale et celle-ci réside dans le paramètre spécialTransactionId. Ce paramètre sert
d’identificateur de la requête exécutée. Chaque fois qu’une nouvelle requête arrive, le système compare les nouveaux
ID de transaction aux identificateurs déjà traités. En cas de correspondance, la requête n’est pas exécutée.
Un aspect clé à prendre en compte est que ce comportement transactionnel établit une relation entre le
TransactionId et la requête exécutée, et non avec les statistiques individuelles de cette requête.
Il n’existe pas de mappage pour chaque statistique individuelle : le mappage porte sur l’ensemble de la requête. En outre, lorsque cette fonctionnalité
est utilisée, un compteur différent permet de suivre ce type de requêtes; pour en savoir plus : Compteurs des statistiques
Entity: ce paramètre correspond à l’entité pour laquelle nous souhaitons mettre à jour la statistique.TransactionId: ce paramètre correspond à une chaîne qui représente un identificateur unique de la requête.Statistics: ce paramètre correspond à l’ensemble réel des statistiques d’une entité.StatisticUpdate: ce paramètre correspond aux valeurs de statistiques qui vont être ajoutées.Scores: ce paramètre correspond à la liste des scores que vous pouvez ajouter à une entité. N’oubliez pas que les statistiques peuvent comporter plusieurs colonnes. Vous pouvez approfondir ces concepts ici : Aller plus loin avec les statistiquesName: ce paramètre correspond au nom de statistique défini lors de la création de la définition de statistique.
