Passer au contenu principal

É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écial TransactionId. 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
Expliquons maintenant certains éléments clés de cet exemple :
  • 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 statistiques
    • Name : ce paramètre correspond au nom de statistique défini lors de la création de la définition de statistique.
Ces concepts étant clairs, vous êtes prêt à ajouter des données à votre statistique en évitant toute duplication de vos requêtes.

Voir aussi

Dernière modification le 8 octobre 2026