数据库路由装置和方法.pdf

上传人:e1 文档编号:1895801 上传时间:2018-07-21 格式:PDF 页数:22 大小:4.65MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410771754.7

申请日:

2014.12.12

公开号:

CN104408174A

公开日:

2015.03.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):G06F 17/30变更事项:申请人变更前:用友软件股份有限公司变更后:用友网络科技股份有限公司变更事项:地址变更前:100094 北京市海淀区北清路68号用友软件园变更后:100094 北京市海淀区北清路68号用友软件园|||实质审查的生效IPC(主分类):G06F17/30申请日:20141212|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

用友软件股份有限公司

发明人:

卢相宁; 杨鹏

地址:

100094北京市海淀区北清路68号用友软件园

优先权:

专利代理机构:

北京中恒高博知识产权代理有限公司11249

代理人:

姜万林

PDF下载: PDF下载
内容摘要

本发明提供了一种数据库路由装置,包括:数据库路由规则管理单元,用于对数据库路由规则进行管理;数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。本发明还提供了一种数据库路由方法。通过本发明的技术方案,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。

权利要求书

权利要求书
1.  一种数据库路由装置,其特征在于,包括:
数据库路由规则管理单元,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;
数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;
数据库集群监测单元,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。

2.  根据权利要求1所述的数据库路由装置,其特征在于,所述数据库路由规则管理单元,具体包括:
数据库资源管理模块,用于对分布部署的各个数据库进行管理;
分表规则管理模块,用于对用户配置文件中的规则进行解析,将规则读入到内存中;
分库规则管理模块,用于对配置文件中分库的规则进行解析。

3.  根据权利要求1或2所述的数据库路由装置,其特征在于,所述数据库路由单元,具体包括:
SQL语句分析管理模块,用于配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;
SQL语句路由模块,用于根据分析好的语句使用路由规则得到相应的数据源。

4.  根据权利要求3所述的数据库路由装置,其特征在于,所述数据库集群监测单元,具体包括:
心跳监控模块,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。

5.  根据权利要求4所述的数据库路由装置,其特征在于,所述数据库资源管理模块对分布部署的各个数据库进行管理的操作,进一步包括:
配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;
和/或,
所述分表规则管理模块将规则读入到内存中的操作,进一步包括:
确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;
和/或,
所述分库规则管理模块对配置文件中分库的规则进行解析的操作,进一步包括:
定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;
和/或,
所述SQL语句分析管理模块传入语句分析解析程序运行时候的语句的操作,进一步包括:
定义读取定义的SQL语句;运行时候,对输入的语句进行分析;
和/或,
所述SQL语句路由模块根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:
计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;
和/或,
所述心跳监控模块检查插入数据库状态的操作,进一步包括:
如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;
和/或,
所述心跳监控模块检查备份库状态的操作,进一步包括:
检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。

6.  一种数据库路由方法,其特征在于,包括:
步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;
步骤204:基于对数据库路由规则的管理,完成查询语句的路由操作;
步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。

7.  根据权利要求6所述的数据库路由方法,其特征在于,所述步骤202,具体包括:
步骤302:对分布部署的各个数据库进行管理;
步骤304:对用户配置文件中的规则进行解析,将规则读入到内存中;
步骤306:对配置文件中分库的规则进行解析。

8.  根据权利要求6或7所述的数据库路由方法,其特征在于,所述步骤204,具体包括:
步骤402:配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;
步骤404:根据分析好的语句使用路由规则得到相应的数据源。

9.  根据权利要求8所述的数据库路由方法,其特征在于,所述步骤206,具体包括:
步骤502:对每一组机器启动一个监控线程;
步骤504:基于启动的监控线程,设置心跳时间;
步骤506:基于设置的心跳时间,检查插入数据库状态;
步骤508:基于插入数据库状态的检查结果,检查备份库状态。

