Skip to main content

Escrituras transaccionales

En este tutorial, vamos a explicar cómo realizar una escritura transaccional en una estadística. Según el proceso utilizado para almacenar estadísticas, los desarrolladores pueden encontrarse con escenarios que podrían dar lugar a la duplicación de una operación, en particular con la agregación SUM. Para abordar estos escenarios complejos, agregamos la característica de escritura transaccional. Vamos a comenzar con un ejemplo de un juego multijugador con muchas partidas jugándose simultáneamente. Este juego almacena una gran cantidad de estadísticas y otros valores de telemetría para cada partida. Para evitar interrumpir la experiencia de los jugadores, el estudio decidió enviar las estadísticas cada 10 minutos en lugar de en tiempo real. Este enfoque garantiza una experiencia fluida para los jugadores que pasan de una partida a otra. Sin embargo, introduce nuevos desafíos técnicos. Ahora necesitamos una cola para ejecutar solicitudes cada 10 minutos. Pero ¿qué sucede si queremos reproducir de nuevo los eventos de la cola por cualquier motivo? Entonces podríamos tener un desafío, especialmente si tenemos estadísticas con agregación SUM, ya que necesitamos evitar el recuento doble. Con este contexto en mente, vamos a mostrar cómo resolver este problema concreto.

Creación de una definición de estadística

Vamos a comenzar creando una definición de estadística; a este nivel no necesitamos agregar ninguna configuración especial para las escrituras transaccionales.

Adición de datos a una estadística

Siguiendo con nuestro ejemplo, vamos a agregar datos a la estadística definida anteriormente. La diferencia clave entre una solicitud normal y esta es el parámetro especial TransactionId. Este parámetro sirve como identificador de la solicitud que se está ejecutando. Cada vez que llega una nueva solicitud, el sistema compara los nuevos identificadores de transacción con los identificadores que ya se procesaron. Si se encuentra una coincidencia, la solicitud no se va a ejecutar. Un aspecto clave a tener en cuenta es que este comportamiento transaccional establece una relación entre el TransactionId y la solicitud que se está ejecutando, no con las estadísticas individuales dentro de esa solicitud. No hay una asignación para cada estadística individual; la asignación es para toda la solicitud. Además, cuando se usa esta característica, tenemos un medidor diferente para realizar el seguimiento de este tipo de solicitudes; obtenga más información aquí: Medidores de estadísticas
Ahora, expliquemos algunos elementos clave de este ejemplo:
  • Entity: Este parámetro corresponde a la entidad desde la que queremos realizar la actualización de la estadística.
  • TransactionId: Este parámetro corresponde a una cadena que representa un identificador único de la solicitud.
  • Statistics: Este parámetro corresponde al conjunto real de estadísticas de una entidad.
  • StatisticUpdate: Este parámetro corresponde a los valores de estadísticas que se van a agregar.
    • Scores: Este parámetro corresponde a la lista de puntuaciones que puede agregar a una entidad. Recuerde que las estadísticas pueden tener más de una columna. Puede consultar estos conceptos en profundidad aquí: Más operaciones con estadísticas
    • Name: Este parámetro corresponde al nombre de la estadística establecido al crear la definición de estadística.
Con estos conceptos claros, ya está listo para agregar datos a su estadística y evitar cualquier duplicación en sus solicitudes.

Consulte también

Última modificación el 28 de agosto de 2026