トランザクション書き込み
このチュートリアルでは、統計情報に対してトランザクション書き込みを実行する方法について説明します。統計情報を保存するために使用するプロセスによっては、特に SUM 集計に関して、操作が重複する可能性のあるシナリオに遭遇することがあります。これらの複雑なシナリオに対処するために、トランザクション書き込み機能を追加しました。 多くのマッチが同時にプレイされているマルチプレイヤーゲームの例から始めます。このゲームは、各マッチに対して大量の統計情報とその他のテレメトリ値を保存します。プレイヤーエクスペリエンスを妨げないために、スタジオはリアルタイムではなく 10 分ごとに統計情報をプッシュすることに決めました。 このアプローチにより、あるマッチから別のマッチへと移動するプレイヤーにシームレスなエクスペリエンスが確保されます。しかし、新しい技術的課題が生じます。10 分ごとにリクエストを実行するためのキューが必要になります。しかし、何らかの理由でキュー内のイベントを再生したい場合はどうなるでしょうか?その場合、特に SUM 集計を持つ統計情報がある場合、二重カウントを避ける必要があるため、課題が発生する可能性があります。 このコンテキストを念頭に置いて、この特定の問題を解決する方法を示します。統計情報の定義を作成する
まずは統計情報の定義を作成します。このレベルでは、トランザクション書き込みのために特別な設定を追加する必要はありません。統計情報にデータを追加する
例を続けて、先に定義した統計情報にデータを追加します。通常のリクエストとこのリクエストの主な違いは、特別なTransactionId パラメーターです。このパラメーターは、実行中のリクエストの識別子として機能します。新しいリクエストが到着するたびに、システムは新しいトランザクション ID と既に処理された識別子を比較します。一致するものが見つかった場合、リクエストは実行されません。
考慮すべき重要な側面として、このトランザクション動作は TransactionId と実行中のリクエストの間に関係を確立するもので、そのリクエスト内の個々の統計情報とではないことです。個々の統計情報ごとにマッピングがあるわけではなく、マッピングはリクエスト全体に対するものです。また、この機能を使用する場合、この種類のリクエストを追跡するための別のメーターがあります。詳細については、こちらをご覧ください: 統計情報メーター
Entity: このパラメーターは、統計情報を更新したいエンティティに対応します。TransactionId: このパラメーターは、リクエストの一意の識別子を表す文字列に対応します。Statistics: このパラメーターは、エンティティの実際の統計情報のセットに対応します。StatisticUpdate: このパラメーターは、追加される統計情報の値に対応します。Scores: このパラメーターは、1 つのエンティティに追加できるスコアのリストに対応します。統計情報には複数の列があることを覚えておいてください。これらの概念については、こちらで詳しく確認できます: 統計情報でさらに多くのことを行うName: このパラメーターは、統計情報の定義を作成したときに設定した統計情報の名前に対応します。
