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全球分布式資料庫的時候,他感嘆道,這才是真正的 把使用者需求吃透了 才能做得出的產品。
作者丨白鱔
來源丨公眾號:白鱔的洞穴(ID:baishan755)
dbaplus社群歡迎廣大技術人員投稿,投稿信箱: [email protected]