rule可以自己编写比较函数,系统提供了Long 和 String的 其中Long用于例子的已经讲解的很详细。

代码中已经将count和length之积写死,我们要做的是提供count和length要符合这个要求。
可以在PartitionUtil.java中找到;
    
  1. // 分区长度:数据段分布定义,其中取模的数一定要是2^n, 因为这里使用x % 2^n == x & (2^n - 1)等式,来优化性能。
  2. private static final int PARTITION_LENGTH = 1024;
下面贴一个按照String作为规则的rule:
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. - Copyright 1999-2012 Alibaba Group.
  4. -
  5. - Licensed under the Apache License, Version 2.0 (the "License");
  6. - you may not use this file except in compliance with the License.
  7. - You may obtain a copy of the License at
  8. -
  9. - http://www.apache.org/licenses/LICENSE-2.0
  10. -
  11. - Unless required by applicable law or agreed to in writing, software
  12. - distributed under the License is distributed on an "AS IS" BASIS,
  13. - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. - See the License for the specific language governing permissions and
  15. - limitations under the License.
  16. -->
  17. <!DOCTYPE cobar:rule SYSTEM "rule.dtd">
  18. <cobar:rule xmlns:cobar="http://cobar.alibaba.com/">
  19. <!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 -->
  20. <tableRule name="rule2">
  21. <rule>
  22. <columns>siteid</columns>
  23. <algorithm><![CDATA[diffsite(${siteid}) ]]></algorithm>
  24. </rule>
  25. </tableRule>
  26. <function name="diffsite" class="com.alibaba.cobar.route.function.PartitionByString">
  27. <property name="partitionCount">512</property>
  28. <property name="partitionLength">2</property>
  29. <property name="hashSlice">-5:</property>
  30. </function>
  31. </cobar:rule>
如果使用的是 PartitionByString 那么则根据提供的String的hash值来做判断,如果hash是1那么就将该条记录分布在第一个库里。如果是2则分布在第二个库里。hash值可以计算某一段String里的,其hash方式如下,类似python。
   
  1. /**
  2. * "2" -> (0,2)<br/>
  3. * "1:2" -> (1,2)<br/>
  4. * "1:" -> (1,0)<br/>
  5. * "-1:" -> (-1,0)<br/>
  6. * ":-1" -> (0,-1)<br/>
  7. * ":" -> (0,0)<br/>
  8. */
  9. public static Pair<Integer, Integer> sequenceSlicing(String slice) {
  10. int ind = slice.indexOf(':');
  11. if (ind < 0) {
  12. int i = Integer.parseInt(slice.trim());
  13. if (i >= 0) {
  14. return new Pair<Integer, Integer>(0, i);
  15. } else {
  16. return new Pair<Integer, Integer>(i, 0);
  17. }
  18. }
  19. String left = slice.substring(0, ind).trim();
  20. String right = slice.substring(1 + ind).trim();
  21. int start, end;
  22. if (left.length() <= 0) {
  23. start = 0;
  24. } else {
  25. start = Integer.parseInt(left);
  26. }
  27. if (right.length() <= 0) {
  28. end = 0;
  29. } else {
  30. end = Integer.parseInt(right);
  31. }
  32. return new Pair<Integer, Integer>(start, end);
  33. }
说明 如下:
   
  1. str = ’0123456789′
  2. print str[0:3] #截取第一位到第三位的字符
  3. print str[:] #截取字符串的全部字符
  4. print str[6:] #截取第七个字符到结尾
  5. print str[:-3] #截取从头开始到倒数第三个字符之前
  6. print str[2] #截取第三个字符
  7. print str[-1] #截取倒数第一个字符
  8. print str[::-1] #创造一个与原字符串顺序相反的字符串
  9. print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
  10. print str[-3:] #截取倒数第三位到结尾
  11. print str[:-5:-3] #逆序截取,具体啥意思没搞明白?

cobar rule 简介相关推荐

  1. Linux系统route、ip route、ip rule简介

    一.相关概念 1. 路由(Routing) 路由是指设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程. 2. 路由表(routing table) 所谓路由表,是指路由 ...

  2. 阿里开源Mysql分布式中间件:Cobar

    这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的 ...

  3. Cobar分布式关系型数据库中间件的简单应用

    Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务. 产品在阿里巴巴B2B公司已经稳定运行了3年以上. 目前已经接管了3000+个MySQL数据库 ...

  4. cobar mysql cluster_Cobar使用文档(可用作MySQL大型集群解决方案)

    最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle ...

  5. Cobar部署与测试

    原文出自  http://www.abcdocker.com/abcdocker/84 Cobar部署与测试 一.Cobar介绍 1.1功能概述: Cobar是关系型数据的分布式处理系统,它可以在分布 ...

  6. JUnit的Rule的使用

    我们在使用JUnit的时候,为了使测试结果更加清晰明确,会有以下的需求: 一个类有多个测试方法,想知道日志是哪个测试方法 想在所有测试方法的前后加上一些语句,用于初始化和销毁一些资源 如果一个测试方法 ...

  7. MyCat:取代Cobar数据库中间件

    Cobar 是阿里巴巴开源的一个数据库中间件,为了解决类似proxy这类的问题.目前同类型的有奇虎360开源的Atlas.类似的有基本在线上用起来很不爽,问题多多的比如MySQL Proxy和SQL ...

  8. Alibaba的COBAR真是强大

     最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Ora ...

  9. alibaba的COBAR真是强大.

    最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle ...

最新文章

  1. hdu5441(2015长春网络赛E题)
  2. uvalive4836(枚举)
  3. ajax实现下拉列表联动
  4. memcached 和 redis 的区别与选择
  5. 洛谷 P1404 平均数
  6. Redis性能问题排查解决手册(七)
  7. 【LOJ】#2230. 「BJOI2014」大融合
  8. linux系统如何启用安全内核,安全 - Linux 内核引导选项简介
  9. web.config中文解释
  10. STL之Ranges区间讨论
  11. 电影:美国队长:复仇者先锋
  12. PR转场预设 模仿纸张翻转特效PR视频转场PR预设
  13. Java AES/ECB/PKCS5Padding加密和PHP解密的实现
  14. 移动硬盘上安装Ubuntu18.04系统
  15. 中文文本纠错算法走到多远了?
  16. Debian 12 Bookworm 尝鲜记
  17. 《互联网进化论》-破解互联网的奥秘
  18. html静态商城网页制作 基于HTML+CSS+JavaScript在线服装商城店铺商城设计毕业论文源码...
  19. 雨课堂知识点总结(十)
  20. 推荐一款微信 Markdown 编辑器

热门文章

  1. SIGIR‘20阿里巴巴利用Domain Adaptation在long-tail item上的实践
  2. CO11N-完工确认的BAPI使用
  3. 超高压SiC功率器件GENESIC的6500V碳化硅晶闸管SCR模块GA060TH65
  4. js实现点气球小游戏
  5. linux 日志 取证,Linux系统取证
  6. 利用短信商务通进行短信商务
  7. 静态HTML明星主页 HTML+CSS 周杰伦明星页面(学生课程设计网页设计制作大作业)
  8. Linux常用命令之搜索命令
  9. 河边的小屋原来是这么俗气的一个名字
  10. Idea导包正确还是显示标红(错误)