精华内容
下载资源
问答
  • 但是因为历史问题存在两种分布式中间件,分别是Mycat和DBLE,共用一组后端MySQL实例。分片规则以及后端数据完全一致。最近碰到了一个比较有意思的场景,财务结算单来往明细业务来往单据的关联查询。一条跨节点join...

    背景

      某一零售业后端使用了分布式中间件+MySQL数据库作为后端存储。但是因为历史问题存在两种分布式中间件,分别是Mycat和DBLE,共用一组后端MySQL实例。分片规则以及后端数据完全一致。最近碰到了一个比较有意思的场景,财务结算单来往明细和业务来往单据的关联查询。一条跨节点join查询在DBLE、Mycat的查询得到的结果不一致。究竟谁对谁错?

     

    环境准备

      在虚拟机搭建类似架构,模拟场景,比较Mycat-DBLE在跨节点join上的异同点。

     

    测试架构

    测试环境架构比较简单,DBLE与Mycat公用数据库。

     

     

    测试软件版本

     

     

    表结构

    结算单来往明细表

    CREATE TABLE `t_bl_detail` (
      `unit_num` int(11) DEFAULT NULL,
      `tenantid` int(11) DEFAULT NULL,
      `detail_num` int(11) DEFAULT NULL,
      `balance_date` datetime DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    业务来往单据表

    CREATE TABLE `t_bl_super_detail` (
      `unit_num` int(11) DEFAULT NULL,
      `sup_id` int(11) DEFAULT NULL,
      `tenantid` int(11) DEFAULT NULL,
      `bl_unit_num` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    分片规则配置

    配置表t_bl_detail、t_bl_super_detail,使用取模算法,数据分布在db1-4四个database中。

    schema配置

    DBLE:

     <schema name="testdb" sqlMaxLimit="100" dataNode="dn01">
            <table name="t_bl_detail" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
            <table name="t_bl_super_detail" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
        </schema>
        <dataNode name="dn01" dataHost="group1" database="db1"></dataNode>
        <dataNode name="dn02" dataHost="group2" database="db2"></dataNode>
        <dataNode name="dn03" dataHost="group1" database="db3"></dataNode>
        <dataNode name="dn04" dataHost="group2" database="db4"></dataNode>
        <dataHost name="group1" maxCon="100" minCon="5" balance="0" switchType="-1">
            <heartbeat>select user()</heartbeat>
            <writeHost host="mysql-w9zhkr" url="1.1.1.26:3306" user="ushard" password="VRDkwsUlq++O3HeamsDcuW/2K22si3RIhcTpAdjalbkiinNAeUUDWk11ttls1Z3PXY5TxGJToeK4LsJE3+k0Wg==" id="mysql-w9zhkr" usingDecrypt="1"></writeHost>
        </dataHost>
        <dataHost name="group2" maxCon="100" minCon="5" balance="0" switchType="-1">
            <heartbeat>select user()</heartbeat>
            <writeHost host="mysql-ci2va0" url="1.1.1.27:3306" user="ushard" password="O/iCi0F+9ts5YR78ZcQnKzpb5GqG7xSUzJcO44yZ3BhNkT5E7aiZakmz1tbKIQylnqh20vu5Z9egXBUC3GOKow==" id="mysql-ci2va0" usingDecrypt="1"></writeHost>
        </dataHost>

     

    Mycat:

    <schema name="testdb" sqlMaxLimit="100" dataNode="dn01">
            <table name="t1" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
            <table name="t2" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
        </schema>
        <dataNode name="dn01" dataHost="group1" database="db1"></dataNode>
        <dataNode name="dn02" dataHost="group2" database="db2"></dataNode>
        <dataNode name="dn03" dataHost="group1" database="db3"></dataNode>
        <dataNode name="dn04" dataHost="group2" database="db4"></dataNode>
        <dataHost name="group1" maxCon="100" minCon="5" balance="0" switchType="-1" dbType="mysql" dbDriver="native">
            <heartbeat>select user()</heartbeat>
            <writeHost host="mysql-w9zhkr" url="1.1.1.26:3306" user="ushard" password="ushard"></writeHost>
        </dataHost>
        <dataHost name="group2" maxCon="100" minCon="5" balance="0" switchType="-1" dbType="mysql" dbDriver="native">
            <heartbeat>select user()</heartbeat>
            <writeHost host="mysql-ci2va0" url="1.1.1.27:3306" user="ushard" password="ushard"></writeHost>
        </dataHost>

     

    rule配置

    DBLE:

    <tableRule name="mod4Series">
            <rule>
                <columns>unit_num</columns>
                <algorithm>mod4DB</algorithm>
            </rule>
        </tableRule>
        <function name="mod4DB" class="Hash">
            <property name="partitionCount">4</property>
            <property name="partitionLength">1</property>
        </function>

     

    Mycat:

    <tableRule name="mod4Series">
            <rule>
                <columns>id</columns>
                <algorithm>mod4DB</algorithm>
            </rule>
        </tableRule>
        <function name="mod4DB" class="io.mycat.route.function.PartitionByMod">
            <property name="count">4</property>
        </function>

     

    比对开始

    准备测试数据

    随便登录哪一台中间件写入测试数据

    insert into t_bl_detail values(1,3,123443,'2019-01-01 00:00:00');
    insert into t_bl_detail values(2,3,3423524,'2019-01-01 00:00:00');
    insert into t_bl_detail values(3,3,245245,'2019-01-01 00:00:00');
    insert into t_bl_detail values(4,4,356356,'2019-01-01 00:00:00');
    
    
    insert into t_bl_super_detail values(1,10342,3,2);
    insert into t_bl_super_detail values(2,12355,3,2);
    insert into t_bl_super_detail values(3,62542,3,3);
    insert into t_bl_super_detail values(4,74235,4,1);

     

     

    执行跨节点join查询:

    select
     m.unit_num,
     n.sup_id,
     n.tenantid,
     m.detail_num,
     n.bl_unit_num,
     m.balance_date
    from
     t_bl_detail m
    join t_bl_super_detail n on
     m.tenantid = n.tenantid
    where
     n.tenantid = 3
     and m.unit_num = n.bl_unit_num;

    在通过中间件之前,先在MySQL中执行一遍看下结果,作为预期结果供后续案例使用。

     

     

    分别通过DBLE、mycat执行跨节点join语句

     

     

     

     

      可看到相同的查询语句,DBLE执行结果符合预期,Mycat执行结果缺失。数据差异在于DBLE查询结果相较于Mycat多了跨节点的结果。虽然Mycat执行跨节点join不报错,但是查询结果却和预期不一致。

     

    执行计划

    只从结果上判断并没有办法知道是什么原因导致了Mycat结果缺失,查看查询计划,比较两者差异。

    DBLE

    通过DBLE的执行计划可看出,DBLE内部分别对结算明细表、业务单据表做了各自的数据查询,将查询结果在中间层做了merge。最后获得跨节点join的结果

    • DBLE的执行计划
    mysql> explain select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num;
    +-----------------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | DATA_NODE       | TYPE          | SQL/REF                                                                                                                                                              |
    +-----------------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | dn01_0          | BASE SQL      | select `m`.`unit_num`,`m`.`detail_num`,`m`.`balance_date`,`m`.`tenantid` from  `t_bl_detail` `m` where m.tenantid = 3 ORDER BY `m`.`tenantid` ASC,`m`.`unit_num` ASC |
    | dn02_0          | BASE SQL      | select `m`.`unit_num`,`m`.`detail_num`,`m`.`balance_date`,`m`.`tenantid` from  `t_bl_detail` `m` where m.tenantid = 3 ORDER BY `m`.`tenantid` ASC,`m`.`unit_num` ASC |
    | dn03_0          | BASE SQL      | select `m`.`unit_num`,`m`.`detail_num`,`m`.`balance_date`,`m`.`tenantid` from  `t_bl_detail` `m` where m.tenantid = 3 ORDER BY `m`.`tenantid` ASC,`m`.`unit_num` ASC |
    | dn04_0          | BASE SQL      | select `m`.`unit_num`,`m`.`detail_num`,`m`.`balance_date`,`m`.`tenantid` from  `t_bl_detail` `m` where m.tenantid = 3 ORDER BY `m`.`tenantid` ASC,`m`.`unit_num` ASC |
    | merge_1         | MERGE         | dn01_0; dn02_0; dn03_0; dn04_0                                                                                                                                       |
    | shuffle_field_1 | SHUFFLE_FIELD | merge_1                                                                                                                                                              |
    | dn01_1          | BASE SQL      | select `n`.`sup_id`,`n`.`tenantid`,`n`.`bl_unit_num` from  `t_bl_super_detail` `n` where n.tenantid = 3 ORDER BY `n`.`tenantid` ASC,`n`.`bl_unit_num` ASC            |
    | dn02_1          | BASE SQL      | select `n`.`sup_id`,`n`.`tenantid`,`n`.`bl_unit_num` from  `t_bl_super_detail` `n` where n.tenantid = 3 ORDER BY `n`.`tenantid` ASC,`n`.`bl_unit_num` ASC            |
    | dn03_1          | BASE SQL      | select `n`.`sup_id`,`n`.`tenantid`,`n`.`bl_unit_num` from  `t_bl_super_detail` `n` where n.tenantid = 3 ORDER BY `n`.`tenantid` ASC,`n`.`bl_unit_num` ASC            |
    | dn04_1          | BASE SQL      | select `n`.`sup_id`,`n`.`tenantid`,`n`.`bl_unit_num` from  `t_bl_super_detail` `n` where n.tenantid = 3 ORDER BY `n`.`tenantid` ASC,`n`.`bl_unit_num` ASC            |
    | merge_2         | MERGE         | dn01_1; dn02_1; dn03_1; dn04_1                                                                                                                                       |
    | shuffle_field_3 | SHUFFLE_FIELD | merge_2                                                                                                                                                              |
    | join_1          | JOIN          | shuffle_field_1; shuffle_field_3                                                                                                                                     |
    | shuffle_field_2 | SHUFFLE_FIELD | join_1                                                                                                                                                               |
    +-----------------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    14 rows in set (0.00 sec)

     

    Mycat

    Mycat对于跨结点join的处理则相对暴力,直接将查询语句下发到各个节点,最后将结果进行汇总,如果表连接涉及到跨节点。则跨节点的数据无法进行join。

    • Mycat的执行计划
    mysql> explain select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num;
    +-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | DATA_NODE | SQL                                                                                                                                                                                                    |
    +-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | dn01      | select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num |
    | dn02      | select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num |
    | dn03      | select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num |
    | dn04      | select m.unit_num,n.sup_id,n.tenantid,m.detail_num,n.bl_unit_num,m.balance_date from t_bl_detail m join t_bl_super_detail n on m.tenantid=n.tenantid where n.tenantid = 3 and m.unit_num=n.bl_unit_num |
    +-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    4 rows in set (0.00 sec)

    总结

    Mycat是一款非常优秀的分布式中间件,但是在某些细节方面处理的不尽人意。在跨节点关联查询场景下,Mycat采取的策略是直接将语句透传到各个节点上,将获取到的结果整合后返回,得到的结果集合预期结果有出入,缺失了跨节点关联的数据。

    DBLE处理跨节点的关联查询是先获取到关联需要的数据,提取到中间件进行融合,得到关联的结果并返回。得到的结果集符合预期,与MySQL执行结果一致。可见DBLE在跨节点关联查询方面做了优化,能够提供准确的查询结果。

     

    展开全文
  • 本文目录 一、背景 二、DBLE 项目介绍 三、环境准备  1.测试架构  2.测试软件版本  3.表结构  4.分片规则配置 schema配置 ... 1.... 2.... 3.... DBLE ... Mycat 五、总结   1.背...

    本文目录

    一、背景

    二、DBLE 项目介绍

    三、环境准备

         1.测试架构

         2.测试软件版本

         3.表结构

         4.分片规则配置

    • schema配置

    • rule配置

    四、比对开始

        1.准备测试数据

        2.执行跨节点join查询

        3.执行计划

    • DBLE

    • Mycat

    五、总结

     

    1.背景

     

    某一零售业后端使用了分布式中间件+ MySQL 数据库作为后端存储。但是因为历史问题存在两种分布式中间件,分别是 Mycat 和 DBLE ,共用一组后端 MySQL实例。分片规则以及后端数据完全一致。最近碰到了一个比较有意思的场景,财务结算单来往明细和业务来往单据的关联查询。一条跨节点 join 查询在 DBLE、Mycat 的查询得到的结果不一致。究竟谁对谁错?

     

    2.DBLE 项目介绍

     

    DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus;以其简单稳定,持续维护,良好的社区环境和广大的群众基础得到了社区的大力支持;

     

    DBLE官方网站:

    https://opensource.actionsky.com 

    可以详细了解DBLE的背景和应用场景,本文不涉及到的细节都可在官方文档获得更细节都信息;对于刚了解到同学,可以以本文为快速入门基础

    DBLE 官方项目:

    https://github.com/actiontech/dble

    如对源码有兴趣或者需要定制的功能的可以通过源码编译安装

    DBLE 下载地址:

    https://github.com/actiontech/dble/releases

    DBLE 官方社区交流群:669663113

     

    3.环境准备

     

    在虚拟机搭建类似架构,模拟场景,比较 Mycat-DBLE 在跨节点 join 上的异同点。

     

    3.1测试架构

     

    测试环境架构比较简单,DBLE 与 Mycat 共用数据库。

     

     

    3.2测试软件版本

     

    软件名称

    软件版本

    端口

    管理端口

     dble

    dble-2.18.10.1-cb392c3-20181106093917

    3309

    3310

     mycat

    mycat-1.6-RELEASE-20161028204710

    8066

    9066

     MySQL

    5.7.21-log

    3306

     

    3.3表结构

     

    ▽ 结算单来往明细表

     

    CREATE TABLE `t_bl_detail` (
      `unit_num` int(11) DEFAULT NULL,
      `tenantid` int(11) DEFAULT NULL,
      `detail_num` int(11) DEFAULT NULL,
      `balance_date` datetime DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

     

    ▽ 业务来往单据表

     

    CREATE TABLE `t_bl_super_detail` (
      `unit_num` int(11) DEFAULT NULL,
      `sup_id` int(11) DEFAULT NULL,
      `tenantid` int(11) DEFAULT NULL,
      `bl_unit_num` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    3.4分片规则配置

     

    配置表t_bl_detail、t_bl_super_detail,使用取模算法,数据分布在db1-db4四个database中。

     

    • 3.41schema配置

       

    ▽ DBLE - schema 配置

     

    <schema name="testdb" sqlMaxLimit="100" dataNode="dn01">
          <table name="t_bl_detail" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
          <table name="t_bl_super_detail" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
      </schema>
      <dataNode name="dn01" dataHost="group1" database="db1"></dataNode>
      <dataNode name="dn02" dataHost="group2" database="db2"></dataNode>
      <dataNode name="dn03" dataHost="group1" database="db3"></dataNode>
      <dataNode name="dn04" dataHost="group2" database="db4"></dataNode>
      <dataHost name="group1" maxCon="100" minCon="5" balance="0" switchType="-1">
          <heartbeat>select user()</heartbeat>
          <writeHost host="mysql-w9zhkr" url="1.1.1.26:3306" user="ushard" 
    password="VRDkwsUlq++O3HeamsDcuW/2K22si3RIhcTpAdjalbkiinNAeUUDWk11ttls1Z3PXY5TxGJToeK4LsJE3+k0Wg==" 
    id="mysql-w9zhkr" usingDecrypt="1"></writeHost>
      </dataHost>
      <dataHost name="group2" maxCon="100" minCon="5" balance="0" switchType="-1">
          <heartbeat>select user()</heartbeat>
          <writeHost host="mysql-ci2va0" url="1.1.1.27:3306" user="ushard" 
    password="O/iCi0F+9ts5YR78ZcQnKzpb5GqG7xSUzJcO44yZ3BhNkT5E7aiZakmz1tbKIQylnqh20vu5Z9egXBUC3GOKow==" 
    id="mysql-ci2va0" usingDecrypt="1"></writeHost>
      </dataHost>

     

    ▽ Mycat - schema 配置

     

    <schema name="testdb" sqlMaxLimit="100" dataNode="dn01">
         <table name="t1" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
         <table name="t2" rule="mod4Series" dataNode="dn01,dn02,dn03,dn04"></table>
      </schema>
      <dataNode name="dn01" dataHost="group1" database="db1"></dataNode>
      <dataNode name="dn02" dataHost="group2" database="db2"></dataNode>
      <dataNode name="dn03" dataHost="group1" database="db3"></dataNode>
      <dataNode name="dn04" dataHost="group2" database="db4"></dataNode>
      <dataHost name="group1" maxCon="100" minCon="5" balance="0" 
    switchType="-1" dbType="mysql" dbDriver="native">
          <heartbeat>select user()</heartbeat>
          <writeHost host="mysql-w9zhkr" url="1.1.1.26:3306" 
    user="ushard" password="ushard"></writeHost>
      </dataHost>
      <dataHost name="group2" maxCon="100" minCon="5" balance="0" 
    switchType="-1" dbType="mysql" dbDriver="native">
          <heartbeat>select user()</heartbeat>
          <writeHost host="mysql-ci2va0" url="1.1.1.27:3306" 
    user="ushard" password="ushard"></writeHost>
      </dataHost>

     

    • 3.42rule 配置

     

     

    ▽ DBLE - rule 配置

     

    <tableRule name="mod4Series">
         <rule>
             <columns>unit_num</columns>
             <algorithm>mod4DB</algorithm>
         </rule></tableRule><function name="mod4DB" class="Hash">
         <property name="partitionCount">4</property>
         <property name="partitionLength">1</property></function>

     

    ▽ Mycat - rule 配置

     

    <tableRule name="mod4Series">
        <rule>
           <columns>id</columns>
           <algorithm>mod4DB</algorithm>
        </rule></tableRule><function name="mod4DB" class="io.mycat.route.function.PartitionByMod">
        <property name="count">4</property></function>

     

    4.比对开始

     

    4.1准备测试数据

     

    登录任意一台中间件写入测试数据:

     

    insert into t_bl_detail values(1,3,123443,'2019-01-01 00:00:00');
    insert into t_bl_detail values(2,3,3423524,'2019-01-01 00:00:00');
    insert into t_bl_detail values(3,3,245245,'2019-01-01 00:00:00');
    insert into t_bl_detail values(4,4,356356,'2019-01-01 00:00:00');
    
    
    insert into t_bl_super_detail values(1,10342,3,2);
    insert into t_bl_super_detail values(2,12355,3,2);
    insert into t_bl_super_detail values(3,62542,3,3);
    insert into t_bl_super_detail values(4,74235,4,1);

     

    4.2执行跨节点 join 查询

     

    select
     m.unit_num,
     m.balance_date
    from
     t_bl_detail m
    join t_bl_super_detail n 
    where
     n.tenantid = 3
     and m.unit_num = n.bl_unit_num;

     

    在通过中间件之前,现在 MySQL 中执行一遍看下结果,作为预期结果供后续案例使用。

     

     

     

    分别通过 DBLE、Mycat 执行跨节点 join 语句。

     

    ▽ DBLE 执行跨节点 join 语句

     

     

    ▽ Mycat  执行跨节点 join 语句

     

     

     

    可看到相同的查询语句,DBLE 执行结果符合预期,Mycat 执行结果缺失。数据差异在于 DBLE 查询结果相较于 Mycat 多了跨节点的结果。虽然 Mycat 执行跨节点 join 不报错,但是查询结果却和预期不一致。

     

    4.3执行计划

     

    只从结果上判断并没有办法知道是什么原因导致了 Mycat 结果缺失,查看查询计划,比较两者差异。

     

    • 4.31DBLE

     

    通过 DBLE 的执行计划可看出,DBLE 内部分别对结算明细表、业务单据表做了各自的数据查询,将查询结果在中间层做了merge。最后获得跨节点 join 的结果。

     

     

    • 4.32Mycat

     

    Mycat 对于跨节点 join 的处理则相对暴力,直接将查询语句下发到各个节点,最后将结果进行汇总,如果表连接涉及到跨节点。则跨节点的数据无法进行 join。

     

     

    5.总结

     

    Mycat 是一款非常优秀的分布式中间件,但是在某些细节方面处理的不尽人意。在跨节点关联查询场景下,Mycat 采取的策略是直接将语句透传到各个节点上,将获取到的结果整合后返回,得到的结果集和预期结果有出入,缺失了跨节点关联的数据。

     

    DBLE 处理跨节点的关联查询是先获取到关联需要的数据,提取到中间件进行融合,得到关联查询的结果并返回。得到的结果集符合预期,与 MySQL 执行结果一致。可见 DBLE 在跨节点关联查询方面做了优化,能够提供准确的查询结果。

     

     

    展开全文
  • IT江湖百晓生主讲嘉宾:阎虎青微信号:yanhuqing小鲜肉耶大牛...《 金融级MySQL高可用方案选型》分享主题周四见|知数堂免费公开课系列之《开源中间件DBLEMyCAT的增强与改进》PPT页数51页分享时长1个小时随着移动互联
        
    0?wx_fmt=gif&wxfrom=5&wx_lazy=1640.png?wxfrom=5&wx_lazy=1IT江湖百晓生

    主讲嘉宾:阎虎青

    微信号:yanhuqing

    640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

    小鲜肉耶640?wxfrom=5&wx_lazy=1

    大牛背景:

    就职于爱可生

    负责分布式数据库中间件研发工作

    持续专注于数据库方面的技术, 始终在一线从事开发

    对数据复制,读写分离,分库分表的有很深的理解和实践

    爱可生上期公开课分享:

    《 金融级MySQL高可用方案选型》


    分享主题

    周四见|知数堂免费公开课系列

    开源中间件DBLE对MyCAT的增强与改进

    PPT页数51页分享时长1个小时

    随着移动互联网、物联网,人工智能等技术兴起

    MySQL的水平拆分已成为不可避免的技术痛点

    分库分表的中间件也应运而生~

    MyCAT作为一款著名的开源分布式中间件

    能否完美解决技术难题?

    使用中你是否踩过坑?

    或者前方是否有坑在等着你?

    ......

    而爱可生开源的分布式中间件—dble

    作为一个MyCAT的优秀继承者以及良好替代者

    解决了MyCAT遇到的哪些问题和限制?

    且听老师娓娓道来~

    640?wx_fmt=jpeg

    划重点/划重点/划重点~

    640?wx_fmt=png

    1、系统性解决复杂查询

    2、明晰SQL语法支持边界

    3、增强了语法兼容性

    4、保障开源项目的代码质量

    640?wx_fmt=png


    分享时间

    2017年12月28日(周四见)

    20:30-21:30


    分享方式

    线上直播,不限地域,火星也行640?

    听课前,你需要完成以下操作:
    1

    zoom会议直播使用流程


    (1)下载Zoom客户端(手机/电脑均可)

    国际版官网:http://zoom.us/download

    扫码也可直接下载:

    640?wx_fmt=png


    (2)ZOOM课程视频直播


    (打开客户端,输入会议ID: 577-556-547  

    密码: zhishutang )


    2

    加入QQ技术交流群

    扫码加入知数堂技术交流QQ群

    (群号:579036588)

    群内将同步分享讲义,并可与讲师互动,

    还可@助教们获取更多课程信息!

    640?wx_fmt=png


    已在一,二群的不用再加群,

    知数堂三个群同时进行直播!!!




    640?640?640?640?


    知数堂

    叶金荣与吴炳锡联合打造

    领跑IT精英培训

    行业资深专家强强联合,倾心定制

    MySQL实战/MySQL优化 / Python/ SQL优化

    数门精品课程

    紧随技术发展趋势,定期优化培训教案

    融入大量生产案例,贴合企业一线需求

    社群陪伴学习,一次报名,可学3期

    DBA、开发工程师必修课

    上千位学员已华丽转身,薪资翻番,职位提升

    改变已悄然发生,你还在等什么?

    640.png?

    扫码下载知数堂精品课程试听视频

    或点击“阅读原文”直达下载地址

    (MySQL 实战/优化、Python开发,及SQL优化等课程)

    密码:hg3h


    640?wx_fmt=png

    640.png?


    展开全文
  • DBLE解决了MyCAT的哪些坑?

    千次阅读 2017-12-28 00:00:00
    IT江湖百晓生主讲嘉宾:阎虎青微信号:yanhuqing小鲜肉耶大牛...《 金融级MySQL高可用方案选型》分享主题周四见|知数堂免费公开课系列之《开源中间件DBLEMyCAT的增强与改进》PPT页数51页分享时长1个小时随着移动互联
        
    0?wx_fmt=gif&wxfrom=5&wx_lazy=1640.png?wxfrom=5&wx_lazy=1IT江湖百晓生

    主讲嘉宾:阎虎青

    微信号:yanhuqing

    640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

    小鲜肉耶640?wxfrom=5&wx_lazy=1

    大牛背景:

    就职于爱可生

    负责分布式数据库中间件研发工作

    持续专注于数据库方面的技术, 始终在一线从事开发

    对数据复制,读写分离,分库分表的有很深的理解和实践

    爱可生上期公开课分享:

    《 金融级MySQL高可用方案选型》


    分享主题

    周四见|知数堂免费公开课系列

    开源中间件DBLE对MyCAT的增强与改进

    PPT页数51页分享时长1个小时

    随着移动互联网、物联网,人工智能等技术兴起

    MySQL的水平拆分已成为不可避免的技术痛点

    分库分表的中间件也应运而生~

    MyCAT作为一款著名的开源分布式中间件

    能否完美解决技术难题?

    使用中你是否踩过坑?

    或者前方是否有坑在等着你?

    ......

    而爱可生开源的分布式中间件—dble

    作为一个MyCAT的优秀继承者以及良好替代者

    解决了MyCAT遇到的哪些问题和限制?

    且听老师娓娓道来~

    640?wx_fmt=jpeg

    划重点/划重点/划重点~

    640?wx_fmt=png

    1、系统性解决复杂查询

    2、明晰SQL语法支持边界

    3、增强了语法兼容性

    4、保障开源项目的代码质量

    640?wx_fmt=png


    分享时间

    2017年12月28日(周四见)

    20:30-21:30


    分享方式

    线上直播,不限地域,火星也行640?

    听课前,你需要完成以下操作:
    1

    zoom会议直播使用流程


    (1)下载Zoom客户端(手机/电脑均可)

    国际版官网:http://zoom.us/download

    扫码也可直接下载:

    640?wx_fmt=png


    (2)ZOOM课程视频直播


    (打开客户端,输入会议ID: 577-556-547  

    密码: zhishutang )


    2

    加入QQ技术交流群

    扫码加入知数堂技术交流QQ群

    (群号:579036588)

    群内将同步分享讲义,并可与讲师互动,

    还可@助教们获取更多课程信息!

    640?wx_fmt=png


    已在一,二群的不用再加群,

    知数堂三个群同时进行直播!!!




    640?640?640?640?


    知数堂

    叶金荣与吴炳锡联合打造

    领跑IT精英培训

    行业资深专家强强联合,倾心定制

    MySQL实战/MySQL优化 / Python/ SQL优化

    数门精品课程

    紧随技术发展趋势,定期优化培训教案

    融入大量生产案例,贴合企业一线需求

    社群陪伴学习,一次报名,可学3期

    DBA、开发工程师必修课

    上千位学员已华丽转身,薪资翻番,职位提升

    改变已悄然发生,你还在等什么?

    640.png?

    扫码下载知数堂精品课程试听视频

    或点击“阅读原文”直达下载地址

    (MySQL 实战/优化、Python开发,及SQL优化等课程)

    密码:hg3h


    640?wx_fmt=png

    640.png?


    展开全文
  • MyCat&DBLE

    2019-12-03 14:09:00
     MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户开源把它看作是一个数据库代理,用MySQL客户端工具命令行访问,其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC...
  • 我们已经通过之前的六篇文章,介绍了 DBLE MyCat 常见的六种分片算法,那么我们来做个总结吧! DBLEMyCat 对应分片算法名异同 第七种 DBLE分片算法—jumpStringHash 除了以上六种常见的分片算法...
  • 作者简介 蓝寅,开源分布式中间件DBLE项目负责人...用benchmarksql_for_mysql对原生MyCat-1.6.1和DBLE-2.17.07版做性能测试对比,发现DBLE性能只到原生版MyCat的70%左右。 问题分析过程: 分析过程主要有以下内...
  • 问题起因:用benchmarksql_for_mysql对原生MyCat-1.6.1和DBLE-2.17.07版做性能测试对比,发现DBLE性能只到原生版MyCat的70%左右。 问题分析过程:分析过程主要有以下内容:包括现象,收集数据,分析猜测原因,验证...
  • 分库分表最初不需要中间件,由各自应用的开发人员自己来负责,应用除了要了解业务逻辑以外,还需要明确完整的拆分规则,成本较高,对开发人员要求也很高,并且不利于任务逻辑的解耦。因此,中间件应运而生。分布式...
  • 关于作者 钟 悦 - 资深DBLE用户 某宇宙行资深架构师,在大型重点项目中使用 ...用户在rule.xml中配置枚举值文件路径分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表 在DBLE...
  • 关于作者 钟 悦 - 资深DBLE用户 某宇宙行资深架构师,在大型重点项目中使用 DBLE。 常年与 MySQL 纠缠不清,经常运用技术处理大企业病...用户需要在 rule.xml 中定义 partitionLength[] partitionCount[] 两个数...
  • 关于作者 钟 悦 - 资深DBLE用户 某宇宙行资深架构师,在大型重点项目中使用 DBLE。 常年与 MySQL 纠缠不清,经常运用技术处理大企业病的技术or非技术问题的一个...环状模式中,用户定义了开始日期结束日期时,以结...
  • 关于作者 钟 悦 - 资深DBLE用户 某宇宙行资深架构师,在大型重点项目中使用 DBLE。...为此,stringhash 按照用户定义的起点终点去截取分片索引字段中的部分字符,根据当中每个字符的二进制 unicode ...
  • 比较两个非常流行的开源分布式数据库中间件:Mycat ShardingSphere(包括 Sharding-JDBC、Sharding-Proxy Sharding-Sidecar 3 款产品)。另外还有一个增强版的MycatDBLE(专注于 MySQL) 。
  • 这几天有人问我,dble和MyCat到底有什么不同。其实dble作为MyCAT的同门,吸收了MyCat的精华,同时也相应的做了一些减法。只支持MySQL显得更加的纯粹。所以选择对比学习两者我觉得挺好。 前面我们学习了schema.xml...
  • 江湖人送外号MyCat Plus。开源地址 我们首先来看架构图,外部应用通过NIO/AIO进行连接操作。这里首先我们得介绍一下NIO/AIO是什么概念。 BIO 即传统的Blocking I/O,是JDK1.4之前的唯一选择。同步阻塞I/O模式,并发...
  • dble 介绍】

    2017-12-14 22:47:15
    dble 是基于开源项目MyCat的,专注于MySQL是一个更好的选择。 所以取消了对其他数据库的支持,对兼容性,复杂查询分布式事务的行为进行了深入的改进/优化。       数据水平拆分 随着业务的发展,您可以...
  • DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus”;以其简单稳定,持续维护,良好的社区环境广大的群众基础得到了社区的大力支持; DBLE官方网站:https://opensource.actionsky.com 可以详细了解...
  • 原创:余朝飞 DBLE是基于开源项目MyCat发展的企业级开源分布式中间件,适用于高并发及TB...其简单稳定,持续维护,良好的社区环境广大的群众基础使DBLE得到了社区的大力支持。 DBLE项目介绍 DBLE官方网站...
  • 2017年10月24日,爱可生正式开源了我们自主研发的分布式中间件—DBLE,经过一年各行业用户业务应用沉淀,我们持续进行产品打磨与更新迭代,在...· 简单稳定,持续维护,良好的社区环境广大的群众基础使 DBLE 得...
  • 其简单稳定,持续维护,良好的社区环境广大的群众基础使DBLE得到了社区的大力支持。   DBLE项目介绍   DBLE 官方项目:https://github.com/actiontech/dble 如对源码有兴趣或者需要定制的功能的可以通过源码...
  • 一、环境准备 ...DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus”;以其简单稳定,持续维护,良好的社区环境广大的群众基础得到了社区的大力支持;   DBLE官方网站: https://...
  • 原创:爱可生开源社区 DBLE是基于开源项目MyCat发展的企业级开源分布式中间件,适用于高...其简单稳定,持续维护,良好的社区环境广大的群众基础使DBLE得到了社区的大力支持。 开源分布式中间件DBLE: ...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

dble和mycat