10.  根据权利要求9所述的数据库路由方法,其特征在于,所述步骤302对分布部署的各个数据库进行管理的操作,进一步包括:
配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;
和/或,
所述步骤304将规则读入到内存中的操作,进一步包括:
确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;
和/或,
所述步骤306对配置文件中分库的规则进行解析的操作,进一步包括:
定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;
和/或,
所述步骤402传入语句分析解析程序运行时候的语句的操作,进一步包括:
定义读取定义的SQL语句;运行时候,对输入的语句进行分析;
和/或,
所述步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:
计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;
和/或,
所述步骤506检查插入数据库状态的操作,进一步包括:
如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;
和/或,
所述步骤508检查备份库状态的操作,进一步包括:
检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。

说明书

说明书数据库路由装置和方法
技术领域
本发明涉及数据处理技术领域,具体地,涉及一种数据库路由装置和一种数据库路由方法。
背景技术
互联网络应用中,随着业务的发展,积累的数据越来越多,开始设计的数据库架构不能满足性能及业务的要求,通常会将原来的数据库进行横向切分,即分表;同时可能会根据业务将数据库进行纵向切分,即分库。伴随数据库架构变化,数据库访问方式也做相应改变,不同阶段使用的分库分表算法也有所不同,其中存在的主要问题有:
⑴数据库访问方式随架构变化而变更:随着数据由少变多,数据库架构的变化,原来的路由方法发生改变,数据库访问方式需要相应修改,需要大量代码的修改、测试,浪费时间且容易出错。
⑵分库分表算法不能灵活配置:数据量积累的不同阶段,会有不同的分库分表方法,不能灵活配置,方案不具有通用性。
⑶数据库分库,在同一库内不能将同一表进行分表:同一表在单库内分表,一是减小表大小提高效率和性能,二是可为以后扩展做准备,避免表拆分数据重新映射问题。
如何设计一个路由方案,使得在数据增长各个阶段数据库访问方式固定,不必大规模修改代码,并且能灵活配置分库分表算法,在同一库中进行数据库表的切分,同时根据规则自动路由到相应的数据库与表,是本发明技术方案的立足点和待解决问题。
因此,需要一种新的数据库路由技术,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。
发明内容
本发明正是基于上述问题,提出了一种新的数据库路由技术,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。
有鉴于此,本发明提出了一种数据库路由装置,包括:数据库路由规则管理单元,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。
在上述技术方案中,优选地,所述数据库路由规则管理单元,具体包括:数据库资源管理模块,用于对分布部署的各个数据库进行管理;分表规则管理模块,用于对用户配置文件中的规则进行解析,将规则读入到内存中;分库规则管理模块,用于对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。
在上述技术方案中,优选地,所述数据库路由单元,具体包括:SQL语句分析管理模块,用于配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由模块,用于根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。
在上述技术方案中,优选地,所述数据库集群监测单元,具体包括:心跳监控模块,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。
在上述技术方案中,优选地,所述数据库资源管理模块对分布部署的各个数 据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述分表规则管理模块将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述分库规则管理模块对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述SQL语句分析管理模块传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,所述SQL语句路由模块根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,所述心跳监控模块检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,所述心跳监控模块检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。
根据本发明的又一个方面,还提出了一种数据库路由方法,包括:步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;步骤204:基于对数据库路由规则的管理,完成查询语句的路由操作;步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。
在上述技术方案中,优选地,所述步骤202,具体包括:步骤302:对分布 部署的各个数据库进行管理;步骤304:对用户配置文件中的规则进行解析,将规则读入到内存中;步骤306:对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。
在上述技术方案中,优选地,所述步骤204,具体包括:步骤402:配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;步骤404:根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。
在上述技术方案中,优选地,所述步骤206,具体包括:步骤502:对每一组机器启动一个监控线程;步骤504:基于启动的监控线程,设置心跳时间;步骤506:基于设置的心跳时间,检查插入数据库状态;步骤508:基于插入数据库状态的检查结果,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。
在上述技术方案中,优选地,所述步骤302对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述步骤304将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述步骤306对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述步骤402传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,所述步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据 源;和/或,所述步骤506检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,所述步骤508检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。
通过以上技术方案,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。
附图说明
图1示出了根据本发明的实施例的数据库路由装置的框图;
图2示出了根据本发明的实施例的数据库路由方法的流程图;
图3示出了根据本发明的实施例的数据库路由规则管理单元的流程图;
图4示出了根据本发明的实施例的数据库路由单元的流程图;
图5示出了根据本发明的实施例的数据库集群监测单元的流程图;
图6示出了根据本发明的实施例的高扩展可配置的分布式数据库路由机制的处理过程流程图;
图7示出了根据本发明的实施例的配置总体路由规则的程序截图;
图8示出了根据本发明的实施例的数据库路由单元的整体匹配流程图;
图9示出了根据本发明的实施例的数据库集群监控模块的集群监控流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的数据库路由装置的框图。
如图1所示,根据本发明的实施例的数据库路由装置100,包括:数据库路由规则管理单元102,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;数据库路由单元104,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元106,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。
在上述技术方案中,优选地,数据库路由规则管理单元102,具体包括:数据库资源管理模块1022,用于对分布部署的各个数据库进行管理;分表规则管理模块1024,用于对用户配置文件中的规则进行解析,将规则读入到内存中;分库规则管理模块1026,用于对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。
在上述技术方案中,优选地,数据库路由单元104,具体包括:SQL语句分析管理模块1042,用于配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由模块1044,用于根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。
在上述技术方案中,优选地,数据库集群监测单元106,具体包括:心跳监控模块1062,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。
在上述技术方案中,优选地,数据库资源管理模块1022对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机 器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,分表规则管理模块1024将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,分库规则管理模块1026对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,SQL语句分析管理模块1042传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,SQL语句路由模块1044根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,心跳监控模块1062检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,心跳监控模块1062检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。
图2示出了根据本发明的实施例的数据库路由方法的流程图。
如图2所示,根据本发明的实施例的数据库路由方法,包括:步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;步骤204:基于对数据库路由规则的管理,完成查询语句的路由操作;步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。
在上述技术方案中,优选地,如图3所示,步骤202,具体包括:步骤302:对分布部署的各个数据库进行管理;步骤304:对用户配置文件中的规则进行解析, 将规则读入到内存中;步骤306:对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。
在上述技术方案中,优选地,如图4所示,步骤204,具体包括:步骤402:配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;步骤404:根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。
在上述技术方案中,优选地,如图5所示,步骤206,具体包括:步骤502:对每一组机器启动一个监控线程;步骤504:基于启动的监控线程,设置心跳时间;步骤506:基于设置的心跳时间,检查插入数据库状态;步骤508:基于插入数据库状态的检查结果,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。
在上述技术方案中,优选地,步骤302对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,步骤304将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,步骤306对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,步骤402传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,步骤506 检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,步骤508检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。
本发明的技术方案,提供了一种高扩展可配置的分布式数据库路由机制具体是一种基于数据库双机热备方式的高扩展可配置的分布式数据库路由机制,可用于随数据规模发展,数据库分库分表路由查询。
基于背景技术提出的立足点,本发明技术方案提出一种可配置的数据库分库分表路由机制。本发明技术方案较好地解决了上述问题,其特点是:
⑴数据库访问方式的一贯性,此方案可适用于小规模单机数据库,亦可扩展到大规模分布式数据库集群。解决问题:数据库访问方式变化问题。
⑵数据库分库分表算法在配置文件中灵活配置。解决问题:数据库分表算法灵活配置问题。
⑶通过配置算法,可将同一表切分在同一库中,也可以切分到多个库中。解决的问题:数据库分库后,在同一库内同一表进行分表问题。
为了实现上述目标,本发明技术方案提出的高扩展可配置的分布式数据库路由机制主要包括三个单元:数据库路由规则管理单元、数据库路由单元、数据库集群监测单元。此机制的处理过程如图6所示。
㈠路由规则管理单元
路由规则管理单元对数据库路由规则进行管理,主要分为数据库资源管理、分表规则管理与分库规则管理。数据库资源管理对分布部署的各个数据库进行管理,分表规则管理对用户配置文件中的规则进行解析,将规则读入到内存中,同理分库规则管理对配置文件中分库的规则进行解析。
数据库资源管理:
1、配置数据源链接信息,包括数据库链接地址,数据库名,数据库链接池参数等
2、配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份。对于插入操作完全在一台机器上进行,读取操作可以在俩台机 器上,通过加权可以使得查询更偏向另外一台机器。例:

