一种基于数据路由、分库分表的数据操作系统及方法

文档序号:10569956阅读:239来源:国知局
一种基于数据路由、分库分表的数据操作系统及方法
【专利摘要】本发明涉及一种基于数据路由、分库分表的数据操作系统及方法,其中系统包括顶部的客户端层、中部的DaaS层和底部的数据库层,所述客户端层,其用于提供操作数据;所述DaaS层,其用于利用数据路由分析所述操作数据对应的SQL语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,还用于将操作结果返回至客户端层;所述数据库层,其用于通过提供多种类型的分库数据库对所述DaaS层操作后的操作数据提供存储空间。本发明可以降低单台服务器的负载,同时最大限度的降低了宕机造成的损失,可以实现数据库无限横向扩展。
【专利说明】
一种基于数据路由、分库分表的数据操作系统及方法
技术领域
[0001]本发明涉及一种数据操作系统及方法,具体的涉及一种基于基于数据路由、分库分表的数据操作系统及方法。
【背景技术】
[0002]在一个应用系统中,对数据读取、存储、更新、删除等是不可缺少的组成部分,首先我们先从以下几个方面理解:1.随着互联网广泛普及,应用系统不间断的运行,应用业务数据也随之增长,海量数据的存储与访问提出新的要求;2.应用系统在保证高效的响应能力时,对数据的查询、插入、更新、删除等操作就显得非常重要;3.单台服务器的资源(CPU、磁盘、内存、网络10、事务数、连接数)总是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。从上面可以看出数据操作的重要性及实际问题,通常我们记录数据的方法是:将数据存储单台数据库的表中,数据库提供插入、查询、更新、删除等数据操作,而数据库低层操作时需要进行内存与磁盘文件的读写操作,应用系统中业务处理在内存中进行,而磁盘操作比内存要慢很多。数据操作又是每个业务功能必须的,因此业务功能的处理效率就会受到数据操作影响比较大,在高并发、系统繁忙时,数据操作是应用系统服务的性能瓶颈,制约业务系统处理的吞吐量。当单台服务器中数据库的处理能力达不到应用系统要求时,通常做法是购买一台更强劲、运算效率更快的服务器进行替换实现,而这种成本很大,且原服务器就不会被同时利用支持数据操作。因此需要解决一个技术问题是:在应用系统业务功能及数据,随着时间推移不断扩展增加的情况,如何让数据操作也同样扩展保持且能提高效率,并且能很好地利用原有的服务器,以一种低成本的方式横向扩展。

【发明内容】

