Oracle、NoSQL和NewSQL 資料庫技術對比(二)- 終結

VoltDB_China發表於2019-03-20

本文作者:約翰·瑞恩 - 瑞銀集團資料倉儲解決方案架構師


(接上篇)


重新設想OLTP資料庫


十年前,Michael Stonebraker博士撰寫了 《架構時代的終結》(The End of an ArchITectural Era) 這篇文章,認為Oracle、微軟和IBM提出的1970年代的資料庫架構已經過時。


他提出OLTP資料庫應具備下列特點:


  • 專門用於解決某一個問題 — 快速執行短暫的預定義(非即席的)事務,查詢計劃相對簡單。簡而言之,就是專用的OLTP平臺。

  • 符合ACID規範 — 所有事務均為單執行緒執行,預設提供全部可序列性。

  • 總是可用 — 利用資料複製(而非熱備)來提供高可用性,幾乎不增加成本。

  • 地理分散 — 在由分散多處的機器組成的網格上無縫執行(進一步提高韌性,並區域性地提高效能)

  • 無共享架構 — 多臺機器透過對等網格聯網,分擔負荷。新增機器是不會造成停機的無縫操作,並且失去一個節點僅會造成效能略微下降,而不是全系統停止執行。

  • 基於記憶體 — 全部在記憶體中執行,以提高絕對速度,透過向其他節點進行記憶體中資料複製來保證耐久度。

  • 消除瓶頸 — 徹底重新設計資料庫的內部構件,實現單執行緒執行,同時消除重做(Redo)日誌以及鎖定和鎖存的必要性—這些都是資料庫效能最為重大的制約。


為證明上述各項的可能性,他建了一個原型,即H-Store資料庫,並證明使用相同的硬體, TPC-C基準效能是某商業競爭對手的82倍。H-Store原型成績優異,實現了每秒處理70 , 000個事務,而儘管資料庫管理員付出了大量努力進行調優,某商業競爭對手每秒僅850個。


世上無難事!


Stonebraker博士的成就令人側目。此前的TCP-C世界紀錄為每個 CPU核心大約1 , 000個事務,但H-Store採用雙核2.8GHz桌上型電腦,速度是原世 界紀錄的35倍。他在2008年的文章 《細探 OLTP 》(OLTP through the  Looking Glass) 中解釋了為什麼商業資料庫(包括Oracle)的效能為什麼如此差勁。


關聯式資料庫的處理資源消耗

上圖顯示,有93%的系統開銷是用於傳統(歷史遺留)的資料庫系統,包括鎖定、鎖存和快取管理。合計只有7%的機器資源是專門用於手頭的任務。


H-Store只是透過消除上述瓶頸,使用基於記憶體的處理來代替基於磁碟的處理,就得以實現看似不可能的任務,即全面的ACID事務一致性,使速度提升了幾個數量級。


NewSQL資料庫技術

VoltDB最早釋出於2010年,是H-Store原型的商業化產品,屬於專用的OLTP平臺,用於Web級的事務處理和實時分析。如 這張資訊圖 所示,目前有250種商業化資料庫解決方案,其中只有13種被歸入NewSQL技術的行列。


VoltDB

與其他NewSQL資料庫一樣,VoltDB旨在完全在記憶體中執行,提供定期拍攝磁碟快照的選擇。它可在本地執行於64位Linux,也可使用AWS、谷歌和Azure的雲服務來執行,採用橫向可擴充套件的架構。


傳統的關聯式資料庫將資料寫入基於磁碟的日誌檔案。VoltDB則不然,是同時對記憶體內的多臺機器進行修改。例如,即使兩臺機器發生故障,K-Safety係數為2時即可保證不會造成資料損失,因為資料至少存入三個記憶體節點。


事務作為Java儲存過程(stored procedure)提交,可在資料庫中非同步執行,並且資料自動分割槽(分片),分配至系統內的節點,儘管可複製基準資料以最大限度地提高連線效能。VoltDB有一點不同尋常,就是還以JSON資料結構的形式,支援半結構化資料。


