聊聊Oracle的分散式資料庫技術

資料庫工作筆記發表於2024-01-23

Oracle 是集中式資料庫的典型代表,其RAC技術獨步天下,至今無人能較好地模仿,因此在分散式資料庫上發力較晚,也不大有名氣。2010年之後,因為網際網路企業的巨大成功,分散式資料庫技術逐步興起,再加上傳統儲存在效能上瓶頸較大,NVME SSD等儲存技術的出現,SHARE NOTHING架構的分散式資料庫的勢頭一時無兩。Oracle在這個大潮中也有點坐不住了,於是在12c中推出了sharding database技術。

我剛開始以為Oracle的分散式資料庫技術是用來在OLTP資料庫中提高OLAP能力的,因為Oracle雖然很早就推出了OLAP資料庫,不過受到RAC在橫向擴充套件方面的限制,一直不溫不火。在2015年的CAB的ASK ANDY環節中,我從ANDY的回答中得到了一個令我意外的回答,Oracle的sharding資料庫技術是為OLTP場景,特別是物聯網場景提供的,而並不是用來解決OLAP的問題的。當時的Oracle Sharding確實十分雞肋,架構上也不完善,sharding節點的高可用還要依賴於手工部署的ADG,外加沒有找到適合的場景,因此很快就被我忘卻了。

後來我為使用者設計Oracle資料庫一體機的時候,為了讓NVME SSD發揮出更大的作用,我嘗試了在一個四節點RAC上用跨例項並行查詢去掃描大表,意外的發現只要儲存效能OK,CPU資源充足,Oracle的跨例項並行查詢不比那些分散式資料庫差,甚至在一些複雜查詢方面,因為Oracle優秀的最佳化器,反而會有很大的優勢。於是使用Oracle分散式資料庫的意願又弱了不少。

這些年Oracle的sharding資料庫在不溫不火的發展著,每次新版本釋出的時候,都會帶上一嘴,不過並不會作為熱點去推薦。直到Oracle 23C,這個情況突然變了。23c剛剛預釋出的時候,就有朋友和我說Oracle 23c支援RAFT複製組了,你知道不知道。我去網上一看,還真是那麼回事。Oracle sharding資料庫支援Raft的意義是非凡的,這說明Oracle終於往真正的分散式資料庫走了一大步,而不僅僅限於Sharding這種入門級分散式場景了。難道是Oracle居然開始發力於分散式資料庫,準備用分散式和RAC兩種架構來左右互搏了?

不過經過我的仔細分析後發現,Oracle的策略恐怕還不是如此的。首先從名字上,Oracle 23c推出了一個十分奇怪的名稱,全球分散式資料庫。我剛開始看到Global的時候,還錯解為全域性,經過O記的人確認後,發現是全球分散式資料庫。

何謂全球分散式資料庫?Oracle 23c 的全球分散式資料庫是一種能夠在多個地理位置存儲存和處理資料的資料庫系統,它支援跨分片、跨叢集、跨雲的資料管理和查詢。全球分散式資料庫的主要應用場景是跨地域,甚至跨國家的全域性分散式資料庫場景。

這種全球分散式資料庫並不是為了解決在某個可用域或者機房內處理能力橫向擴充套件的多節點協同處理,而是更加註重跨資料中心的全域性分散式資料庫應用場景。這也很好理解,Oracle認為資料庫橫向擴充套件並不是全球分散式資料庫關注的場景,這個場景RAC已經能夠給出很好的答案了。全球分散式資料庫可以在不同地域或雲環境中部署多個資料庫例項,並保證資料的一致性和可用性的場景,例如,網際網路金融、電商、遊戲等行業,大規模社交網路、物聯網、人工智慧等領域是Oracle 全球分散式資料庫的十分有用的應用場景。

我懷疑是Oracle推出全球分散式資料庫的最重要的原因, 那就是在資料技術時代,用來並滿足各種安全、合規的場景需求。比如目前各國都對跨國企業提出了資料本地化儲存的需求。這讓跨國企業的資訊系統建設十分頭痛。印度、中國、歐洲等都要求使用者資料只能儲存在本國,不能隨意在境外儲存。那麼Oracle 23c的全球分散式資料庫就可以大顯身手了,在中國,印度,歐洲,美國分別設定一個分割槽就可以了。本國使用者資料都只儲存在本國,需要全域性訪問時,依然可以很方便地查詢與拉取。並且利用TrueCache技術,他國的資料可以在本地的記憶體資料庫例項中快取,從而獲得極高的訪問效率。而且TrueCache例項本身又不帶有持久化儲存,這一特性又滿足了國別監管本國資料不能在境外持久儲存的政策。

我在和某個國產資料庫廠商的朋友討論到Oracle全球分散式資料庫的時候,他感嘆到,這才是真正的把使用者需求吃透了才能做得出的產品。

來自 “ 白鱔的洞穴 ”, 原文作者:白鱔;原文連結:https://mp.weixin.qq.com/s/M9vFiEupkovwxeZaF5na7Q,如有侵權,請聯絡管理員刪除。

相關文章