微課程 | 第五課《水平拆分》

https://v.youku.com/v_show/id...html

上一期咱們演示了 dble 安裝好之後的目錄結構,下面咱們就介紹第二篇基本功能。node

ppt p9.png

水平拆分原理

dble 最核心的功能就是數據的水平拆分。首先說數據拆分,若是不太瞭解數據拆分是怎麼回事,我這裏先簡單的介紹一下。原本咱們一張表是完整的,可是這張表過大,超過一億條數據。單表查詢也好,增刪改也好,都會遇到很大的問題。git

ppt p10.png

圖中經過一個路由算法 f,把某一個拆分字段路由到其餘的庫表中。經過這樣一個合理算法拆分紅多個表,單表中的數量就會降低,提升運行機制。而後你若是須要各類水平擴展結點,經過算法來控制就能夠了。接下來看一下咱們剛纔那三個 XML 配置文件是如何配置。github

三個 XML 配置

https://v.youku.com/v_show/id...算法

一、rule.xml
rule.xml 顧名思義就是一個拆分規則的配置。rule.xml 裏面有兩個大的子項:一個叫 table rule,一個叫 function。有多少個 table rule,就表明有多少個拆分規則;多少個 function,就具體有多少個拆分規則。咱們來從具體的求模算法看,具體的配置你們能夠去文檔上查,咱們就不過多介紹了。大致上配置的方式就是,定義名字,定義算法,定義求模基數。你們知道這樣一個概念,具體 hush 算法是一個什麼樣的概念,由於文檔上比較詳細,因此這裏就很少贅述。這裏的 function name 一會在配置過程當中會使用的,因此依賴關係是須要關心的。如今咱們回到 table rule,table rule 其實就是列和拆分算法的關係。如:咱們的求模算法,其實引用了剛纔那個 function,還有一個 columns,columns 其實就是按 id 對 4 求模拆分。這樣咱們就定義好了 rule.xml,那這個算法具體怎麼用呢?咱們能夠到 schema.xml 上去看。數據庫

二、schema.xml安全

schema.xml 裏面大概有三個部分。第一個就是 schema 定義的庫,而後庫下面有表。表裏面有一個叫 rule 和 datanode 的屬性,下面會有 datanode 的定義。rule 定了咱們 rule 的類型。dataNode 定義了有幾個節點,這幾個節點就是 xml 第二層 datanote 的引用。而後 datahost 1-2 對應了後面四個數據庫。下面是兩個數據庫實例,咱們建庫的 datanode 是在不一樣的實例上部署的。這樣個人表結構,拆分算法以及我真實的數據庫實例就創建起來了。咱們的配置分三層 schema / datanote / datahost。經過 datahost 實例下面一個實際庫映射到 datanode,而後再經過剛纔的拆分算法指向這些 datanode。這樣的話基本的拆分算法就完成了。學習

三、server.xml優化

server.xml 首先有 system 項,是一些系統和功能參數。這裏面大部分是默認不須要配置,有些比較關心的功能如何開啓。而後下面一個比較重要的就是,好比IP、端口、一些基本功能,好比一些可選功能是否是須要開啓,好比壓縮協議功能,還有一些慢查詢,全局表一致性檢查,記錄日誌的配置,XA 事務相關的配置等,其實都放在這裏。這部分文檔中也介紹的比較詳細。除了 systerm 配置,咱們還有一個防火牆的配置,這個咱們在以後會詳細的介紹。接下來咱們去看一下用戶的配置,咱們剛纔看到一個管理端的用戶,管理端的用戶經過一個 manager 關鍵字來區分。還有普通用戶,普通用戶能夠配置 schema,控制這些用戶能夠訪問到哪些 schema,好比一個叫 testdb 的 schema,假如我在這裏把其中一個刪掉,那從這個用戶登錄就看不見被刪掉的 schema 了,這一點和 MySQL 有點像。manager 用戶是不能配置 schema 的。由於安全的問題,咱們用戶會被加密,若是以前沒有加密,咱們就去把他加密一下。password 位置是一串密文,還有一些 readonly 的開關配置,控制是否只讀。這就是 server.xml 了。ui

總結

咱們來回溯一下,首先 rule.xml 定義了拆分算法。而後 schema.xml 定義了 schema 的關係,schema 裏面 table,table 會使用到拆分算法,路由到 datanode,datanote 是實例下面的數據庫,而 datahost 是直接映射到了實例。咱們不一樣的數據庫再回到咱們 table 裏面充當分片。最後 server.xml 定義了 dble 的基本參數和用戶信息。強調一點,dble 項目繼承自 Mycat。配置方面稍微有些不合理的地方,可是爲了兼容 Mycat,並無把用戶配置從server.xml 裏面拆出來。將來可能會對整個 xml 的組織結構作大的變革,使它更合理。好,咱們今天先介紹到這裏。

https://actiontech.github.io/...

圖文稿爲了方便閱讀,在不影響學習的狀況下優化了一些口語化詞彙,文稿與視頻會盡可能保持一致。

DBLE 及相關項目代碼地址:

https://github.com/actiontech...
https://github.com/actiontech...
https://github.com/actiontech...

相關文章
相關標籤/搜索