其中定义了两台机器,id后缀带有main的表示插入的机器,id后缀为standby的表示查询为主的机器。
3、配置数据库组,包括组ID,组内插入数据库,备份数据源及初始状态。例:

4、配置数据源管理,包括数据源组及数据源监控器。例:

其中XML节点子节点中,属性dataSourceDescriptors中配置了数据源分组名与对应的分组关系,属性haDataSourceCreator定义了监控器。
分表规则配置:1、确定分表的算法,常用的算法有一致性哈希算法,整形 求余算法等;2、实现分表调用接口;3、配置算法映射所得值与表后缀直接的关系。以整形求余算法为例:

其中XML节点bean中id为此算法被引用的ID,class为类路径。子节点中constructor-arg为构造函数初始化参数,16表示求余的除数;属性(property)splitmap表示分表中算法返回值与分表后缀的对应关系,map中表示的意思是,如果分表算法返回0~3的数字,则映射到表后缀为1的表中,其他同理。之所以将多个返回值映射到同一张表,是为了使数据散列的更均匀。
分库规则管理:1、定义表操作,如查询、删除、插入等;2、配置每张表所在的数据库组。例:

分库规则又分为两种,一种是按命名空间(namespace)规则进行分库,一种是按sql语句进行分库(sqlmap),按sql语句分库的规则优先级大于按命名空间分库的规则。如上,表示的是Follower这张表的分库情况。
Follower表被分到两个库中,同时被拆分成4张表,表名分别为follower_1、follower_2、follower_3、follower_4。其中表follower_1、follower_3被分在数据库组partition1中,follower_2、follower_4被分在数据库组partition2中。
子节点rule中,shardingExpression是MVEL表达式,MVEL是一种功能强大的基于JAVA的表达式语言,定义的表达式可以使用MVEL工具直接运行;shards属性表示满足表达式的规则会被路由到哪个数据库分组中。如第一个规则表示对所有follower数据,如果传入的id经过规则mod.apply()计算后值为1,则路由到数据组partition1中。
3、配置总体路由规则
首先配置此路由中分表规则,然后引入各个表配置的路由规则。参见图7。
以上XML节点中配置了路由类,属性functionsMap中配置分表规则,各个表的分库规则路径可以单独配置一个(configLocation),也可以一次配置多个表的规则路径(configLocations)。规则解析有去重功能,对同相同路径的规则文件只会加载一次。
㈡数据库路由单元
数据库路由单元完成查询语句的路由操作,其又分为:SQL语句分析管理、SQL语句路由。SQL语句分析分为配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由根据分析好的语句使用路由规则得到相应的数据源。
SQL语句分析:
1、定义读取定义的SQL语句
语句的命名空间要与路由规则中的命名空间一致,如果路由规则是定义到语句级别,SQL语句的ID要和路由规则中的一致。例:

