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

2021-10-01 04:55:41 字數 2311 閱讀 4658

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

dble 最核心的功能就是資料的水平拆分。首先說資料拆分,如果不太了解資料拆分是怎麼回事,我這裡先簡單的介紹一下。本來我們一張表是完整的,但是這張表過大,超過一億條資料。單錶查詢也好,增刪改也好,都會遇到很大的問題。

圖中通過乙個路由演算法 f,把某乙個拆分字段路由到其他的庫表中。通過這樣乙個合理演算法拆分成多個表,單錶中的數量就會下降,提高執行機制。然後你如果需要各種水平擴充套件結點,通過演算法來控制就可以了。接下來看一下我們剛才那三個 xml 配置檔案是如何配置。

1、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 上去看。

2、schema.xml

schema.xml 裡面大概有三個部分。第乙個就是 schema 定義的庫,然後庫下面有表。表裡面有乙個叫 rule 和 datanode 的屬性,下面會有 datanode 的定義。rule 定了我們 rule 的型別。datanode 定義了有幾個節點,這幾個節點就是 xml 第二層 datanote 的引用。然後 datahost 1-2 對應了後面四個資料庫。下面是兩個資料庫例項,我們建庫的 datanode 是在不同的例項上部署的。這樣我的表結構,拆分演算法以及我真實的資料庫例項就建立起來了。我們的配置分三層 schema / datanote / datahost。通過 datahost 例項下面乙個實際庫對映到 datanode,然後再通過剛才的拆分演算法指向這些 datanode。這樣的話基本的拆分演算法就完成了。

3、server.xml

server.xml 首先有 system 項,是一些系統和功能引數。這裡面大部分是預設不需要配置,有些比較關心的功能如何開啟。然後下面乙個比較重要的就是,比如ip、埠、一些基本功能,比如一些可選功能是不是需要開啟,比如壓縮協議功能,還有一些慢查詢,全域性表一致性檢查,記錄日誌的配置,xa 事務相關的配置等,其實都放在這裡。這部分文件中也介紹的比較詳細。除了 systerm 配置,我們還有乙個防火牆的配置,這個我們在之後會詳細的介紹。接下來我們去看一下使用者的配置,我們剛才看到乙個管理端的使用者,管理端的使用者通過乙個 manager 關鍵字來區分。還有普通使用者,普通使用者可以配置 schema,控制這些使用者可以訪問到哪些 schema,比如乙個叫 testdb 的 schema,假如我在這裡把其中乙個刪掉,那從這個使用者登陸就看不見被刪掉的 schema 了,這一點和 mysql 有點像。manager 使用者是不能配置 schema 的。因為安全的問題,我們使用者會被加密,如果之前沒有加密,我們就去把他加密一下。password 位置是一串密文,還有一些 readonly 的開關配置,控制是否唯讀。這就是 server.xml 了。

我們來回溯一下,首先 rule.xml 定義了拆分演算法。然後 schema.xml 定義了 schema 的關係,schema 裡面 table,table 會使用到拆分演算法,路由到 datanode,datanote 是例項下面的資料庫,而 datahost 是直接對映到了例項。我們不同的資料庫再回到我們 table 裡面充當分片。最後 server.xml 定義了 dble 的基本引數和使用者資訊。強調一點,dble 專案繼承自 mycat。配置方面稍微有些不合理的地方,但是為了相容 mycat,並沒有把使用者配置從server.xml 裡面拆出來。未來可能會對整個 xml 的組織結構做大的變革,使它更合理。好,我們今天先介紹到這裡。

-docs-cn

-test-suite

第五課 文法

1.名詞 場所 行 來 帰 使用移動動詞時,移動的方向用助詞 表示。京都 行 我要去京都。日本 來 我來到了日本。帰 我要回家。注 助詞 讀作 2.行 行 完全否定疑問詞所問的全部範疇時,用助詞 與否定形式一起使用。行 也不去。何 食 什麼也不吃。第6課 沒有任何人在。第10課 3.名詞 交通工具 ...

C語言第五課

主要內容 二維陣列 字串陣列 多維陣列 理解 一 二維陣列 有兩個下標的陣列稱為二維陣列 定義 型別修飾符 陣列名 常量表示式1 常量表示式2 第一維的長度 第二維的長度 示例 定義乙個2行3列的二維陣列 int array 2 3 這是乙個標準的二維陣列 二維陣列的元素也稱為雙下標變數 0 1 2...

C語言第五課

c函式若不宣告型別,則預設為 int 型 在函式中,指標可以 被調函式 修改 主調函式 1 int func int a main 2 void func int num main int num 2 func int b 野指標會 指向任一地方 int pum printf x pum 指標偏移的...