交易式寫入
在本教學課程中,我們將說明如何對統計資料執行交易式寫入。根據用來儲存統計資料的程序,開發人員可能會遇到可能導致作業重複的案例,特別是使用 SUM 彙總時。為了處理這些複雜的案例,我們新增了交易式寫入功能。 我們將從一個涉及多人遊戲的範例開始,其中有許多比賽同時進行。此遊戲為每場比賽儲存大量的統計資料和其他遙測值。為了避免干擾玩家體驗,工作室決定每 10 分鐘推送一次統計資料,而不是即時推送。 此做法可確保玩家從一場比賽跳到另一場比賽時有順暢的體驗。不過,它也帶來了新的技術挑戰。我們現在需要一個佇列,每 10 分鐘執行一次要求。但如果我們因為任何原因想要重新播放佇列中的事件,會發生什麼事?那麼我們可能會遇到挑戰,特別是如果我們有使用 SUM 彙總的統計資料,因為我們需要避免重複計算。 了解此背景後,我們將示範如何解決這個特定問題。建立統計資料定義
我們將從建立統計資料定義開始,在此層級,我們不需要為交易式寫入新增任何特殊設定。將資料新增至統計資料
繼續我們的範例,我們將把資料新增至先前定義的統計資料。一般要求與此要求之間的主要差異是特殊的TransactionId 參數。此參數可作為正在執行之要求的識別碼。每次有新要求到達時,系統都會將新的交易識別碼與已處理過的識別碼進行比較。如果找到相符項目,就不會執行該要求。
需要考量的一個關鍵層面是,此交易式行為會在 TransactionId 與正在執行的要求之間建立關聯,而不是與該要求中的個別統計資料建立關聯。沒有針對每個個別統計資料的對應;對應是針對整個要求。此外,使用此功能時,我們有不同的計量來追蹤此類型的要求,請在此深入了解:統計資料計量
Entity:此參數對應於我們想要更新其統計資料的實體。TransactionId:此參數對應於代表要求唯一識別碼的字串。Statistics:此參數對應於實體的實際統計資料集。StatisticUpdate:此參數對應於要新增的統計值。Scores:此參數對應於您可以新增至一個實體的分數清單。請記住,統計資料可以有多個資料行。您可以在此深入查看這些概念:統計資料的進階運用Name:此參數對應於您建立統計資料定義時所設定的統計資料名稱。
