怎么并線(三條電線怎么并線)
1076
2022-05-30
正如這篇文章的標題所問,什么是事務數據庫?簡短的回答是,它是一個支持全有或全無數據操作的存儲系統,通常稱為事務。這意味著,如果要執行的某些可能很長的數據操作列表(例如,創建、更新或刪除信息)的任何子集因任何原因失敗,則所有操作都將被放棄,并且數據庫將恢復到任何操作之前的狀態。的行動開始了。
此功能提供了可靠的信息存儲和處理,因為它可以防止錯誤的數據操作,從而確保數據庫始終處于正確狀態。事務數據庫為數據完整性提供保證,即使在系統故障的情況下也是如此,這對于許多用例來說可能是關鍵任務。
考慮一個銀行客戶使用移動設備上的應用程序將資金從一個帳戶轉移到另一個帳戶的快速而常見的示例。完整且正確的交易需要借記來源帳戶和貸記目的地帳戶。
但是,如果斷電,數據庫服務器后原點帳戶尚未扣除之前的目標賬戶貸記?一個真正的事務數據庫確保在這種情況下整個事務的第一部分被取消(或“回滾”),因為第二部分沒有通過,盡管發生故障,數據庫仍保持正確和一致的狀態。
在本文中,我們將更詳細地研究數據庫事務及其重要性,解釋“ACID 合規性”的四個要素及其重要性,討論當數據和事務分布在現代系統中時維護這些要素所涉及的常見困難,并提供一些關于選擇滿足您需求的事務性數據庫系統的具體建議。
什么是數據庫事務?
簡而言之,數據庫事務是由數據庫管理系統 (DBMS) 針對給定數據庫執行的工作單元,執行數據操作并更新各種存儲介質上的底層文件。事務數據庫將確保此類工作單元是全有或全無的,因為任何操作中的任何失敗都將導致所有操作暫停和回滾,使數據庫處于事務開始之前的狀態。
使用事務數據庫有兩個主要原因,第一個是它使工作單元在所有情況下都可靠?;仡櫼幌挛覀兊你y行業務示例,客戶可以放心,當他們的錢從原始賬戶中扣除時,將記入目的地賬戶。如果在此過程中出現任何問題(例如,網絡故障、服務器故障等),客戶希望他們的帳戶保持不變,而不是簡單地因偶然事件而賠錢。
第二個原因是我們所描述的事務數據庫始終處于正確且一致的狀態,而不管所涉及的所有技術可能發生何種故障。沒有人愿意將信息存儲在一個系統中,該系統的數據可能會因為允許無效操作而變得不連貫,或者在服務器宕機時可能會丟失信息。當然,并非每個用例都是關鍵任務,但很多都是,在這些情況下,事務數據庫可以提供巨大的業務價值。
當然,并不是每個數據庫系統本質上都是事務性的。一些系統只專注于記錄丟失的信息或不需要支持事務功能的信息。在考慮您的用例時,重要的是密切關注您需要這些功能的程度,并將您的期望與潛在數據庫系統遵守事務數據庫原則的程度相匹配。
ACID 合規性的重要性
ACID 是“Atomicity、Consistency、Isolation 和 Durability”的首字母縮寫,它是一組確保數據庫事務可靠、正確處理的原則。下表解釋了這四個不同元素所涉及的內容。
讓我們考慮一個更復雜的例子來說明為什么 ACID 保證很重要。想象另一種常見的情況,其中兩個人 A 和 B 正在為電影院的同一場演出預訂同一排的座位。A 只預訂了一個座位,而 B 則試圖為家庭出游預訂整排。
如果A先預訂了座位,那么B的交易就會失敗,因為網上購物車中的一個座位已經被預訂了,不能重復預訂。這說明了原子性,因為 B 人的數據操作之一失敗了,他們都做了,以及一致性,因為系統不會允許無意義的數據,例如兩個人保留相同的座位。
只有當 A 的預訂成功完成并寫入數據庫時 ,B 的交易才會被取消。然而,在這種情況發生之前,隔離的特性是允許兩個人同時嘗試對同一個席位進行交易,確保雙方都將有爭議的席位視為可用,直到它被實際保留。
最后,即使在 A 成功預訂座位后整個預訂系統崩潰,持久性確保在重新啟動時正確的數據仍然存在。這使得 A 可以根據需要打印票并享受演出,無論在交易正確完成后發生什么系統故障。
分布式事務如何工作?
現代應用程序在本質上越來越分散,通常在全球范圍內可用,這使得事務數據庫的問題變得更加困難。原因是 ACID 保證對于分布式系統與在單個服務器上運行的單個數據庫軟件一樣重要,但是涉及多個服務器或節點會使問題顯著復雜化。
想想看。當單個數據庫軟件可以“決定”在第一個事務失敗后立即取消事務中的所有其他數據操作時,這很簡單。當數據庫軟件在分散在世界各地的數十個(甚至數百個)節點上運行時,這完全是另一回事。任何這些服務器上任何數據操作的任何元素的任何故障都要求必須取消整個事務并在任何地方安全回滾。類似地,即使事務成功,整個系統也必須確保所有操作都是正確且持久的,無論哪個或哪些服務器執行它們。
實際上,分布式事務數據庫很難正確實現,但幸運的是一些供應商做到了。例如,由于其架構和數據存儲算法,Fauna能夠提供嚴格可序列化、外部一致的事務。
與其他系統不同的是,Fauna 不需要所有服務器之間嚴格的物理時鐘同步來提供一致性,這避免了副本服務器之間通常的距離限制,因此對于以典型的全球 Internet 延遲在世界各地進行部署是實用的。當系統時鐘或網絡流量相差幾毫秒時,確實需要同步的方法可能會導致故障,而 Fauna 更寬松的要求則不會遇到此類問題。
這是可能的,因為 Fauna 提供了受 Calvin 啟發的事務引擎,這是一種跨分區數據庫系統實現快速分布式事務的方法。Fauna 事務引擎可以通過其分布式事務協議實現“沒有時鐘的一致性” 。實際上,在任何數據庫寫入之前,Fauna 會預先決定事務應以何種順序執行。然后,Fauna 執行引擎以這樣一種方式處理它們,即最終結果與按照該順序一次處理一個相同。
實際上,您可以獲得在多臺服務器上并行執行的分布式事務的所有速度和功能,同時享受事務數據庫的所有數據優勢,就好像它們在單個服務器上串行執行一樣。
呼吁采取行動
Fauna 以完全分布式的方式將非事務性數據庫的所有靈活性和性能與事務性數據庫的關系查詢和功能以及 ACID 保證相結合。事實上,由于 Fauna 處理其分布式事務的方式,用戶可以避免其他系統可能發生的那種數據異常。通過不限制鍵、文檔或分區數量的嚴格可序列化的多區域事務,可以防止不朽寫入、陳舊讀取、因果反轉和其他此類問題。
還值得注意的是,Fauna不是通常托管的“數據庫即服務”(DBaaS),甚至不是一些集群云產品,兩者都需要管理。相反,Fauna 是一個真正的“數據 API”,這意味著開發人員可以根據需要簡單地進行調用,而無需花時間擔心配置或擴展,具有事務數據庫和 ACID 合規性的所有好處。
因為它是一個真正的數據 API,所以 Fauna 沒有所有常見的配置和配置問題,并且可以立即作為無服務器實用程序使用。開發人員只需要一個帳戶即可開始使用,無需支付任何費用并提供豐厚的起步津貼。沒有常見的頭痛問題:沒有配置實例,沒有廣泛的配置等。
在本文中,我們檢查了事務數據庫,解釋了它們提供的 ACID 保證,說明了它們在關鍵任務用例中的價值,討論了現代對分布式事務的需求如何使情況復雜化,并提供了一些具體的建議,以輕松獲得 ACID合規的數據優勢。
最后,Fauna 通過輕松分布式數據庫事務、自動配置和輕松擴展來提供所有價值。它可以免費注冊,易于上手,并提供清晰簡單的定價——只需為您實際使用的內容付費。如果您認為 Fauna 可以管理您的數據需求,為什么不立即嘗試一下呢?
【綻放吧!數據庫】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/285617
分布式 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。