Pular para o conteúdo principal

Gravações transacionais

Neste tutorial, vamos explicar como executar uma gravação transacional em uma estatística. Dependendo do processo usado para armazenar as estatísticas, os desenvolvedores podem encontrar cenários que resultem na duplicação de uma operação, em particular com a agregação SUM. Para lidar com esses cenários complexos, adicionamos o recurso de gravação transacional. Vamos começar com um exemplo envolvendo um jogo multijogador com muitas partidas sendo jogadas simultaneamente. Esse jogo armazena um grande número de estatísticas e outros valores de telemetria para cada partida. Para evitar prejudicar a experiência do jogador, o estúdio decidiu enviar as estatísticas a cada 10 minutos, em vez de em tempo real. Essa abordagem garante uma experiência contínua para os jogadores que passam de uma partida para outra. No entanto, ela introduz novos desafios técnicos. Agora precisamos de uma fila para executar as solicitações a cada 10 minutos. Mas o que acontece se quisermos reproduzir os eventos da fila por algum motivo? Nesse caso, podemos ter um desafio, especialmente se tivermos estatísticas com agregação SUM, pois precisamos evitar a contagem dupla. Com esse contexto em mente, vamos mostrar como resolver esse problema específico.

Criando uma definição de estatística

Vamos começar criando uma definição de estatística; neste nível, não precisamos adicionar nenhuma configuração especial para as gravações transacionais.

Adicionando dados a uma estatística

Continuando com nosso exemplo, vamos adicionar dados à estatística definida anteriormente. A principal diferença entre uma solicitação normal e esta é o parâmetro especial TransactionId. Esse parâmetro serve como um identificador da solicitação que está sendo executada. Sempre que uma nova solicitação chega, o sistema compara as novas IDs de transação com os identificadores que já foram processados. Se for encontrada uma correspondência, a solicitação não será executada. Um aspecto importante a considerar é que esse comportamento transacional estabelece uma relação entre o TransactionId e a solicitação que está sendo executada, e não com as estatísticas individuais dessa solicitação. Não há um mapeamento para cada estatística individual; o mapeamento é para a solicitação inteira. Além disso, quando esse recurso está sendo usado, temos um medidor diferente para acompanhar esse tipo de solicitação; saiba mais aqui: Medidores de estatísticas
Agora, vamos explicar alguns elementos principais deste exemplo:
  • Entity: este parâmetro corresponde à entidade a partir da qual queremos fazer a atualização da estatística.
  • TransactionId: este parâmetro corresponde a uma cadeia de caracteres que representa um identificador exclusivo da solicitação.
  • Statistics: este parâmetro corresponde ao conjunto real de estatísticas de uma entidade.
  • StatisticUpdate: este parâmetro corresponde aos valores das estatísticas que serão adicionados.
    • Scores: este parâmetro corresponde à lista de pontuações que você pode adicionar a uma entidade. Lembre-se de que as estatísticas podem ter mais de uma coluna. Você pode conferir esses conceitos em detalhes aqui: Fazendo mais com estatísticas
    • Name: este parâmetro corresponde ao nome da estatística definido ao criar a definição de estatística.
Com esses conceitos claros, agora você está pronto para adicionar dados à sua estatística e evitar qualquer duplicação nas suas solicitações.

Confira também

Última modificação em 8 de outubro de 2026