TDDL数据库异构性:解决多种数据库兼容问题 (tddl数据库异构性)

在现代企业信息化建设领域中,数据一直是其中最为核心的资产之一。而为了满足不同业务场景下的不同需求,经常会引入多种不同的数据库,使得企业的数据存储环境变得十分复杂和异构。如何有效地管理和使用这些异构的数据库已经成为了众多企业管理者和DBA面临的重要挑战之一。TDDL数据库异构性是一种解决多种数据库兼容问题的技术,本文将对TDDL数据库异构性进行详细的介绍和分析。

一、TDDL数据库异构性的定义

TDDL(Taobao Distributed Data Layer)是阿里巴巴集团的开源数据库中间件,是一种轻量级、高性能、可扩展的分库分表解决方案。TDDL数据库异构性是指TDDL在支持MySQL、Oracle、SqlServer等多种数据库的同时,可以实现这些不同类别的数据库之间的无缝兼容,大大降低了跨种类数据库访问的难度和复杂性。

通过TDDL分库分表可以水平扩展表数据,自动管理分库分表的逻辑,降低数据处理的成本。同时,TDDL提供了数据源路由和可插拔式的数据源适配器,支持多种数据源,这些特性能够很好的解决异构数据库带来的兼容性问题。

在具体应用中,用户可以将TDDL与各种ORM框架(如MyBatis、Hibernate等)相结合,通过ORM框架的SQL语句来操作数据库,而TDDL则负责对SQL进行解析、路由、日志打印等操作,避免了手动多数据源的麻烦。

二、TDDL数据库异构性的优势

1. 降低系统的复杂度

TDDL的异构性可以帮助企业降低多个异类数据库的管理难度,减少数据库带来的管理复杂度,提高系统的可维护性和稳定性。

2. 支持分库分表,强大的扩展性

TDDL支持分库分表,可以将数据分散到不同的存储节点,同时提供waterfall/sharding两种分表算法,而且可以根据实际需求动态调整分库分表配置,这使得系统具有强大的可扩展性。

3. 路由规则自定义,高性能的数据读取

TDDL支持按照一定规则自定义路由规则,并采用对数据读取进行分片的方式,可以实现对数据的快速访问。另外,TDDL还支持读写分离,可以根据负载情况自行切换主备库,提高系统的读写性能。

三、TDDL数据库异构性的应用

TDDL适用于具有数据库异构性的中大型企业和应用系统,不仅兼容多种不同类型的数据库,又支持强大的分库分表功能和路由规则自定义,可以实现高性能、可扩展的数据存储和管理。

TDDL的典型应用场景包括:

1. 异构数据库的混合应用

许多企业在不同的业务中会使用不同类型的数据库,比如Oracle、MySQL、SQLserver等,此时,TDDL通过路由规则的定制和数据源适配器的灵活应用,可以实现这些不同数据库之间的混合应用,从而解决数据库兼容问题,提高系统的可靠性和稳定性。

2. 分库分表的存储和数据管理

在数据量极大的应用系统中,数据存储和管理往往成为性能瓶颈,此时,TDDL可以通过路由规则来将数据分散到不同的节点上,实现分库分表和数据管理,从而提高系统的性能和稳定性,以及数据的可扩展性。

3. 高可用性和冗余性的维护

TDDL支持读写分离,可根据负载情况自行切换主备库,从而实现高可用性和冗余性的维护,提高系统的稳定性和可靠性。

四、TDDL数据库异构性的使用前提

1. 跨异种数据库的需求

使用TDDL的前提是存在多种不同类别的数据库需求,从而需要跨异种数据库的引用。

2. 大数据量的存储和管理

TDDL的分库分表适用于大数据量的存储和管理,因此需要存储和管理的数据量较大,且数据规模快速增长。

3. 系统中使用ORM框架

TDDL主要配合ORM框架使用,需要系统中使用ORM框架并对自定义路由规则、数据源适配器和三层架构等有深入的理解。

五、TDDL数据库异构性的未来

TDDL数据库异构性可以解决多种异构数据库兼容性问题,从而提高系统的性能和可靠性。在未来,TDDL将会继续加强功能个性化定制和面向云计算、大数据、等创新应用的支持能力,使得TDDL的应用场景更加广泛,性能更加优越。

TDDL数据库异构性是实现多种异构数据库兼容的一种解决方案。在实际应用中,通过TDDL可以方便地进行分库分表、路由规则匹配和数据源适配等操作,从而提高系统的可扩展性和可维护性,同时实现数据的高性能存储和管理。未来,随着云计算、大数据和等新技术的推广和应用,TDDL的应用前景将更加广泛,带来更加优越的性能和效果。

相关问题拓展阅读:

mysql中间件有哪些

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。

Atlas