如这里定义了表follower的插入与查询操作,此表的namespace要与上面定义的规则中namespace一致,查询操作load要与规则中sqlmap中的命名空间后面的部分一致,即namespace+id=sqlmap。
2、运行时候,对输入的语句进行分析
分析语句会分成两个部分,语句标示与传入参数。语句标示即sql语句的namespace+id,参数是程序在进行数据库操作传入的参数。
SQL语句路由:
1、计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入
2、通过语句标示得到namespace和id
3、首先匹配语句级别的规则,如果匹配成功则不再匹配
4、如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功 返回规则对应的数据源,否则返回空数据源。
整体匹配流程图如图8所示。
㈢数据库集群监控单元
数据库集群监控模块对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。主要包括心跳监控模块。
心跳监控模块:
1、对每一组机器启动一个监控线程
一般都会有多组机器,监控线程中存有插入机器、备份机器的数据源,各自的状态。
2、设置心跳时间
3、检查插入数据库状态
如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库。
如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库。
4、检查备份库状态
备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。
集群监控流程图如图9所示。
本发明技术方案,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现了同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免了日后分表的麻烦,方便了日后数据表的迁移。数据分表算法灵活可配,使用者可以根据自己的条件灵活选择。对集群中热备机器进行自动监控与热切换,避免了手动切换造成的不可预知的错误。与现有技术的区别之处:
⑴本发明技术方案可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。
⑵现有技术分表直接按分库进行,或者是开始不分,而是等数据量到达一定 规模后再分表。前一种如果数据量较小,则会浪费硬件资源;后一种进行分库需要再设定算法,进行数据重新映射划分,浪费时间且容易出错。本发明的技术方案可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。
⑶分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法。在此期间数据库访问方式不需要改变,具有通用性。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂类型元数据路由的解决办法。现有的数据库路由无法完成有复杂类型参与的数据库路由过程。因此,本发明提出了一种数据库路由装置和一种数据库路由方法,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

