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集群。
全球化的業務一般將同樣的應用在不同的區域中部署很多份副本。聯合分片功能可以整合這些應用的資料庫實例,組成一個單一的聯合資料庫,從而提供以下優勢:
自動化部署
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更適用於數據適合根據某些欄位進行分片的應用場景。
想更進一步了解Oracle Sharding?
歡迎訪問官方文檔(點擊閱讀原文)更詳細的了解Oracle Sharding特性!
掃描下方QR Code即刻預約ADW演示
編輯:殷海英