Atlas是由 Qihoo 360, Web平台部基础架构行喊兆团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。

Altas架构:

Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。

以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。

Altas的一些新特性:

1.主库宕机不影响读

主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响。从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响。在mysql官方的proxy中主库宕机,从库亦不可用。

2.通过管理接口,简化管理工作,DB的上下线对应用完全透明,同时可以手动上下线。

3.自己实现读写分离

(1)为了解决读写分离存在写完马上就想读而这时可能存在主从同步延迟的情况,Altas中可以在SQL语句前增加 /*master*/ 就可以将读请求强制发往主库。

主库可设置多项,用逗号分隔,从库可设置多项和权重,达到负载均衡。

4.自己实现分表

(1)需带有分表字段。

(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE语句。

(3)支持多个子表查询结果的合并和排序。

这里不得不吐槽Atlas的分表功能,不能实现分布式分表,所有的子表必须在同一台DB的同一个database里且所有的子表必须事先建好,Atlas没有自动建表的功能。

5.之前官方渗裤主要功能逻辑由使用lua脚本编写,效率低,Atlas用C改写,QPS提高,latency降低。

6.安全方面的提升

(1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制。

(2)通过client-ips参数对有权限连接Atlas的ip进行过滤。

(3)日志中记录所有通过Altas处理的SQL语句,包括客户端IP、实际执行该语句的DB、执行成功与否、执行所耗费的时间 ,如下面例子。

图4

7.平滑重启

通过配置文件中设置lvs-ips参数实现平滑重启功能,否则重启Altas的瞬间那些SQL请求都会失败。该参数前面挂接的lvs的物理网卡的ip,注意不是虚ip。平滑重启的条件是至少有两台配置相同的Atlas且挂在lvs之后。

source:

alibaba.cobar

Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。那么具体说说我们为什么要用它,或说cobar–能干什么?以下是我们业务运行中会存在的一些问题:

1.随着业务档租的进行数据库的数据量和访问量的剧增,需要对数据进行水平拆分来降低单库的压力,而且需要高效且相对透明的来屏蔽掉水平拆分的细节。

2.为提高访问的可用性,数据源需要备份。

3.数据源可用性的检测和failover。

4.前台的高并发造成后台数据库连接数过多,降低了性能,怎么解决。

针对以上问题就有了cobar施展自己的空间了,cobar中间件以proxy的形式位于前台应用和实际数据库之间,对前台的开放的接口是mysql通信协议。将前台SQL语句变更并按照数据分布规则转发到合适的后台数据分库,再合并返回结果,模拟单库下的数据库行为。

Cobar应用举例

应用架构:

应用介绍:

1.通过Cobar提供一个名为test的数据库,其中包含t1,t2两张表。后台有3个MySQL实例(ip:port)为其提供服务,分别为:A,B,C。

2.期望t1表的数据放置在实例A中,t2表的数据水平拆成四份并在实例B和C中各自放两份。t2表的数据要具备HA功能,即B或者C实例其中一个出现故障,不影响使用且可提供完整的数据服务。

cabar优点总结:

1.数据和访问从集中式改变为分布:

(1)Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分

(2)Cobar也支持将不同的表放入不同的库

(3) 多数情况下,用户会将以上两种方式混合使用

注意!:Cobar不支持将一张表,例如test表拆分成test_1,test_2, test_3…..放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

2.解决连接数过大的问题。

3.对业务代码侵入性少。

4.提供数据节点的failover,HA:

(1)Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。

(2)Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步。

cobar缺点:

开源版本中数据库只支持mysql,并且不支持读写分离。

source:

TDDL

淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。

TDDL所处的位置(tddl通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的数据库中):

淘宝很早就对数据进行过分库的处理, 上层系统连接多个数据库,中间有一个叫做DBRoute的路由来对数据进行统一访问。DBRoute对数据进行多库的操作、数据的整合,让上层系统像操作一个数据库一样操作多个库。但是随着数据量的增长,对于库表的分法有了更高的要求,例如,你的商品数据到了百亿级别的时候,任何一个库都无法存放了,于是分成2个、4个、8个、16个、32个……直到1024个、2023个。好,分成这么多,数据能够存放了,那怎么查询它?这时候,数据查询的中间件就要能够承担这个重任了,它对上层来说,必须像查询一个数据库一样来查询数据,还要像查询一个数据库一样快(每条查询在几毫秒内完成),TDDL就承担了这样一个工作。在外面有些系统也用DAL(数据访问层) 这个概念来命名这个中间件。

下图展示了一个简单的分库分表数据查询策略:

主要优点:

1.数据库主备和动态切换

2.带权重的读写分离

3.单线程读重试

4.集中式数据源信息管理和动态变更

5.剥离的稳定jboss数据源

6.支持mysql和oracle数据库

7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源

8.无server,client-jar形式存在,应用直连数据库

9.读写次数,并发度流程控制,动态变更

10.可分析的日志打印,日志流控,动态变更

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,含清Atlas,明圆cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。

Atlas

Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。

Altas架构:

Atlas是一个位于应用程序与MySQL之间激老塌,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。

以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。

Altas的一些新特性:

1.主库宕机不影响读

主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响。从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响。在mysql官方的proxy中主库宕机,从库亦不可用。

2.通过管理接口,简化管理工作,DB的上下线对应用完全透明,同时可以手动上下线。

3.自己实现读写分离

(1)为了解决读写分离存在写完马上就想读而这时可能存在主从同步延迟的情况,Altas中可以在SQL语句前增加 /*master*/ 就可以将读请求强制发往主库。

主库可设置多项,用逗号分隔,从库可设置多项和权重,达到负载均衡。

4.自己实现分表

(1)需带有分表字段。

(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE语句。

(3)支持多个子表查询结果的合并和排序。

这里不得不吐槽Atlas的分表功能,不能实现分布式分表,所有的子表必须在同一台DB的同一个database里且所有的子表必须事先建好,Atlas没有自动建表的功能。

5.之前官方主要功能逻辑由使用lua脚本编写,效率低,Atlas用C改写,QPS提高,latency降低。

6.安全方面的提升

(1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制。

(2)通过client-ips参数对有权限连接Atlas的ip进行过滤。

(3)日志中记录所有通过Altas处理的SQL语句,包括客户端IP、实际执行该语句的DB、执行成功与否、执行所耗费的时间 ,如下面例子。

阿里巴巴采用自己研发的分布式数据库系统叫什么,它有哪些特点

搜一下:阿里巴巴采用自己研发的分布式数据库系统叫什么,它有哪些特点

上层的是分布式数据库分表分库中间件,负责和上层应用打交道,对应用可表现为一个独立的数据库,而屏蔽底层复杂的系统细节。分布式数据库中间件除了基袜腔亏本的分表分库功能,还可以丰富一下,比如讲读写分离或者水平扩容功能集成在一起,或者比如读写分离本身也可以作为一个独立的中间件。(Cobar, MyCAT, TDDL, DRDS, DDB)

增量数据订阅和消费告神,用户对数据库操作,比如DML, DCL, DDL等,这些操作会产生增量数据,下层应用可以通过监测这些增量数据进行相应的处理。典型代表C,根据MySQL的binlog实现。也有针对Oracle(redolog)的增量数据订阅与消费圆陵的中间件。(C, Erosa)

数据库同步中间件涉及数据库之间的同步操作,可以实现跨(同)机房同步以及异地容灾备份、分流等功能。可以涉及多种数据库,处理之后的数据也可以以多种形式存储。(Otter, JingoBus, DRC)

数据库与数据库之间会有数据迁移(同步)的动作,同款数据同步原理比较简单,比如MySQL主备同步,只要在数据库层进行相应的配置既可,但是跨数据库同步就比较复杂了,比如Oracle->MySQL. 数据迁移一般包括三个步骤:全量复制,将原数据库的数据全量迁移到新数据库,在这迁移的过程中也会有新的数据产生;增量同步,对新产生的数据进行同步,并持续一段时间以保证数据同步;原库停写,切换新库。将“跨数据库”这个含义扩大一下——“跨数据源”,比如HDFS, HBase, FTP等都可以相互同步。(yugong, DataX)

AanlyticDB,可以兼容Mysql5.x系列和SQL等,阿里巴巴自主团李乎研发、唯一经过超大规模以及核心业务验证的PB级实时数据仓库。自2023年之一次在集团发布上线以来,至今已累计迭代发布近百个版本,支撑起集团内的电商、广告、菜鸟、文娱、飞猪等众多在线分析业务。阿里巴巴最初通过单节点Oracle进行准实时分析, 后来转到Oracle RAC,随着业务的飞速发展, 集中式的Shared Storage架构需要快速转向分布式,迁移到了Greenplum,但不到一年时间便遇到扩展性和并发的严重瓶颈。为了迎接更大数据集、更高并发、更高可用扰厅、更实时的数据应用发展趋势,从2023年开始,在线分析这个技术领域,阿里实时塌悉数仓坚定的走上了自研之路。特点和性能参考这个百度

网页链接

tddl数据库异构性的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于tddl数据库异构性,TDDL数据库异构性:解决多种数据库兼容问题,mysql中间件有哪些,阿里巴巴采用自己研发的分布式数据库系统叫什么,它有哪些特点的信息别忘了在本站进行查找喔。


数据运维技术 » TDDL数据库异构性:解决多种数据库兼容问题 (tddl数据库异构性)