Basis data relasional akhir-akhir ini mengetuk karena tidak efisien, tetapi ketika menyimpan jenis log yang Anda bicarakan, Anda tidak benar-benar membutuhkan efisiensi karena mereka tidak akan selalu diakses oleh permainan atau penggunanya - hanya tim Anda yang akan membutuhkan untuk membaca data.
Jadi "efisiensi" tidak masalah. Yang lebih penting adalah memesan data dengan cara yang membuatnya mudah untuk menceritakan kisah tentang apa yang dilakukan pengguna dalam game. Pengembang Anda biasanya perlu menggunakan data ini dan menampilkannya dalam antarmuka yang mudah dibaca karena analis dan analis terkadang perlu meminta data untuk menggali lebih dalam perilaku pengguna. Misalnya, jika pemain membeli item tertentu sebelum pembaruan, tetapi berhenti membelinya setelah pembaruan, analis akan mendapat manfaat dengan menulis pertanyaan tertentu yang mengekspos angka-angka tertentu tentang perilaku di sekitar pembelian untuk menentukan mengapa pengguna tidak lagi membelinya. Paling baik jika mereka memiliki bahasa permintaan standar untuk bekerja dengan yang didokumentasikan dengan baik. Jika mereka harus membuat kueri ini menjadi format biner khusus, pekerjaan mereka akan menjadi JAUH lebih sulit,
Umumnya acara permainan terlihat seperti ini (ini adalah format DeltaDNA khususnya)
{
"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"]
},
}
Acara biasanya menyertakan nama acara, ID pengguna, ID sesi, cap waktu, dan parameter yang memungkinkan Anda untuk merekam data apa pun yang menurut Anda berguna untuk direkam di sekitar acara tersebut. Dan dalam pengalaman saya, format basis data relasional adalah yang terbaik untuk merekam struktur seperti itu.