全部產品
Search
文件中心

Simple Log Service:定時SQL Exactly-Once

更新時間:Mar 14, 2026

Log Service定時SQL保證每次任務的計算結果都以Exactly-Once方式寫入到目標存放庫(LogStore和MetricStore),確保資料不會重複寫入,也不會丟失。Log Service基於LogStore的等冪寫入來實現定時SQL結果資料的Exactly-Once。

說明

本文內容適用於LogStore和MetricStore,僅以LogStore為例進行說明。

背景資訊

Log ServiceLogStore中包含多個Shard,每個Shard對應一個Hash Key區間(左閉右開)。您可通過負載平衡模式或者指定Hash Key的模式寫資料到LogStore,資料最終落到某個Hash Key中。更多資訊,請參見分區(Shard)

  • 負載平衡模式:每個資料包隨機寫入當前可用的Shard中。

  • 指定Hash Key模式(等冪寫入):指定Hash Key的範圍,資料將被寫入包含該Hash Key範圍的Shard中。

Exactly-Once

等冪寫入

Log Service通過指定hash keysequence id,實現資料的等冪寫入。

  • hash key用於指定資料寫入的Hash Key範圍。

  • sequence id用於指定待寫入資料在該Hash Key中的ID。

    您需保證Sequence ID單調增長,進而保證資料的等冪寫入,避免寫入任務多次重試時導致資料重複。

    • 當您將資料寫入到相同的Hash Key中時,如果待寫入資料的Sequence ID小於等於Hash Key中記錄的最近一次寫入的資料的Sequence ID,則Log Service將拒絕資料寫入並返回錯誤。

    • 當您將資料寫入到相同的Hash Key中時,如果待寫入資料的Sequence ID大於Hash Key中記錄的最近一次寫入的資料的Sequence ID,則Log Service將允許資料寫入,並更新Hash Key中的Sequence ID。

    等冪寫入

基於等冪寫入的定時SQL Exactly-Once

定時SQL採用等冪寫入方式向目標LogStore寫資料。在等冪寫入方式的基礎上,定時SQL會為每次任務的計算結果產生具有以下特性的Hash Key以及Sequence ID,從而實現Exactly-Once寫入。

  • 為兩個不同的定時SQL任務執行個體產生不同的Hash Key。

    當多個定時SQL任務向同一個LogStore寫入資料時,定時SQL會為各個任務產生不同的Hash Key,避免Sequence ID衝突。

  • 為同一個定時SQL任務中的不同執行個體產生遞增的Sequence ID。

Exactly-Once

重要

當您通過以下方式向同一個LogStore中的同一個Hash Key寫入資料時,可能出現Sequence ID衝突,導致其中一方寫入資料失敗,引起資料缺失問題。

  • 通過API或SDK寫入資料,並指定hash key參數和sequence id參數。

  • 通過Logtail寫入資料,並開啟ExactlyOnce功能。具體操作,請參見Logtail配置(舊版)

  • 通過定時SQL任務寫入資料。