就效能而言, 2015年進行的一次基準測試 顯示,VoltDB的處理速度至少是NoSQL資料庫Cassandra的兩倍,但成本只有AWS雲處理成本的六分之一。


最後,VoltDB 6 . 4版透過了極為苛刻的 J epsen分散式安全性測試


相比之下,此前對NoSQL資料庫Riak進行的 測試 表明,即使採用最強的一致性設定,寫入也會下降30 - 70%。與此同時,採用輕量級事務時,Cassandra最多損失5%的寫入。


MemSQL

與VoltDB相同的是,MemSQL是橫向擴充套件的記憶體型分散式資料庫,專為快速獲取資料和實時分析而設計。另外,既可在本地執行,也可在雲上執行,並可在不同節點之間自動分片,在每個CPU核心上並行執行查詢。


MemSQL資料庫架構

儘管與VoltDB有許多相似點,但上圖表明瞭一個重要的差異。MemSQL試圖在實時事務與資料倉儲式歷史資料處理這兩種相互衝突的需求之間尋求平衡。為此,MemSQL以行儲存(row store)的方式在記憶體中儲存資料,並用面向列的磁碟儲存作為備份,從而將實時(最近)資料與歷史結果結合在一起。


這使其在OLTP和資料倉儲(Data Warehouse)領域獲得了穩固的位置,儘管這兩種解決方案都是瞄準實時資料獲取和分析市場。


哪些應用需要NewSQL技術?


要求採集速度和響應速度非常快(平均1 - 2毫秒),同時要求ACID保證所提供的事務準確性的任何應用—例如客戶計費。


典型的應用包括:

  • 實時授權 — 例如,為了分析和計費而驗證、記錄和授權行動電話呼叫。通常,99 . 999%的資料庫操作都必須在50毫秒內完成。

  • 實時欺詐偵測 — 用於完成複雜的分析查詢,以在交易授權之前,準確地確定欺詐的可能性。

  • 遊戲分析 — 用於根據玩家的能力和玩家的典型行為,實時動態修改遊戲難度。目標是留住現有玩家,以及將免費客戶轉化為付費玩家。在速度、可用性和準確性要求很高的情況下,某客戶透過運用這些手段,將玩家的遊戲支出提高了40%。

  • 個性化Web廣告 — 實時動態地選擇基於 Web 的個性化廣告,記錄廣告呈現事件以用於計費,同時記錄廣告結果以用於後續分析。與絕大多數OLTP應用相比,這些起初看來都不起眼,但是在每週7天、每天24小時聯網的世界,這些為實時分析提供了新的疆域,並且隨著物聯網的興起,也帶來了巨大的機會。


結論

雖然Hadoop與大資料的關聯更為密切,並且近來獲得巨大的關注,但資料庫技術是任何IT系統的基石。


類似地,NoSQL資料庫為替代關聯式資料庫提供了一個快速、可擴充套件的選擇,但是儘管有免許可開源資料庫的誘惑,事實上還是一分錢一分貨。另外,正如VoltDB所顯示的那樣,實際上長期來看,可能比NoSQL類的選擇更為便宜。


總的說來,如果有Web規模、OLTP和(或)實時分析的要求,則需要認真考慮NewSQL類資料庫。


作者簡介

John Ryan 是經驗豐富的資料倉儲架構師、開發人員和資料庫管理員。他專門從事多太位元組Oracle系統上的Kimball維度設計,在行動電話和投資銀行等多個不同的行業積累了超過30年的IT經驗。本文首次發表是作為有關資料庫和大資料的系列文章中的 一篇 。在LinkedIn上關注他,關注他未來的文章。


我們預測未來十五年將迎來激烈的爭論和巨大的變化。

Michael Stonebraker 博士(2007)

(終)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69903219/viewspace-2638814/,如需轉載,請註明出處,否則將追究法律責任。

相關文章