Las bases de datos relacionales en estos días se ven afectadas por ser ineficientes, pero al almacenar el tipo de registros del que estás hablando, realmente no necesitas eficiencia porque el juego o sus usuarios no tendrán acceso constante a ellos, solo tu equipo necesitará para leer los datos
Así que la "eficiencia" no importa tanto. Lo que más importa es ordenar los datos de una manera que facilite contar la historia de lo que los usuarios están haciendo en el juego. Sus desarrolladores generalmente necesitarán consumir estos datos y mostrarlos en una interfaz que sea fácil de leer para los analistas y los analistas a veces necesitarán consultar los datos para profundizar en el comportamiento del usuario. Por ejemplo, si los jugadores compran un determinado artículo antes de una actualización, pero dejan de comprarlo después de una actualización, un analista se beneficiará escribiendo ciertas consultas que expongan ciertos números sobre el comportamiento que rodea esa compra para determinar por qué los usuarios ya no lo compran. Es mejor si tienen un lenguaje de consulta estándar para trabajar que esté bien documentado. Si tienen que hacer estas consultas en un formato binario personalizado, sus trabajos serán MUCHO más difíciles,
En general, los eventos del juego se parecen a esto (este es el formato de DeltaDNA en particular)
{
"eventName":"specific event code – eg. gameStarted",
"userID":"ABCD1-4321a879b185fcb9c6ca27abc5387e914",
"sessionID":"4879bf37-8566-46ce-9f3b-bd18d6ac614e",
"eventTimestamp":"yyyy-mm-dd hh:mm:ss.SSS",
"eventParams":
{
"platform":"WEB",
"param1":"stringParam",
"param2":true,
"param3":1234,
"param4":["a","b","c"]
},
}
El evento generalmente incluye un nombre de evento, una ID de usuario, una ID de sesión, marca de tiempo y parámetros que le permiten registrar cualquier dato que encuentre útil para registrar alrededor de ese evento. Y en mi experiencia, los formatos de bases de datos relacionales son los mejores para registrar dicha estructura.