iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用・114 年第二次・L22・第 18 題

節點錯誤後資料不出現部分更新,這是哪個特性?

原題

某人工智慧團隊使用分散式資料庫(Distributed Database)儲存模型訓練資料,並在更新訓練樣本時啟用多節點交易。若其中一個節點在交易過程中發生錯誤,但系統仍確保整體資料不會出現部分更新、最終狀態維持一致,下列何者最能說明此現象?

白話

AI 團隊的資料庫分散在多個節點上。他們做了一次跨節點的資料更新(交易)。中途有一個節點出錯了,但系統確保最終結果不會是「部分節點更新了、部分節點沒有」的不一致狀態:要麼全部成功,要麼全部回復到原來的樣子。

問你:這種「要麼全部成功、要麼全部回復」的特性,是資料庫的哪一個 ACID 特性?

一句話總結

「交易不能只做一半」:一個節點失敗就全部回復(Rollback),不會留下部分更新的「殘局」,這說的是 ACID 的原子性(Atomicity):交易是不可分割的最小單位,只有「全部成功提交」和「全部回復」兩種結果。

情境

先感受問題:轉帳失敗到底是轉走了還是沒轉?

大家最熟悉的資料庫交易例子是銀行轉帳:

阿志要把 1,000 元從帳戶 A 轉到帳戶 B。這個操作分兩步:

Step 1:帳戶 A 扣 1,000 元

Step 2:帳戶 B 加 1,000 元

如果 Step 1 成功、Step 2 失敗(例如系統當機),就出現了「帳戶 A 少了 1,000 元,但帳戶 B 沒有多 1,000 元」的恐怖情況:錢憑空消失了。

原子性(Atomicity)就是防止這種情況的機制:要麼 Step 1 和 Step 2 都成功,要麼一個都不做(把 Step 1 的扣款回復)。不允許「做了一半」的中間狀態存在。

題目中的分散式資料庫多節點交易是相同道理:多個節點的更新要麼全部完成,要麼因為某個節點失敗而全部回復。

舊方法

不同 ACID 特性各自解決什麼問題

  1. 沒有原子性(Atomicity)的危害:交易做到一半系統當機,資料庫處於「部分更新」的不一致狀態。轉帳的錢消失、訂單扣了庫存但沒生成訂單記錄,各種業務邏輯錯誤全部出現。
  2. 沒有一致性(Consistency)的危害:交易完成後,資料違反了預設的業務規則(例如:帳戶餘額變成負數,超過了「不能為負」的完整性約束)。即使每筆交易本身是原子性的,結果也可能是錯的。
  3. 沒有隔離性(Isolation)的危害:兩個並行交易互相看到對方的「未提交」修改,導致「幻讀」「不可重複讀」「髒讀」等問題。例如:兩個人同時搶最後一個座位,各自的交易都以為搶到了。
  4. 沒有持久性(Durability)的危害:交易已成功提交,但資料沒有真正寫入永久儲存,系統重開後資料消失。就像收到轉帳確認簡訊,但對方說他的帳戶沒收到。
  5. ACID 在分散式環境的挑戰:分散式資料庫面對 CAP 定理(一致性、可用性、分區容錯性三選二),強 ACID 需要犧牲部分可用性,設計時需要在不同場景做取捨。

新方法

「不部分更新、失敗就全部回復」精確對應原子性

題目的關鍵描述是:「一個節點在交易過程中發生錯誤,但系統仍確保整體資料不會出現部分更新、最終狀態維持一致。」

逐字對照:

「不會出現部分更新」= 交易不能做到一半 = 原子性

「最終狀態維持一致」= 配合原子性的結果(要麼完整成功,要麼完整失敗)

「維持一致」這個說法容易讓人誤以為是「一致性(Consistency)」,但仔細看,題目說的是「因為做到一半失敗,系統把它回復,所以最終沒有部分更新」,這個機制是 Rollback(回復),是原子性的實現方式,不是一致性。

一致性是「資料符合業務完整性規則」,而不是「失敗時回復到原始狀態」。

這就是選項 A 講的:系統透過原子性(Atomicity)確保交易必須全部成功或全部回復(Rollback)。

錯選項

為什麼其他選項是錯的

B系統透過一致性(Consistency)確保交易完成後資料符合完整性規則

字面在說什麼

因為題目說「最終狀態維持一致」,所以是一致性(Consistency)。

為什麼不對

這是最常見的誤解陷阱。「一致性(Consistency)」在 ACID 中的含義是:交易完成後,資料必須滿足預先定義的業務完整性規則(例如:帳戶餘額不能為負、外鍵必須存在)。它關注的是「規則是否被滿足」,不是「失敗時是否回復」。題目說的「不出現部分更新」和「Rollback 回復」是原子性的機制,不是一致性。

誰會選錯

看到「維持一致」就聯想到「Consistency(一致性)」的人。這是出題者故意在題目措辭上設的陷阱,需要精確理解四個特性的定義才能辨別。

C系統透過隔離性(Isolation)避免多筆交易同時存取或修改相同資料

字面在說什麼

隔離性保護交易不受其他並行交易干擾。

為什麼不對

隔離性關注的是「並行多筆交易之間的互相影響」,例如「交易 A 未提交的修改,是否對交易 B 可見」。題目說的情境是「單一交易因為某節點錯誤而失敗」,是單一交易的完整性問題,不涉及多個並行交易的互相干擾,與隔離性無關。

誰會選錯

把「多節點」誤解為「多筆交易」的人。多節點是單一交易分散在多個節點上執行,不是多個並行交易。

D系統透過持久性(Durability)確保交易一旦提交,其結果將永久保留於資料庫中

字面在說什麼

交易成功提交後,資料不會因為系統崩潰而消失。

為什麼不對

持久性關注的是「已成功提交的交易,其結果是否永久寫入儲存」。但題目說的情境是「交易中途失敗」,重點是「失敗後的處理」,不是「成功提交後的保留」。持久性是在交易成功後才發揮作用,而題目的問題發生在交易還沒成功時。

誰會選錯

把持久性和原子性的觸發時機搞混的人。持久性關注「成功後不丟資料」,原子性關注「失敗時不留殘局」。兩者都很重要,但保護的是不同階段的問題。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 18 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。