讀書筆記 Mycat權威指南 10 分片規則

2022-02-15 00:07:15 字數 2899 閱讀 4300

分片規則概述

在資料切分處理中,特別是水平切分中,中介軟體最終要的兩個處理過程就是資料的切分、資料的聚合。

選擇 合適的切分規則,至關重要,因為它決定了後續資料聚合的難易程度,甚至可以避免跨庫的資料聚合處理。

前面講了資料切分中重要的幾條原則,其中有幾條是資料冗餘,表分組(table group),

這都是業務上規 避跨庫 join 的很好的方式,但不是所有的業務場景都適合這樣的規則,因此本章將講述如何選擇合適的切分規則。

mycat 全域性表

如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或者資料量不大很少變動的表。

這些表往往不是特別大,而且大部分的業務場景都會用到,那麼這種表適合於mycat 全域性表,無須對資料 進行切分,只要在所有的分片上儲存乙份資料即可。

er 分片表

有一類業務,例如訂單(order)跟訂單明細(order_detail),明細表會依賴於訂單,也就是說會存在表的主 從關係。

這類似業務的切分可以抽象出合適的切分規則,比如根據使用者 id 切分,其他相關的表都依賴於使用者 id, 再或者根據訂單 id 切分,總之部分業務總會可以抽象出父子關係的表。

這類表適用於 er 分片表,子表的記錄與 所關聯的父表記錄存放在同乙個資料分片上,避免資料 join 跨庫操作。

多對多關聯

有一類業務場景是 「主表 a+關係表+主表 b」,舉例來說就是商戶會員+訂單+商戶,對應這類業務,如何 切分?

從會員的角度,如果需要查詢會員購買的訂單,那按照會員進行切分即可。

但是如果要查詢商戶當天售出的訂單,那又需要按照商戶做切分,可是如果既要按照會員又要按照商戶切分,幾乎是無法實現,這類業務如何選 擇切分規則非常難。

目前還暫時無法很好支援這種模式下的 3 個表之間的關聯。目前總的原則是需要從業務角度 來看,關係表更偏向哪個表,即「a 的關係」還是「b 的關係」,來決定關係表跟從那個方向儲存。

未來 mycat 版本中將考慮將中間表進行雙向複製,以實現從 a-關係表 以及 b-關係表的雙向關聯查詢如下圖所示:

mycat 常用的分片規則

分片列舉

通過在配置檔案中配置可能的列舉 id,自己配置分片,本規則適用於特定的場景,比如有些業務需要按照省 份或區縣來做儲存,而全國省份區縣固定的,這類業務使用本條規則。

固定分片 hash 演算法

本條規則類似於十進位制的求模運算,區別在於是二進位制的操作,是取 id 的二進位制低 10 位,即 id 二進位制 &1111111111。

此演算法的優點在於如果按照 10 進製取模運算,在連續插入 1-10 時候 1-10 會被分到 1-10 個分片,增 大了插入的事務控制難度,而此演算法根據二進位制則可能會分到連續的分片,減少插入事務事務控制難度。

範圍約定

此分片適用於,提前規劃好分片字段某個範圍屬於哪個分片, start <= range <= end. range start-end ,data node index k=1000,m=10000。

取模

此規則為對分片字段求摸運算。

按日期(天)分片

此規則為按天分片。

取模範圍約束

此種規則是取模運算與範圍約束的結合,主要為了後續資料遷移做準備,即可以自主決定取模後資料的節點分布。

擷取數字做 hash 求模範圍約束

此種規則類似於取模範圍約束,此規則支援資料符號字母取模。

應用指定

此規則是在執行階段有應用自主決定路由到那個分片。

擷取數字 hash 解析

此規則是擷取字串中的 int 數值 hash 分片。

一致性 hash

一致性 hash 預算有效解決了分布式資料的擴容問題。

按單月小時拆分

此規則是單月內按照小時拆分,最小粒度是小時,可以一天最多 24 個分片,最少 1 個分片,乙個月完後下月 從頭開始迴圈。 每個月月尾,需要手工清理資料。

範圍求模分片

先進行範圍分片計算出分片組,組內再求模 優點可以避免擴容時的資料遷移,又可以一定程度上避免範圍分片的熱點問題。

綜合了範圍分片和求模分片的優點,分片組內使用求模可以保證組內資料比較均勻,分片組之間是範圍分片 可以兼顧範圍查詢。

最好事先規劃好分片的數量,資料擴容時按分片組擴容,則原有分片組的資料不需要遷移。由於分片組內數 據比較均勻,所以分片組內可以避免熱點資料問題。

日期範圍 hash 分片

思想與範圍求模一致,當由於日期在取模會有資料集中問題,所以改成 hash 方法。

先根據日期分組,再根據時間 hash 使得短期內資料分布的更均勻 優點可以避免擴容時的資料遷移,又可以一定程度上避免範圍分片的熱點問題。

冷熱資料分片

根據日期查詢日誌資料 冷熱資料分布 ,最近 n 個月的到實時交易庫查詢,超過 n 個月的按照 m 天分片。

自然月分片

按月份列分割槽 ,每個自然月乙個分片,格式 between 操作解析的範例

許可權控制

目前 mycat 對於中介軟體的連線控制並沒有做太複雜的控制,目前只做了中介軟體邏輯庫級別的讀寫許可權控制。

《CSS權威指南》讀書筆記

第二章 選擇器 第三章 結構和層疊 第四章 值和單位 第五章 字型 第六章 文字屬性 第七章 基本視覺格式化 第八章 內邊距邊框和外邊距 第九章 顏色和背景 第十章 浮動和定位 第十一章 表布局 第十二章 列表與生成內容 第十三章 使用者介面樣式 第十四章 非螢幕 import url sheet....

Http權威指南讀書筆記

1.1 http使用的是可靠的資料傳輸協議。1.3 型別 mime型別 multipurpose internet mail extension多用途網際網路郵件擴充套件 是為了解決在不同的電子郵件系統之間搬移報文時存在的問題。mime在電子郵件系統中工作得非常好,因此http也採納了它,用它來描述...

css權威指南 讀書筆記

網上看見推薦的書總是喜歡買回家,但是大多數時候都不會立即就看,都是在書櫥裡蒙上了一層灰塵。從畢業到現在,由於公司業務原因,寫js多餘css,所以就想系統地看看css,並且做一些練習,於是就開始看 css權威指南 看到了第六章,初步感覺,對於工作一年的我來說,很簡單,當然也有一些我不熟悉的知識點,於是...