1. 程式人生 > 實用技巧 >Oracle Sharding: 雲端分散式關係型資料庫

Oracle Sharding: 雲端分散式關係型資料庫

Oracle Sharding現已正式登陸OCI Marketplace!支援雲端全自動部署!感興趣的小夥伴們快來搶先體驗!

體驗教程:https://medium.com/oracledevs/deploying-geo-distributed-oracle-database-on-oracle-cloud-infrastructure-oci-786ad3ec33c6

Oracle Sharding是什麼?

Oracle資料庫從12.2版本開始引入Sharding(分片)特性,集成了NoSQL和成熟的關係型資料庫的優勢,到如今已經經過多個版本迭代成為一整套成熟的分散式關係型資料庫解決方案。Oracle Sharding可以讓使用者將資料分佈和複製到一組Oracle資料庫叢集中,叢集中的資料庫只需要網路連線,不需要共享軟體和硬體。Oracle Sharding可以為最嚴苛的應用提供線性擴充套件能力和完全容錯能力。下面就讓我們來詳細介紹一下Oracle Sharding吧!

使用Oracle Sharding的優勢有哪些呢?

  • 線性擴充套件

    Oracle Sharding採用無分享架構(shared-nothing architecture),消除了有分享架構帶來的效能瓶頸,理論上可以提供無限的擴充套件性。目前支援最多1000個分片資料庫。

  • 極致的可用性和故障隔離

    由於各個資料庫分片不再共享硬體裝置,叢集的單點故障可以有效被消除。如果叢集中的一個分片節點出現故障,其他節點的效能和可用性不會受到影響。與此同時,Sharding與Oracle Data Guard 和Oracle Golden Gate等技術高度整合,可進行自動配置並提供備份和故障恢復服務。在使用Data Guard備份時,Sharding叢集支援滾動升級和自動主備庫切換。

  • 資料可按地理位置分佈

    Oracle Sharding支援資料的全球部署。在分片環境下,整個資料庫叢集組成單一邏輯資料庫,其中的資料可以拆分儲存到不同的地理位置。這種按照地理位置拆分資料的方式既可以滿足資料隱私性的相關規定,也可以通過將資料儲存到靠近客戶地點的方式來獲得更好的效能。

Oracle Sharding適用哪些應用場景呢?

  • 實時聯機交易處理(OLTP)

    實時聯機交易處理類應用一般具有以下特點:交易高吞吐量,大量的使用者群體,海量的資料,嚴格的資料一致性要求和進行規模化資料管理的需求。這類應用一般包括:電商類應用、金融服務類應用(例如移動支付)、大規模軟體即服務SaaS應用(例如賬單處理、醫療)等。這些應用均可以從使用Oracle Sharding中獲益。

  • 全球分佈的應用

    許多企業級應用因為要服務不同國家和地區的客戶群體,天然具備全球化分佈的屬性。Oacle Sharding可以在讓分佈在不同地區的應用客戶端訪問同一個邏輯資料庫的同時,保證資料本地化儲存和訪問。這種架構的優點有:可以嚴格執行資料隱私性保護的相關法律規範,進行資料的本地化儲存和訪問;更低的資料跨地區複製和移動的開銷;更優化的服務級別協議(SLA),因為系統在一個區域的維護和下線不影響其他地區;更簡便的資料庫管理。

  • 物聯網和流資料處理

    這類應用通常要求快速的對海量資料進行收集和流處理。Oracle Sharding集成了基於直接路徑(direct path)I/O的高效能流處理庫。利用Oracle資料庫的這項技術,應用可以以每秒鐘上億條記錄的速度將從終端裝置收集來的資料載入Sharding資料庫。載入以後,使用者便可以運用Oracle資料庫的強大的分析能力立即對這些資料進行進一步處理。

  • 日誌儲存和檢索

    結合Oracle資料庫的原生JSON支援功能,Oracle Sharding可以被配置成為高效能分散式日誌儲存和全文檢索引擎,同時具備彈性伸縮和高可用等特性。

  • 機器學習

    許多機器學習應用都要求對模型進行實時訓練和評估。這類訓練和評估很多都採用對某個特定標籤的資料(例如某個使用者的交易模式和裝置使用情況)使用異常檢測、聚類等演算法。這類資料標籤便可以被配置成為分片鍵(Sharding Key)來對資料集進行劃分。利用Oracle資料庫內建的機器學習演算法,這些模型訓練和評估的操作便可以直接在資料庫內部進行,省去了單獨構建相關基礎設施和資料管線的操作。

  • 大資料分析

    當需要分析的資料大於單體資料庫的承載能力的時候,Oracle Sharding可以幫助使用者構建儲存海量資料的資料倉庫。Oracle 20c版本推出了聯合分片(Federated Sharding)功能,可以幫助使用者整合多個已有資料庫中的資料,並對他們進行聯合查詢。使用者可以直接把現有資料庫建立成為聯合分片叢集,在叢集上直接執行資料分析的SQL語句,省去了漫長的資料遷移流程。

  • 替代NoSQL資料庫

    NoSQL解決方案大都缺乏關係型資料庫的基本功能,例如SQL支援、複雜資料型別、多CPU擴充套件、線上模式(schema)修改、ACID特性等等。Oracle Sharding可以讓使用者在享受所有這些Oracle資料庫優勢的同時擁有近乎無限的水平擴充套件能力。

