天天看點

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

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

(接上篇)

重新設想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)的性能為什麼如此差勁。

關系資料庫的處理資源消耗

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

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

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

NewSQL資料庫技術

Oracle、NoSQL和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資料庫架構

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

盡管與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)”

(終)