唯一識別碼指的是:從一筆資料裡挑出幾個欄位組合起來,構成一個能夠精確代表這筆資料、而且不會跟其他資料重複的標記——例如把日期、商家、金額組合成「20260315-星巴克-185」。這個標記的核心特性是穩定性:同一筆資料不管被處理一次還是好幾次,算出來的識別碼都完全一樣,這個特性正是 idempotent task design 之所以能落地的技術基礎——冪等設計要求「同一筆資料重複處理,結果要一樣」,而唯一識別碼提供了判斷「這是不是同一筆資料」的具體方法,沒有唯一識別碼,冪等設計就只是一個原則,沒有辦法真正被執行。
這個技術手段會被需要,是因為「這兩筆資料是不是同一筆」這個問題,對電腦來說不是一個可以直接回答的問題——電腦不會自動理解「這張收據」跟「剛才那張收據」指的是同一個東西,除非有一個明確的規則告訴它該比對什麼。人腦可以憑印象、憑上下文判斷兩筆資料是不是重複,但這個判斷過程沒辦法直接寫成程式邏輯,需要先轉換成一個具體、可比較的標記。唯一識別碼存在的理由,就是把人腦裡模糊的「這是同一筆」判斷,轉換成電腦可以直接比對字串是否相等的具體操作,讓冪等設計、批次去重複這類需要判斷「重複」的機制,有一個可以實際執行的技術基礎。
實務上有兩個關鍵決定影響識別碼的可靠度。第一,選對欄位組合:識別碼要選真正能唯一代表一筆資料、而且彼此組合起來不容易撞衫的欄位。以收據為例,「日期加金額」看似夠用,但同一天可能有多筆金額剛好相同的不同交易,這時候識別碼會誤判成重複,把不該篩掉的紀錄篩掉了;加上商家名稱通常能大幅降低這種衝突機率。欄位選擇沒有放諸四海皆準的公式,要根據實際資料的重複風險去調整,資料愈可能有巧合重複的情況,識別碼就需要包含愈多能夠區分的欄位。第二,處理輸入誤差:如果同一筆資料因為辨識或輸入誤差,兩次產生的內容有些微不同(例如金額被讀成 185 跟 158),計算出來的識別碼會不一樣,比對機制不會判斷這是重複——這是識別碼機制本身的限制,沒辦法在設計識別碼規則時完全解決,需要搭配額外的人工抽查來補足。
Stripe 官方 API 文件裡建議使用者在每次支付請求中附上一組稱為冪等鍵(idempotency key)的唯一識別碼,通常由商家自行生成一組不會重複的字串(例如訂單編號加時間戳記),伺服器收到相同識別碼的請求時,會直接回傳第一次處理的結果而不會重複扣款;這個機制正是唯一識別碼在真實金融交易場景裡的具體應用,說明識別碼的設計必須確保在該業務情境下不會有兩筆不同的合法交易產生相同的碼。
優點是把模糊的「重複判斷」轉換成電腦可以自動執行的具體比對,是冪等設計、批次去重複這類機制的技術基礎,設定成本低、後續執行幾乎零成本;缺點是欄位選擇需要對實際資料特性有一定理解,選錯容易誤判,而且識別碼機制本身只能抓完全相同的重複,抓不到因誤差產生的相似重複,仍需人工抽查搭配。