將多個作業群組為一筆交易

已完成

若某個資料片段的變更必須導致另一個資料片段的變更,則應用程式需要將一系列資料更新分組在一起。 您可以使用交易來分組這些更新。 在交易中,若一系列更新的某個事件失敗,則可以復原整個系列。

例如,線上零售商會使用交易來下訂單、驗證付款,以及更新產品庫存。 相關事件的分組可確保您在收到某種核准的付款形式之前,不會減少庫存量。

接下來瞭解有關交易,以及您的資料是否需要。

什麼是交易?

交易是一起執行之資料庫作業的邏輯群組。

以下是您可以詢問自己來瞭解是否需要在應用程式中使用交易的問題:您資料集中的某個資料片段變更是否會影響另一個資料片段? 如果答案為「是」,則您的資料庫服務將需要交易支援。

ACID 保證可透過確保符合一組四個需求來定義交易。 ACID 是不可部分完成性、一致性、隔離性和耐用性的縮略字。

  • 不可部分完成性表示交易必須確實執行一次,且不可部分完成。 所有工作都已完成,或全部皆未完成。 交易內的作業通常會共用通用意圖,且都是相互依存的。
  • 一致性可確保資料在交易前後都是一致的。
  • 隔離性可確保每個交易不會受到其他交易影響。
  • 耐用性表示因交易所做的變更會永久儲存在系統中。 系統會儲存已認可的資料,因此即使在發生失敗和系統重新啟動的情況下,該資料也會以其正確的狀態提供。

當資料庫提供 ACID 保證時,這些原則會一致地套用至每個交易。

OLTP 與 OLAP

交易式資料庫通常稱為 線上交易處理 (OLTP) 系統。 OLTP 系統一般支援許多使用者、具有快速的回應時間,並處理大量資料。 這些系統具有高可用性,這表示停機時間最少。 OLTP 系統通常會處理小型交易或相對簡單的交易。

支援 OLTP 的 Azure 服務範例是 Azure SQL Database。

線上分析處理 (OLAP) 系統一般支援較少的使用者、具有較長的回應時間、可用性可能較低,而且通常會處理大型交易和複雜交易。

支援 OLAP 的 Azure 服務範例是 Azure Analysis Services。

OLTP 與 OLAP 等字詞的使用不如以往頻繁,但了解它們可更輕鬆地將應用程式的需求分類。

交易:評估您的資料類型

確保您的資料處於正確狀態並不一定是件容易的工作。 對您的資料強制執行資料完整性需求可能有助於交易。 如果您的資料受益於 ACID 的準則,則選擇支援交易的儲存體解決方案。

接下來將逐步解說線上零售案例中的每個資料集,並判斷交易的需求。

產品類別目錄資料

產品類別目錄資料應該儲存在交易式資料庫中。 當使用者下訂單且付款經過驗證時,項目庫存應該會更新。 同樣地,如果客戶的信用卡遭到拒絕,訂單應該會復原,而且庫存不應該更新。 這些關聯性需要交易。

相片與影片

產品類別目錄中的相片與影片不需要交易支援。 只有在進行更新或加入新檔案時,才會變更這些檔案。 雖然影像與實際產品資料之間有關聯,但本質上並不是交易式。

商務資料

由於業務資料都是歷史資料且不會變動,因此不需要交易支援。 處理資料的商務分析師也具有獨特的查詢需求。 他們通常會處理其交易中的彙總,以便可以處理所有其他較小資料點。

檢定您的知識

1.

哪一種交易式資料庫系統最適合產品資料?

2.

假設更新庫存和處理付款的零售商作業都位於相同的交易中。 使用者正嘗試從其膝上型電腦對訂單套用 $30 元的商店點數,並從其手機使用商店點數提交完全相同的訂單 (完全相同總額)。 收到兩個相同的訂單。 幕後資料庫是 ACID 相容的資料庫。 將會發生什麼情況?