数据库路由装置和方法.pdf_第1页
第1页 / 共22页
数据库路由装置和方法.pdf_第2页
第2页 / 共22页
数据库路由装置和方法.pdf_第3页
第3页 / 共22页
点击查看更多>>
资源描述

《数据库路由装置和方法.pdf》由会员分享,可在线阅读,更多相关《数据库路由装置和方法.pdf(22页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410771754.7(22)申请日 2014.12.12G06F 17/30(2006.01)(71)申请人用友软件股份有限公司地址 100094 北京市海淀区北清路68号用友软件园(72)发明人卢相宁 杨鹏(74)专利代理机构北京中恒高博知识产权代理有限公司 11249代理人姜万林(54) 发明名称数据库路由装置和方法(57) 摘要本发明提供了一种数据库路由装置,包括:数据库路由规则管理单元,用于对数据库路由规则进行管理;数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元,用于基于对查询语。

2、句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。本发明还提供了一种数据库路由方法。通过本发明的技术方案,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书3页 说明书12页 附图6页(10)申请公布号 CN 104408174 A(43)申请公布日 2015.03.11CN 10440。

3、8174 A1/3页21.一种数据库路由装置,其特征在于,包括:数据库路由规则管理单元,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。2.根据权利要求1所述的数据库路由装置,其特征在于,所述数据库路由规则管理单元,具体包括:数据库资源管理模块,用于对分布部署的各个数据库进行管理;分表规则管理模块,用于对用户配置文。

4、件中的规则进行解析,将规则读入到内存中;分库规则管理模块,用于对配置文件中分库的规则进行解析。3.根据权利要求1或2所述的数据库路由装置,其特征在于,所述数据库路由单元,具体包括:SQL语句分析管理模块,用于配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由模块,用于根据分析好的语句使用路由规则得到相应的数据源。4.根据权利要求3所述的数据库路由装置,其特征在于,所述数据库集群监测单元,具体包括:心跳监控模块,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。5.根据权利要求4所述的数据库。

5、路由装置,其特征在于,所述数据库资源管理模块对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述分表规则管理模块将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述分库规则管理模块对配置文件中分库的规则进行解析的操作,进一步包。

6、括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述SQL语句分析管理模块传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;权 利 要 求 书CN 104408174 A2/3页3和/或,所述SQL语句路由模块根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则。

7、对应的数据源,否则返回空数据源;和/或,所述心跳监控模块检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,所述心跳监控模块检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。6.一种数据库路由方法,其特征在于,包括:步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;步骤。

8、204:基于对数据库路由规则的管理,完成查询语句的路由操作;步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。7.根据权利要求6所述的数据库路由方法,其特征在于,所述步骤202,具体包括:步骤302:对分布部署的各个数据库进行管理;步骤304:对用户配置文件中的规则进行解析,将规则读入到内存中;步骤306:对配置文件中分库的规则进行解析。8.根据权利要求6或7所述的数据库路由方法,其特征在于,所述步骤204,具体包括:步骤402:配置语句分析与传入语句分析,配置语句分析解析配。

9、置文件中定义的语句,传入语句分析解析程序运行时候的语句;步骤404:根据分析好的语句使用路由规则得到相应的数据源。9.根据权利要求8所述的数据库路由方法,其特征在于,所述步骤206,具体包括:步骤502:对每一组机器启动一个监控线程;步骤504:基于启动的监控线程,设置心跳时间;步骤506:基于设置的心跳时间,检查插入数据库状态;步骤508:基于插入数据库状态的检查结果,检查备份库状态。10.根据权利要求9所述的数据库路由方法,其特征在于,所述步骤302对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机权 利 要 求 。

10、书CN 104408174 A3/3页4热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述步骤304将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述步骤306对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述步骤402传入语句分析解析程序运行时候的语。

11、句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,所述步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,所述步骤506检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是。

12、不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,所述步骤508检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。权 利 要 求 书CN 104408174 A1/12页5数据库路由装置和方法技术领域0001 本发明涉及数据处理技术领域,具体地,涉及一种数据库路由装置和一种数据库路由方法。背景技术0002 互联网络应用中,随着业务的发展,积累的数据越来越多,开始设计的数据库架构不能满足性能及业务的要求,通常会将原来的数据库进行横向切分,即分表;同时可能会根据业务将。

13、数据库进行纵向切分,即分库。伴随数据库架构变化,数据库访问方式也做相应改变,不同阶段使用的分库分表算法也有所不同,其中存在的主要问题有:0003 数据库访问方式随架构变化而变更:随着数据由少变多,数据库架构的变化,原来的路由方法发生改变,数据库访问方式需要相应修改,需要大量代码的修改、测试,浪费时间且容易出错。0004 分库分表算法不能灵活配置:数据量积累的不同阶段,会有不同的分库分表方法,不能灵活配置,方案不具有通用性。0005 数据库分库,在同一库内不能将同一表进行分表:同一表在单库内分表,一是减小表大小提高效率和性能,二是可为以后扩展做准备,避免表拆分数据重新映射问题。0006 如何设计。

14、一个路由方案,使得在数据增长各个阶段数据库访问方式固定,不必大规模修改代码,并且能灵活配置分库分表算法,在同一库中进行数据库表的切分,同时根据规则自动路由到相应的数据库与表,是本发明技术方案的立足点和待解决问题。0007 因此,需要一种新的数据库路由技术,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。发明内容0008 本发明正是基于上述问题,提出了一种新的数据库路由技术,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的。

15、数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统一路由思路。0009 有鉴于此,本发明提出了一种数据库路由装置,包括:数据库路由规则管理单元,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;数据库路由单元,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库。

16、中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。说 明 书CN 104408174 A2/12页60010 在上述技术方案中,优选地,所述数据库路由规则管理单元,具体包括:数据库资源管理模块,用于对分布部署的各个数据库进行管理;分表规则管理模块,用于对用户配置文件中的规则进行解析,将规则读入到内存中;分库规则管理模块,用于对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。0011 在上述技术方案中。

17、,优选地,所述数据库路由单元,具体包括:SQL语句分析管理模块,用于配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由模块,用于根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。0012 在上述技术方案中,优选地,所述数据库集群监测单元,具体包括:心跳监控模块,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。在。

18、该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。0013 在上述技术方案中,优选地,所述数据库资源管理模块对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述分表规则管理模块将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求。

19、余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述分库规则管理模块对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述SQL语句分析管理模块传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,所述SQL语句路由模块根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功。

20、则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,所述心跳监控模块检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,所述心跳监控模块检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。0014 根据本发明的又一个方面,还提出了一种数据。

21、库路由方法,包括:步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;步骤204:说 明 书CN 104408174 A3/12页7基于对数据库路由规则的管理,完成查询语句的路由操作;步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。

22、。0015 在上述技术方案中,优选地,所述步骤202,具体包括:步骤302:对分布部署的各个数据库进行管理;步骤304:对用户配置文件中的规则进行解析,将规则读入到内存中;步骤306:对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。0016 在上述技术方案中,优选地,所述步骤204,具体包括:步骤402:配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;步骤404:根据分析好的语句使用路由规则得到相应的数据。

23、源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。0017 在上述技术方案中,优选地,所述步骤206,具体包括:步骤502:对每一组机器启动一个监控线程;步骤504:基于启动的监控线程,设置心跳时间;步骤506:基于设置的心跳时间,检查插入数据库状态;步骤508:基于插入数据库状态的检查结果,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。0018 在上述技术方案中。

24、,优选地,所述步骤302对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,所述步骤304将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,所述步骤306对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、。

25、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,所述步骤402传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,所述步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,所述步骤506检查插入数据库状态的操作,进一步包括:如果插入数据库状。

26、态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的说 明 书CN 104408174 A4/12页8用于插入更新的数据源切换回插入库;和/或,所述步骤508检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。0019 通过以上技术方案,可以在现有的数据库路由方式基础上,充分利用单对象类型元数据和文档描述类型完成多对象类型元数据的数据库路由,建立多对象类型元数据参与的面向对象类语言数据库路由的通用、统。

27、一路由思路。附图说明0020 图1示出了根据本发明的实施例的数据库路由装置的框图;0021 图2示出了根据本发明的实施例的数据库路由方法的流程图;0022 图3示出了根据本发明的实施例的数据库路由规则管理单元的流程图;0023 图4示出了根据本发明的实施例的数据库路由单元的流程图;0024 图5示出了根据本发明的实施例的数据库集群监测单元的流程图;0025 图6示出了根据本发明的实施例的高扩展可配置的分布式数据库路由机制的处理过程流程图;0026 图7示出了根据本发明的实施例的配置总体路由规则的程序截图;0027 图8示出了根据本发明的实施例的数据库路由单元的整体匹配流程图;0028 图9示出。

28、了根据本发明的实施例的数据库集群监控模块的集群监控流程图。具体实施方式0029 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。0030 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。0031 图1示出了根据本发明的实施例的数据库路由装置的框图。0032 如图1所示,根据本发明的实施例的数据库路由装置100,包括:数据库路由规则管理单元102。

29、,用于对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;数据库路由单元104,用于基于对数据库路由规则的管理,完成查询语句的路由操作;数据库集群监测单元106,用于基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。0033 在上述技术方案中,优选地,数据。

30、库路由规则管理单元102,具体包括:数据库资源管理模块1022,用于对分布部署的各个数据库进行管理;分表规则管理模块1024,用于对用户配置文件中的规则进行解析,将规则读入到内存中;分库规则管理模块1026,用于说 明 书CN 104408174 A5/12页9对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。0034 在上述技术方案中,优选地,数据库路由单元104,具体包括:SQL语句分析管理模块1042,用于配置语句分析与传入语句分析,配置语句分析解析配置。

31、文件中定义的语句,传入语句分析解析程序运行时候的语句;SQL语句路由模块1044,用于根据分析好的语句使用路由规则得到相应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。0035 在上述技术方案中,优选地,数据库集群监测单元106,具体包括:心跳监控模块1062,用于对每一组机器启动一个监控线程;设置心跳时间;检查插入数据库状态;以及,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方。

32、式不需要改变,具有通用性。0036 在上述技术方案中,优选地,数据库资源管理模块1022对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,分表规则管理模块1024将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,分库规则管理模块1。

33、026对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,SQL语句分析管理模块1042传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,SQL语句路由模块1044根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回。

34、规则对应的数据源,否则返回空数据源;和/或,心跳监控模块1062检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,心跳监控模块1062检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记可用。0037 图2示出了根据本发明的实施例的数据库路由方法的流程图。0038 如图2所示,根据本发明的实施例的数据库路由方法。

35、,包括:步骤202:对数据库路由规则进行管理,包括数据库资源管理、分表规则管理与分库规则管理;步骤204:基于对数据库路由规则的管理,完成查询语句的路由操作;步骤206:基于对查询语句的路由操作,对所有数据库节点进行监控,对每组中互备的两台机器,如果插入更新机器宕机,则自说 明 书CN 104408174 A6/12页10动将插入更新操作切换到备份机器,插入机器恢复后自动切回。在该技术方案中,以数据库热备特性为基础,实现了对分布式数据库插入、更新、查询时候的路由操作,实现同一库中分表操作,使得在起步阶段可以根据预估的数据规模对数据库表先行切分,避免日后分表的麻烦,方便了日后数据表的迁移。003。

36、9 在上述技术方案中,优选地,如图3所示,步骤202,具体包括:步骤302:对分布部署的各个数据库进行管理;步骤304:对用户配置文件中的规则进行解析,将规则读入到内存中;步骤306:对配置文件中分库的规则进行解析。在该技术方案中,可以满足数据增长各个阶段的需求,数据由少至多,在数据库由双机备份到分布式分库分表,用户对库表的访问都不需要改变,只需要做算法调整配置即可。0040 在上述技术方案中,优选地,如图4所示,步骤204,具体包括:步骤402:配置语句分析与传入语句分析,配置语句分析解析配置文件中定义的语句,传入语句分析解析程序运行时候的语句;步骤404:根据分析好的语句使用路由规则得到相。

37、应的数据源。在该技术方案中,可以在预估数据量下先行在同一库中划分多张表,如果数据量较小,则仍然使用一个库即可,节省了硬件资源,如果数据量增大则将已经切分好的数据直接分库,非常方便操作,且不易出错。0041 在上述技术方案中,优选地,如图5所示,步骤206,具体包括:步骤502:对每一组机器启动一个监控线程;步骤504:基于启动的监控线程,设置心跳时间;步骤506:基于设置的心跳时间,检查插入数据库状态;步骤508:基于插入数据库状态的检查结果,检查备份库状态。在该技术方案中,分表算法灵活可配置,用户可以根据不同发展阶段,选择不同分表算法;在此期间数据库访问方式不需要改变,具有通用性。0042 。

38、在上述技术方案中,优选地,步骤302对分布部署的各个数据库进行管理的操作,进一步包括:配置数据源链接信息,包括数据库链接地址、数据库名和数据库链接池参数;配置双机热备中主插入、主查询机器ID,两台热备机器为一个组,同组中存储数据互为备份;配置数据库组,包括组ID、组内插入数据库和备份数据源及初始状态;配置数据源管理,包括数据源组及数据源监控器;和/或,步骤304将规则读入到内存中的操作,进一步包括:确定分表的算法,包括一致性哈希算法和整形求余算法;实现分表调用接口;配置算法映射所得值与表后缀直接的关系;和/或,步骤306对配置文件中分库的规则进行解析的操作,进一步包括:定义表操作,包括查询、删。

39、除、插入的操作;配置每张表所在的数据库组;配置总体路由规则;和/或,步骤402传入语句分析解析程序运行时候的语句的操作,进一步包括:定义读取定义的SQL语句;运行时候,对输入的语句进行分析;和/或,步骤404根据分析好的语句使用路由规则得到相应的数据源的操作,进一步包括:计算分表后缀表的后缀根据分表算法计算得出,后缀作为参数传入;通过语句标示得到namespace和id;匹配语句级别的规则,如果匹配成功则不再匹配;如果语句级别规则匹配失败,则匹配命名空间级别的规则如果匹配成功返回规则对应的数据源,否则返回空数据源;和/或,步骤506检查插入数据库状态的操作,进一步包括:如果插入数据库状态原来是可用的,检测后发现已经不可用,则将插入数据库备份,同时切换备份库为当前插入库;如果插入数据库状态原来是不可用的,检测后发现插入库已经恢复,则将当前使用的用于插入更新的数据源切换回插入库;和/或,步骤508检查备份库状态的操作,进一步包括:检查备份库状态备份库不用管原来的状态,如果备份库不可用则标记备份库状态为不可用,如果备份库可用则标记说 明 书CN 104408174 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1