[0003]本发明所要解决的技术问题是提供一种基于数据路由、分库分表的数据操作系统及方法,可以满足数据操作的扩展保持且能提高效率。
[0004]本发明解决上述技术问题的技术方案如下:一种基于数据路由、分库分表的数据操作系统,包括顶部的客户端层、中部的DaaS层和底部的数据库层,
[0005]所述客户端层,其用于提供操作数据;
[0006]所述DaaS层,其用于利用数据路由分析所述操作数据对应的SQL语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,还用于将操作结果返回至客户端层;
[0007]所述数据库层,其用于通过提供多种类型的分库数据库对所述DaaS层操作后的操作数据提供存储空间。
[0008]本发明的有益效果是:本发明一种基于数据路由、分库分表的数据操作系统通过解析传入的SQL语句与相应的分库分表规则实现数据路由,通过切分数据由各个分库数据库分担数据操作来提高整体数据库性能;水平切分数据,可以降低单台服务器的负载,同时最大限度的降低了宕机造成的损失,让数据操作也同样扩展保持且能提高效率,并且能很好地利用原有的服务器,通过数据路由及分库分表规则,数据可以被合理切分到各个数据库中,基于此规则,当数据在不断增长时,只要合理的配合规则与实际规则对应关系,则可以实现数据库无限横向扩展。
[0009]在上述技术方案的基础上,本发明还可以做如下改进。
[0010]进一步,所述DaaS层包括JDBC模块、SQL解析模块、数据路由模块、JDBC驱动模块和分布式事务管理模块,
[0011]所述JDBC模块,其用于将客户端层提供的操作数据传送给SQL解析模块;
[0012]所述SQL解析模块,其用于为所述操作数据提供相应的SQL语句;
[0013]所述数据路由模块,其用于利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库,还用于执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作;
[0014]所述JDBC驱动模块,其用于为所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并将操作结果存储至所述数据库层对应的分库数据库中;
[0015]所述分布式事务管理模块,其用于通过JDBC驱动模块将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并通过所述JDBC模块将存储、更新、查询和/或删除操作的结果返回给所述客户端层。
[0016]采用上述进一步方案的有益效果是:本发明一种基于数据路由、分库分表的数据操作系统中的JDBC模块以JDBC3.0规范切入应用系统中使用,同时可以与客户端层配合;SQL解析模块在运行时通过解析传入SQL语句与相应的分库分表规则实现数据路由,其中SQL必须符合规范,从而可以实现异构数据库的数据操作;数据路由模块可以支持各种提供JDBC驱动规范的数据库,由此可以实现异构数据库,在同一时间进行数据库查询时,支持从不同实现数据库中查询获取数据;分布式事务管理模块由实际的数据库进行数据存储与查询,当对数据被数据切分(分库分表)后,数据被分别存储到各个独立的数据库中,此时需要一个机制保证其事务的ACID,因此系统中用到了分布式事务管理模块进行协调处理。
[0017]进一步,所述DaaS层还包括连接管理模块,所述连接管理模块用于控制所述JDBC模块分别与所述SQL解析模块和分布式事务管理模块之间的连接。
[0018]进一步,所述DaaS层还包括对象监控模块,所述对象监控模块用于对DaaS层中的当前数据库连接对象、运行中事务对象、语句执行通道对象、语句预编译执行通道对象和数据结果集对象进行监控。
[0019]进一步,所述DaaS层还包括在线运行SQL语句模块,所述在线运行SQL语句模块用于通过提供在线SQL语句执行来检测SQL模块提供的SQL语句是否符合分库分表的规则要求。
[0020]进一步,所述分库分表规则为字段取模规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库。
[0021]进一步,所述分库分表规则为字段值列表规则,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。
[0022]基于上述一种基于数据路由、分库分表的数据操作系统,本发明还提供一种基于数据路由、分库分表的数据操作方法。
[0023]—种基于数据路由、分库分表的数据操作方法,包括以下步骤,
[0024]SI,提供操作数据;
[0025]S2,利用数据路由分析所述操作数据对应的SQL语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,并返回操作结果。
[0026]本发明的有益效果是:本发明一种基于数据路由、分库分表的数据操作方法通过解析传入的SQL语句与相应的分库分表规则实现数据路由,通过切分数据由各个分库数据库分担数据操作来提高整体数据库性能;水平切分数据,可以降低单台服务器的负载,同时最大限度的降低了了宕机造成的损失,让数据操作也同样扩展保持且能提高效率,并且能很好地利用原有的服务器,通过数据路由及分库分表规则,数据可以被合理切分到各个数据库中,基于此规则,当数据在不断增长时,只要合理的配合规则与实际规则对应关系,则可以实现数据库无限横向扩展。
[0027]在上述技术方案的基础上,本发明还可以做如下改进。
[0028]进一步,所述S2具体为,
[0029]S21,提供操作数据;
[0030]S22,为所述操作数据提供相应的SQL语句;
[0031]S23,利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库;
[0032]S24,所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作;
[0033]S25,将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并将存储、更新、查询和/或删除操作的结果返回。
[0034]进一步,所述分库分表规则为字段取模规则或字段值列表规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。
【附图说明】
[0035]图1为本发明一种基于数据路由、分库分表的数据操作系统的结构框图;
[0036]图2为本发明一种基于数据路由、分库分表的数据操作系统的数据路由分库分表结构图;
[0037]图3为本发明一种基于数据路由、分库分表的数据操作系统的异构数据库结构图;
[0038]图4为本发明一种基于数据路由、分库分表的数据操作系统的异构数据库的横向扩展结构图;
[0039]图5为本发明一种基于数据路由、分库分表的数据操作方法的流程图。
【具体实施方式】
[0040]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0041]如图1所示,一种基于数据路由、分库分表的数据操作系统,包括顶部的客户端层、中部的DaaS层(DaaS是Data-as-a-service的缩写,意思是数据即服务,DaaS层也可称为服务层)和底部的数据库层,所述客户端层,其用于提供操作数据;所述DaaS层,其用于利用数据路由分析所述操作数据对应的SQL(Structured Query Language,即结构化查询语言)语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,还用于将操作结果返回至客户端层;所述数据库层,其用于通过提供多种类型的分库数据库对所述DaaS层操作后的操作数据提供存储空间。所述DaaS层包括JDBC模块(JDBC:Java Data BaseConnectivity,即java数据库连接,是一种用于执行SQL语句的Java API)、SQL解析模块、数据路由模块、JDBC驱动模块和分布式事务管理模块,所述JDBC模块,其用于将客户端层提供的操作数据传送给SQL解析模块;所述SQL解析模块,其用于为所述操作数据提供相应的SQL语句;所述数据路由模块,其用于利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库,还用于执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作;所述JDBC驱动模块,其用于为所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并将操作结果存储至所述数据库层对应的分库数据库中;所述分布式事务管理模块,其用于通过JDBC驱动模块将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并通过所述JDBC模块将存储、更新、查询和/或删除操作的结果返回给所述客户端层。在本具体实施例中,所述数据库层由OracleRAC,Mysql和Nosql三种类型的数据库组成。所述DaaS层还包括连接管理模块,所述连接管理模块用于控制所述JDBC模块分别与所述SQL解析模块和分布式事务管理模块之间的连接。所述DaaS层还包括对象监控模块,所述对象监控模块用于对DaaS层中的当前数据库连接对象、运行中事务对象、语句执行通道对象、语句预编译执行通道对象和数据结果集对象进行监控。所述DaaS层还包括在线运行SQL语句模块,所述在线运行SQL语句模块用于通过提供在线SQL语句执行来检测SQL模块提供的SQL语句是否符合分库分表的规则要求。所述分库分表规则为字段取模规则或字段值列表规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。
[0042]本发明一种基于数据路由、分库分表的数据操作系统中的JDBC模块以JDBC3.0规范切入应用系统中使用,同时可以与客户端层配合;数据路由模块可以支持各种提供JDBC驱动规范的数据库,由此可以实现异构数据库,在同一时间进行数据库查询时,支持从不同实现数据库中查询获取数据;分布式事务管理模块由实际的数据库进行数据存储与查询,当对数据被数据切分(分库分表)后,数据被分别存储到各个独立的数据库中,此时需要一个机制保证其事务的ACID,因此系统中用到了分布式事务管理模块进行协调处理。
[0043]在本具体实施例中,SQL解析模块在运行时通过解析传入SQL语句与相应的分库分表规则实现数据路由,其中SQL必须符合规范,从而可以实现异构数据库的数据操作,数据路由分库分表结构如图2所示,其中,路由表示数据路由;分区表示对应数据库中的表;规则表不分库分表规则,即字段取模规则与字段值列表规则;分片表不由分库分表规则切分后的数据;数据库表示实际用于存储数据的分库数据库,支持所有JDBC规范的数据库。
[0044]其中,字段取模规则即算术中的取余,此规则主要是根据SQL语句中的某数值字段的值,进行取余后从而进行分库。
[0045]例如:数据库层有三个独立分库数据库,每个分库数据库中都有员工表,主键ID根据字段取模规则分库,分库数据库对应关系如下:
[0046]余值O对应数据库A;
[0047]余值I对应数据库B;
[0048]余值2对应数据库C;
[0049]当进行数据存储操作时,首先数据路由分析SQL语句,从中取得员工主表名称是员工表(分区),从而定位出其分库分表规则是字段取模规则,规则从分析SQL语句中取得主键ID及其值,并将值与3取余,定位出其实现的分库数据库,从获取其数据库JDBC驱动连接,执行此SQL语句,当余为O的存储在数据库A中、余为I的存储在数据库B中、余为2的存储在数据库C中,从而实现了分库分表。
[0050]当进行数据更新、查询、删除时操作时,首先数据路由分析SQL语句,从中取得主表名称是员工表(分区),从而定位出其分库分表规则是字段取模规则,规则从分析SQL语句中取得主表的主键ID及其值,并将值与3取余,定位出其实现的分库数据库,从获取其数据库JDBC驱动连接,执行此SQL语句,达到路由数据库更新、查询、删除功能,最终将结果返回给调用者。
[0051 ]字段值列表规则即根据SQL语句中的某字段的值与分库关系进行数据路由。
[0052]例如:数据库层有三个独立分库数据库,每个分库数据库都有员工表,员工表中部门字段信息,其值有:开发部、测试部、后勤部等,根据字段值列表规则分库,分别对应关系如下:
[0053]开发部对应数据库A;
[0054]业务部对应数据库B;
[0055]后勤部对应数据库C;
[0056]当进行数据存储操作时,首先数据路由分析SQL语句,从中取得主表名称是员工表(分区),从而定位出其分库分表规则是字段值列表规则,规则从分析SQL语句中取得部门字段及其值,假设值为:开发部,根据字段值对应数据库关系,定位出其对应的是数据库A,从而取得此数据库的JDBC驱动连接,执行此SQL语句,从而达到路由数据存储的作用。
[0057]当进行数据进行更新、查询、删除操作时,首先数据路由分析SQL语句,从中取得主表名称是员工表(分区),从而定位出其分库分表规则是字段值列表规则,规则从分析SQL语句中取得部门字段及其值,假设值为:开发部,根据字段值与数据库对应关系,定位出其对应的数据库A,从而取得此数据库的JDBC驱动连接,执行此SQL语句,达到路由数据库更新、查询、删除功能,最终将结果返回给调用者。
[0058]在本具体实施例中,数据库层可以支持各种提供JDBC驱动规范的数据库,由此可以实现异构数据库,在同一时间进行数据库查询时,支持从不同实现数据库中查询获取数据,其它数据操作也支持,只需要SQL符合规范,即可形成异构数据库,异构数据库结构如图3所示,图3中最低层的分库数据库分别由不同类型的数据库组成。通过数据路由及分库分表规则,数据可以被合理切分到各个数据库中,基于此规则,当数据在不断增长时,只要合理的配合规则与实际规则对应关系,则可以实现数据库无限横向扩展,其横向扩展结构如图4所示,图4中相对图3新增分片(新)且其对应DB2-表A(新),只通过相应的配置即可以实现横向扩。
[0059]基于上述一种基于数据路由、分库分表的数据操作系统,本发明还提供一种基于数据路由、分库分表的数据操作方法。
[0060]一种基于数据路由、分库分表的数据操作方法,包括以下步骤,
[0061 ] SI,提供操作数据;
[0062]S2,利用数据路由分析所述操作数据对应的SQL语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,并返回操作结果。
[0063]具体流程如图5所示,
[0064]S21,提供操作数据;
[0065]S22,为所述操作数据提供相应的SQL语句;
[0066]S23,利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库;
[0067]S24,所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作;
[0068]S25,将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并将存储、更新、查询和/或删除操作的结果返回。
[0069]所述分库分表规则为字段取模规则或字段值列表规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。
[0070]本发明一种基于数据路由、分库分表的数据操作方法通过解析传入的SQL语句与相应的分库分表规则实现数据路由,通过切分数据由各个分库数据库分担数据操作来提高整体数据库性能;水平切分数据,可以降低单台服务器的负载,同时最大限度的降低了宕机造成的损失,让数据操作也同样扩展保持且能提高效率,并且能很好地利用原有的服务器,通过数据路由及分库分表规则,数据可以被合理切分到各个数据库中,基于此规则,当数据在不断增长时,只要合理的配合规则与实际规则对应关系,则可以实现数据库无限横向扩展。
[0071]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于数据路由、分库分表的数据操作系统,其特征在于:包括顶部的客户端层、中部的DaaS层和底部的数据库层, 所述客户端层,其用于提供操作数据; 所述DaaS层,其用于利用数据路由分析所述操作数据对应的SQL语句得出分库分表规贝IJ,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,还用于将操作结果返回至客户端层; 所述数据库层,其用于通过提供多种类型的分库数据库对所述DaaS层操作后的操作数据提供存储空间。2.根据权利要求1所述的一种基于数据路由、分库分表的数据操作系统,其特征在于:所述DaaS层包括JDBC模块、SQL解析模块、数据路由模块、JDBC驱动模块和分布式事务管理丰旲块, 所述JDBC模块,其用于将客户端层提供的操作数据传送给SQL解析模块; 所述SQL解析模块,其用于为所述操作数据提供相应的SQL语句; 所述数据路由模块,其用于利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库,还用于执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作; 所述JDBC驱动模块,其用于为所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并将操作结果存储至所述数据库层对应的分库数据库中; 所述分布式事务管理模块,其用于通过JDBC驱动模块将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并通过所述JDBC模块将存储、更新、查询和/或删除操作的结果返回给所述客户端层。3.根据权利要求2所述的一种基于数据路由、分库分表的数据操作系统,其特征在于:所述DaaS层还包括连接管理模块,所述连接管理模块用于控制所述JDBC模块分别与所述SQL解析模块和分布式事务管理模块之间的连接。4.根据权利要求2所述的一种基于数据路由、分库分表的数据操作系统,其特征在于:所述DaaS层还包括对象监控模块,所述对象监控模块用于对DaaS层中的当前数据库连接对象、运行中事务对象、语句执行通道对象、语句预编译执行通道对象和数据结果集对象进行监控。5.根据权利要求2所述的一种基于数据路由、分库分表的数据操作系统,其特征在于:所述DaaS层还包括在线运行SQL语句模块,所述在线运行SQL语句模块用于通过提供在线SQL语句执行来检测SQL模块提供的SQL语句是否符合分库分表的规则要求。6.根据权利要求1至5任一项所述的一种基于基于数据路由、分库分表的数据操作系统,其特征在于:所述分库分表规则为字段取模规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库。7.根据权利要求1至5任一项所述的一种基于基于数据路由、分库分表的数据操作系统,其特征在于:所述分库分表规则为字段值列表规则,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。8.一种基于数据路由、分库分表的数据操作方法,其特征在于:包括以下步骤, SI,提供操作数据; S2,利用数据路由分析所述操作数据对应的SQL语句得出分库分表规则,并按分库分表规则定位出所述操作数据在所述数据库层中相应的分库数据库,通过执行相应的SQL语句将所述操作数据在分库数据库中进行操作,并返回操作结果。9.根据权利要求8所述的一种基于数据路由、分库分表的数据操作方法,其特征在于:所述S2具体为, S21,提供操作数据; S22,为所述操作数据提供相应的SQL语句; S23,利用数据路由分析SQL语句取得所述操作数据在所述数据库层中对应的分区,从而从分区中定位出对应的分库分表规则,且根据分库分表规则定位出所述操作数据在分区中对应的分库数据库; S24,所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除的操作提供JDBC驱动连接,并执行相应的SQL语句将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作; S25,将所述操作数据在对应的分库数据库中进行存储、更新、查询和/或删除操作的结果进行结束集合并、排列和分组,并将存储、更新、查询和/或删除操作的结果返回。10.根据权利要求8或9所述的一种基于数据路由、分库分表的数据操作方法,其特征在于:所述分库分表规则为字段取模规则或字段值列表规则,所述字段取模规则具体为对SQL语句中的预设数值字段的值进行取余后从而进行分库,所述字段值列表规则具体为根据SQL语句中的预设字段的值与分库关系进行数据路由的规则。
【文档编号】G06F17/30GK105930387SQ201610232349
【公开日】2016年9月7日
【申请日】2016年4月14日
【发明人】陈奋威
【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1