最近のリレーショナルデータベースは非効率であるためにノックされていますが、話している種類のログを保存する場合、ゲームやそのユーザーが絶えずアクセスすることはないため、効率は必要ありません。チームだけが必要になります。データを読み取ります。
したがって、「効率」はそれほど重要ではありません。さらに重要なのは、ゲームでユーザーが何をしているかのストーリーを簡単に伝えることができるようにデータを順序付けることです。通常、開発者はこのデータを使用して、アナリストにとって読みやすいインターフェイスに表示する必要があり、アナリストはデータをクエリしてユーザーの行動を詳しく調べる必要がある場合があります。たとえば、プレーヤーが更新前に特定のアイテムを購入しているが、更新後に購入を停止した場合、アナリストは、その購入を取り巻く行動に関する特定の数値を公開する特定のクエリを作成して、ユーザーがそれを購入しなくなった理由を判断することで利益を得ます。よく文書化されている標準のクエリ言語を使用するのが最善です。これらのクエリをカスタムバイナリ形式に変換する必要がある場合、ジョブはさらに難しくなります。
通常、ゲームイベントは次のようになります(これは特にDeltaDNAの形式です)
{
"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"]
},
}
イベントには通常、イベント名、ユーザーID、セッションID、タイムスタンプ、およびそのイベントを記録するのに役立つと思われるデータを記録できるパラメーターが含まれています。そして、私の経験では、このような構造を記録するにはリレーショナルデータベース形式が最適です。