`
gaojingsong
  • 浏览: 1201981 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【dble 介绍】

阅读更多

dble是上海爱可生信息技术股份有限公司基于mysql的高可扩展性的分布式中间件,存在以下几个优势特性:

 

dble 是基于开源项目MyCat的,专注于MySQL是一个更好的选择。 所以取消了对其他数据库的支持,对兼容性,复杂查询和分布式事务的行为进行了深入的改进/优化。



 

 

 

  • 数据水平拆分 随着业务的发展,您可以使用dble来替换原始的单个MySQL实例。

  • 兼容Mysql 与MySQL协议兼容,在大多数情况下,您可以用它替换MySQL来为你的应用程序提供新的存储,而无需更改任何代码。

  • 高可用性 dble服务器可以用作集群,业务不会受到单节点故障的影响。

  • SQL支持 支持SQL 92标准和MySQL方言。我们支持复杂的SQL查询,如group by,order by,distinct,join,union,sub-query等等。

  • 复杂查询优化 优化复杂查询,包括但不限于全局表连接分片表,ER关系表,子查询,简化选择项等。

  • 分布式事务支持 使用两阶段提交的分布式事务。您可以为了性能选择普通模式或者为了数据安全采用XA模式。当然,XA模式依赖于MySQL-5.7的XA Transaction,MySQL节点的高可用性和数据的可靠性。

 

 

缺陷修复

1)由于对堆外内存的使用不当,导致高并发操作时对同一片内存可能发生“double free",从而造成JVM异常,服务崩溃。 #4

2)XA事务漏洞:包乱序导致客户端崩溃 #21

3)where关键字写错时,会忽视后面的where条件,会得到错误的结果,比如select * from customer wher id=1;#126

4)对于一些隐式分布式事务,例如insert into table values(节点1),(节点2);原生mycat直接下发,这样当某个节点错误时,会造成该SQL执行了一部分

5)权限黑名单针对同一条sql只在第一次生效。#92

6)聚合/排序的支持度非常有限,而且在很多场景下还存在结果不正确、执行异常等问题 #43,#31,#44

7)针对between A and B语法,hash拆分算法计算出来的范围有误#23

8)开启全局表一致性检查时,对全局表的处理存在诸多问题,例如不能alter table、insert...on duplicate...时不更新时间戳、update...in ()报错等#24, #25,#26 ,#5

9)多值插入时,全局序列生成重复值 #1

10)ER表在一个事务内被隔离,不能正确插入子表数据#13

11)sharding-join结果集不正确#17

 

 

实现改进

1)对某些标准SQL语法支持不够好的方面作了改进,例如对create table if not exists...、alter table add/drop [primary] key...等语法的支持

2)禁止普通用户连接管理端口进行管理操作,增强安全性 #56

3)对全局序列做了如下改进

   删去无工程意义的本地文件方式

   改进数据库方式、ZK方式,使获取的序列号更加准确

   改进时间戳方式和ZK ID生成器方式,消除并发低时的数据分布倾斜问题

  移除自定义语法 限制:全局序列值不能显式指定

原来:insert into table1(id,name) values(next value for MYCATSEQ_GLOBAL,‘test’);

现在1:insert into table1(name) values(‘test’);

现在2:insert into table1 values(‘test’);

注意时间戳方式需要该字段是bigint

4)改进对ER表的支持,智能处理连接隔离,解决同一事务内不可以同时写入父子表的问题,并优化ER表的执行计划

5)系统通过智能判断,对于一些没有显式配置但实际符合ER条件的表视作ER表同样处理

6)在中间件内进行智能解析与判断,使用正确的schema,替换有缺陷的checkSQLschema 参数

7)conf/index_to_charset.properties的内容固化到代码 。

 

功能增强

1)提供了更强大的查询解析树,取代ShareJoin,使跨节点的语法支持度更广(join,union,subquery),执行效率更高,同时聚合/排序也有了较大改进

2)提供科学的元数据管理机制,更好的支持show、desc等管理命令,支持不指定columns的insert语句 #7

3)元数据自动检查

   启动时对元数据进行一致性检查

   配置定时任务,对元数据进行一致性检查

   提供更详实的执行计划,更准确的反映SQL语句的执行过程

4)set 系统变量语句的改进

5)set charset/names 语句的支持

6)分布式事务:XA实现方式的异常处理的改进

6)大小写敏感支持

限制:需要依赖后端所有mysql结点的大小写敏感配置一致并且在mycat内正确配置。

7)支持DUAL

 

功能裁减

1)仅保留枚举、范围、HASH、日期等分片算法,对这几个算法进行了可用性的改进,使之更加贴合实际应用,项目需要时可以按需提供

2)移除异构数据库支持

3)禁止某些不支持的功能,这些功能客户端调用时不会报错,但结果并非用户想要的结果,例如大部分的set语句(2.17.08.1版以前)

4)移除目前实现有问题的第一结点库内分表模式

5)移除writeType参数,等效于原来writeType = 1

6)移除handleDistributedTransactions 选项,直接支持分布式事务

  • 大小: 71.4 KB
0
0
分享到:
评论

相关推荐

    dble是基于mysql的高可扩展性的分布式中间件

    **分布式中间件dble简介** 分布式中间件dble(Double Write Binary Log Engine)是一种基于MySQL的高可扩展性解决方案,其设计目标是为了处理大规模数据存储和处理的需求。它通过将数据横向切分,实现了对MySQL...

    dble配置mysql主从同步

    dble配置mysql主从同步

    linux下安装配置dble--新手入门

    dble--新手入门

    生产环境-Mysql高可用配置(dble+mysql+keeplived).pdf

    dble+mysql+keeplived 2.机器与软件描述 mysql01(172.28.8.65) mysql02(172.28.8.61) dble01(172.28.8.62) dble02(172.28.8.63) keeplived01(172.28.8.62) keeplived02(172.28.8.63) 亮点: 1.数据库主主复制...

    dble-docs-cn:dble的中文文件

    dble中文技术参考手册 目录 参考目录区或 PDF下载 中文公开课 官方技术支持 代码库github: 自动化测试库github: 文档库github: 文档库github页面: 网站: QQ群:669663113 开源社区微信公众号 注意 本分支...

    dble:用于MySQL分片的高可伸缩性中间件

    dble(名称为“ double”,错误较少​​,没有“ ou”)由维护。什么是dble? dble是用于MySQL分片的高可伸缩性中间件。 分片随着业务的增长,可以使用dble替换原始的单个MySQL实例。 兼容MySQL协议使用dble与MySQL...

    matlab开发-dble2singletar

    在MATLAB开发中,"dble2singletar"是一个针对数据类型转换的工具或脚本,主要用于将数据从双精度(double precision)格式转换为单精度(single precision)。这个过程对于节省存储空间和提高计算效率是很有用的,...

    dble-test-suite

    dble-test-suite由维护。 什么是dble-test-suite? dble-test-suite是数据库中间件测试套件。 sql cover根据MySQL文档,有完整的针对性sql手动收集,您可以使用它测试数据库中间件对sql的支持。 dble测试此测试...

    浅谈PHP+MYSQL身份验证的方法.

    在IT领域,尤其是在Web开发中,身份验证是一个至关重要的环节,它确保了用户的安全性和系统的完整性。... 首先,身份验证的基本流程包括以下步骤: ... ...可以使用`htmlspecialchars()`函数对输入进行转义,避免XSS攻击。...

    开源MySQL分布式中间件剖析.pptx

    本文主要探讨一款名为dble的开源MySQL分布式中间件,它是在MyCat基础上进行的企业级增强版本,专注于解决分布式环境下的事务处理和复杂查询需求。 一、dble简介 dble是一款基于MyCat的开源分布式中间件,它优化了...

    数据库中间件对MyCAT的增强与改进.pptx

    DBLE通过关系代数查询树的方法,解析SQL并构建查询树,将可以下发的运算分配到各个物理数据节点执行,再由中间件进行结果集的处理和JOIN操作,从而提高了复杂查询的处理效率。 2. **明晰SQL语法支持边界**:DBLE...

    dble2single.tar:将结构体、元胞数组和 .mat 文件从双精度转换为单精度,以及 vv-matlab开发

    "dble2single.tar" 提供了一套工具,专为处理从双精度(double)到单精度(single)的数据转换,这主要涉及到浮点数的精度与内存占用问题。在MATLAB中,double类型提供最高的精度,但其内存需求是single类型的两倍。...

    201912-公众号精选文章合集《MySQL大智小技》1

    DBLE系列专注于爱可生的开源软件DBLE,讲述了其相关技术和使用技巧,帮助用户更好地利用这个分布式数据库中间件。 本书不仅是爱可生开源社区一年工作的结晶,也是社区成员、志愿者和合作伙伴共同努力的成果。感谢...

    工行开放平台OLTP数据库转型实践.pdf

    此外,还定制了MySQL客户端组件、分布式中间件DBLE和数据库管理平台,以支持节点状态监控、告警、安装部署、高可用切换等功能。 在分布式访问层,工行引入了DBLE,支持多种分片算法,如Hash、Range和List,以满足...

    MySQL表自增id溢出的故障复盘解决

    问题:MySQL某个表自增id溢出... 但是业务上改完代码后,发现还有残余的部分insert into tb1的写请求被转发到了老的表上,且有些表被错误得路由到了DBLE上。 这加剧了事情的复杂度。最终业务上将这个写tb1的代码下线后

    打造专业开发者指南:针对ShardingProxy分库分表解决策略的深度剖析 – 详解部署、使用、服务治理与优化技巧

    与其他分库分表产品如DBLE(Data Base Load Balancer for Elastic)、Atlas和TDDL(Taobao Distributed Data Layer)以及Vitess比较,ShardingProxy在易用性、社区活跃度、功能完善度等方面具有竞争优势。...

    基于ATMEGA64L的RFID读卡器设计

    通过锁存器SN74HC373DBLE与TRH031M的地址线连接,确保数据传输的准确性和效率。 天线部分是RFID系统中不可或缺的一环,包括线圈和匹配电路。发射部分由EMC低通滤波器、天线匹配部分和天线线圈构成。TRH031M的天线...

    SpringCloud配置大全.pdf

    在开发微服务时,通常要将数据库进行分库或分表操作,使用中间件如mycat、dble、shardingJDBC等来帮助管理和维护数据库的读写性能。在微服务架构中,服务的注册与发现、配置管理、网关路由、负载均衡、断路保护、...

Global site tag (gtag.js) - Google Analytics