數據庫水平切分(MyCat分片)

範圍分片

io.mycat.route.function.AutoPartitionByLong 自動範圍分片html

Function名稱:rang-long(配置文件默認)java

枚舉分片

io.mycat.route.function.PartitionByFileMap 枚舉分片mysql

Funtion名稱:hash-int(配置文件默認)git

默認分片defaultNodegithub

<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">

      <property name="mapFile">partition-hash-int.txt</property>

      <property name="defaultNode">0</property>

</function>

Mycat熱加載算法

mysql -uroot -p123456 -h172.17.0.1 -P9066

mysql> reload @@config;

 

Hash固定分片(固定分片Hash算法)***

io.mycat.route.function.PartitionByLong 固定分片Hash算法sql

<property name="partitionCount">1,1,2,3,1</property>

<property name="partitionLength">128,128,128,128,128</property>

partitionCount.length必須等於partitionLength.lengthspa

partitionCount*partitionLength=1024.net

求模分片

io.mycat.route.function.PartitionByModcode

存儲分片規則:分片字段id%分片數=分片下標;

天然月分片

io.mycat.route.function.PartitionByMonth

按照天然月的方式進行分片。

<function name="partbymonth" class="io.mycat.route.function.PartitionByMonth">

     <property name="dateFormat">yyyy-MM-dd</property>

     <property name="sBeginDate">2015-01-01</property>

     property name="sEndDate">2015-03-31</property>
</function>

sEndDate - sBeginDate     長度爲3時

db1:   1 4 7 10

db2:   2 5 8 11

db3:   3 6 9 12

匹配求模分片

io.mycat.route.function.PartitionByPrefixPattern

根據編號截取n個字符,而後和分區長度進行求模,得出的值就是分區編號。

<property name="patternValue">3</property>  //分區長度/分區數量

<property name="prefixLength">6</property>  //截取多少字符串

<function name="partbypattern"  class="io.mycat.route.function.PartitionByPrefixPattern">
      <property name="patternValue">3</property>
      <property name="prefixLength">6</property>
</function>

冷熱數據分片

public static void main(String[] args) {
      PartitionByHotDate hd = new PartitionByHotDate();
      hd.dateFormat = "yyyy-MM-dd";
      hd.sLastDay = "30";   //熱庫存儲多少天數據
      hd.sPartionDay = "30";//超過熱庫期限的數據按照多少天來分片
      hd.init();
      System.out.println(hd.calculate("2017-08-01"));
}

一致性哈希分片

特色:解決數據均勻分佈

http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html

 

分片原理

https://github.com/MyCATApache/Mycat-Server

下載源碼Git clone https://github.com/MyCATApache/Mycat-Server.git

分片規則路徑:io.mycat.route.function

相關文章
相關標籤/搜索