Oracle Sharding支援多種分片方式

使用者可以使用多種模式來建立分片表,如基於分片鍵的一致性雜湊(系統管理分片)、基於分片鍵範圍或列表(使用者自定義分片)或者兩個層級相結合(混合分片)。

Oracle Sharding對於單個分片的要求非常寬泛,每一種資料庫例項都可以作為一個分片,比如PDB,RAC叢集,Exadata。

  • 系統管理分片

    不要求使用者指定資料和分片的對應邏輯。系統會按照分片鍵的一致性雜湊值自動將使用者資料分佈到不同的分片中。這種演算法一般用於對資料進行隨機均勻分片。

  • 使用者自定義分片

    使用者可以自己指定資料和分片對應邏輯。這種分片方式的應用場景一般是管理員要求完全控制資料的分佈和移動,例如出於效能、監管、或其他原因,某些資料必須要儲存到特定的分片上。

  • 混合分片

    使用者可以將資料先按照一級分片鍵的範圍或者列表分片,再資料按照二級分片鍵的一致性雜湊進一步分片。混合分片結合了系統管理分片和使用者自定義分片的優勢,在諸如符合資料本地化儲存的法規要求的場景下,混合分片可以讓使用者享受資料自動化分佈和完全掌控資料儲存位置的雙重便利。

Oracle Sharding構建於分割槽表(table partitioning)的技術上,因此可以支援所有的二級分割槽方法。

靈活的客戶端請求路由模式

Oracle Sharding 支援基於分片鍵的從應用到分片的直接路由、通過catalog節點進行代理路由、以及路由到中介軟體層(例如與資料庫分片臨近部署的應用容器、web容器等)。Oracle資料庫的客戶端驅動和連線池等元件都內建了對Sharding的支援。

  • 基於分片鍵直接路由

    Oracle的客戶端驅動(JDBC, OCI, UCP, ODP.NET)可以根據連線欄位中包含的分片鍵進行高效的基於資料的路由。連線層會維護一個分片路由快取,每次通過查詢該快取直接將客戶端請求路由到資料所在的資料庫分片。

  • 代理路由

    若客戶端SQL操作不指定分片鍵,該操作將由catalog節點進行代理路由。代理路由可以執行單分片SQL操作和跨分片SQL操作。

  • 中介軟體層路由

    在將資料層分片的基礎上,使用者可以進一步將web層和應用層分片,將這些中介軟體層按照他們服務的資料庫分片進行分佈,形成一種稱為“泳道(swimlane)”的模式。使用者可以配置網路層,使其可以根據客戶端請求中的分片鍵將請求路由到對應的“泳道”中,從而與對應的資料庫分片建立連線。

聯合分片

Oracle 20c版本新增了聯合分片(Federated Sharding)功能,可以將多個已有Oracle資料庫組織為一個Oracle Sharding叢集。

全球化的業務一般將同樣的應用在不同的區域中部署很多份副本。聯合分片功能可以整合這些應用的資料庫例項,組成一個單一的聯合資料庫,從而提供以下優勢:

  • 使用者可以經由catalog節點對聯合分片叢集進行跨分片查詢,形成多資料庫到單一叢集的無縫過渡。

  • 消除了由於資料分析和彙報等需求帶來的資料複製

  • 允許同一張表在不同資料庫中有結構變化,允許各成員資料庫版本不同。

自動化部署

Oracle Sharding 可以通過Terraform, Kubernetes, Ansible 指令碼的方式進行高度自動化的部署。這些部署指令碼只需要一個簡單的描述叢集結構的配置檔案作為輸入,便能夠在一臺機器上執行,完成對於執行在其他各個機器上的整個資料庫叢集的部署。當發生錯誤時,部署指令碼還可以進行暫停、繼續、清理等操作。

與此同時,使用者可以訪問Oracle Cloud Marketplace 輕鬆在Oracle雲服務上部署Sharding叢集。

自動化資料遷移

使用Oracle Sharding 不要求應用對現有的SQL查詢和修改的語句進行修改。Sharding在資料定義語言(DDL)中增添了新的語法用來建立和修改分片表(Sharded Table)和複製表(Duplicated Table)。與此同時,使用者可以使用這兩種工具來幫助實現從單機Oracle資料庫遷移到Oracle Sharding。

  • Oracle Sharding Advisor

    從20c版本開始,Oracle Sharding引入了一個新的資料庫遷移規劃工具Sharding Advisor來幫助使用者設計分散式資料庫的模式(schema)。該應用通過分析使用者現有資料庫的模式和資料訪問特點來推薦最優化的分散式資料庫的模式,推薦演算法可以基於並行度、減少跨分片連結查詢或者減少重複資料等。

  • Oracle Data Pump

    Oracle Data Pump增加了對於Sharding的原生支援。現在使用者可以在分片資料庫上執行該工具直接將資料遷移到分片裡。

說了這麼多,小夥伴們也需要注意,Oracle Sharding並不是所有資料庫效能問題的終極解決方案哦。Oracle Sharding更適用於資料適合根據某些欄位進行分片的應用場景。

編輯:殷海英