著录项信息
专利名称 | 基于BS结构的多分布式数据源管理方法及系统 |
申请号 | CN201510861212.3 | 申请日期 | 2015-12-01 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2016-04-13 | 公开/公告号 | CN105488174A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 北京浩瀚深度信息技术股份有限公司 | 申请人地址 | 北京市海淀区北洼路45号14号楼102
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京浩瀚深度信息技术股份有限公司 | 当前权利人 | 北京浩瀚深度信息技术股份有限公司 |
发明人 | 邵珠光;齐凯;韩伟;王秀斌;刘军 |
代理机构 | 北京和信华成知识产权代理事务所(普通合伙) | 代理人 | 胡剑辉 |
摘要
本发明提供了一种基于BS结构的多分布式数据源管理方法及系统,所述方法包括以下步骤:将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;对所述数据源进行操作。本发明不需要依赖于固定的HASH算法,可以避免因算法缺陷导致的BUG;在数据源对应关系做调整时,不需要对代码进行修改,只需要修改数据源与数据表、数据源和代码包之间的关系即可,维护起来更加方便。本发明可以快捷、方便的实现对数据源管理。
1.一种基于BS结构的多分布式数据源管理方法,其特征在于,所述方法包括以下步骤:
将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;
执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;
对所述数据源进行操作。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。
3.如权利要求1所述的方法,其特征在于,所述在第一管理表和第二管理表中查找到对应数据源的步骤,进一步包括:
检查执行数据库操作程序所在代码包;
在默认数据源的第一管理表中查询代码包对应的中心数据源,其中,所述默认数据源为系统启动时读取的基本配置的数据源,所述默认数据源包括中心数据源;
判断代码包对应的中心数据源是否存在,如果存在,切换到代码包对应的第一数据源,如果不存在,在默认数据源第二管理表中查询数据表对应数据源;
判断数据表对应数据源是否存在,如果存在,切换到数据表对应的第二数据源,结束;
如果不存在,使用默认数据源,结束。
4.如权利要求3所述的方法,其特征在于,所述切换到代码包对应第一数据源的步骤,进一步包括:
检查执行数据库操作涉及到的数据表;
在第一数据源对应的第二管理表中查询数据表对应的数据源;
判断数据表对应的数据源是否存在,如果存在,切换到对应的第三数据源,结束;如果不存在,使用第一数据源,结束。
5.一种基于BS结构的多分布式数据源管理系统,其特征在于,所述系统包括:
存储模块,用于将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;
查找模块,用于执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;
处理模块,用于对所述数据源进行操作。
6.如权利要求5所述的系统,其特征在于,所述系统还包括:
修改模块,用于接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源的对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。
7.如权利要求5所述的系统,其特征在于,所述查找模块,进一步包括:
第一检查模块,用于检查执行数据库操作程序所在代码包;在默认数据源的第一管理表中查询代码包对应的中心数据源,或者在默认数据源第二管理表中查询数据表对应数据源,其中,所述默认数据源为系统启动时读取的基本配置的数据源,所述默认数据源包括中心数据源;
第一判断模块,用于判断代码包对应的中心数据源是否存在,或者数据表对应的数据源是否存在;
第一切换模块,用于当代码包或者数据表对应的数据源存在,切换到代码包对应的第一数据源,或者切换到数据表对应的第二数据源;如果不存在对应数据源,使用默认数据源。
8.如权利要求7所述的系统,其特征在于,所述查找模块,进一步包括:
第二检查模块,用于检查执行数据库操作涉及到的数据表;在第一数据源对应的第二管理表中查询数据表对应的数据源;
第二判断模块,判断数据表对应的数据源是否存在;
第二切换模块,用于当数据表对应数据源存在,切换到对应第三数据源,如果不存在,使用第一数据源。
基于BS结构的多分布式数据源管理方法及系统\n技术领域\n[0001] 本发明属于数据处理技术领域,尤其涉及一种基于BS结构的多分布式数据源管理方法及系统。\n背景技术\n[0002] 目前,有两种常用的技术方案用于多分布式数据源管理:\n[0003] 第一种,根据查询所需数据表表名的典型名称,通过固定的HASH算法,命中需要查询的数据源,然后切换到对应的数据源进行操作,所述操作包括数据增、删、改、查等;\n[0004] 关于上述的典型名称,举例说明:某业务流量统计表,因为其统计数据表的存储随时间变化,例如按天存储,表名为:td_service_d_20151119,其中_d_表示的是天表,即每天一张表,后面的20151119代表日期,这个时候典型名称就是td_service;\n[0005] 第二种,固定分配某些类型的数据表,根据查询所需数据表表名,结合固定分配数据表的规则列表,命中需要查询的数据源,然后切换到对应的数据源进行操作;\n[0006] 这个分配规则会有很多,可能不同的系统使用的不一样,举两个例子:1)所有数据表名以tm开头的表都分配到数据源1,例如tm_operator(操作员管理表),以tr开头的表都分配到数据源2,例如tr_region(地址资源表),其他依次类推;2)以完整固定表名的方式分配数据源,例如tm_operator表固定分配到数据源1,tm_role表固定分配到数据源2到对应的数据源。\n[0007] 如上所示,现有技术解决方法归纳起来有两种,一种是通过固定的HASH算法命中数据源,另一种是开发人员根据固定的分表规则在程序中显式的(即将分表规则写在代码里)处理查询的数据源。\n[0008] 现有的技术存在以下方面的问题:\n[0009] 1、通过HASH算法命中数据源的方案,可能存在由于HASH算法缺陷导致随着数据表增加会出现数据源命中错误的情况;\n[0010] 2、开发人员根据固定分表规则处理的方案,在新的类型数据表产生或数据表规则变化时,都需要重新进行开发;\n[0011] 因此,如何设计出快捷、方便的数据源管理方法及系统,成为技术人员需要考虑的问题。\n发明内容\n[0012] 本发明所要解决的技术问题是提供一种基于BS结构的多分布式数据源管理方法及系统,快捷、方便的实现对数据源管理。\n[0013] 为了解决上述技术问题,本发明提供了一种基于BS结构的多分布式数据源管理方法,其特征在于,所述方法包括以下步骤:\n[0014] 将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;\n[0015] 执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;\n[0016] 对所述数据源进行操作。\n[0017] 优选的,所述方法还包括以下步骤:\n[0018] 接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。\n[0019] 优选的,所述在第一管理表和第二管理表中查找到对应数据源的步骤,进一步包括:\n[0020] 检查执行数据库操作程序所在代码包;\n[0021] 在默认数据源第一管理表中查询代码包对应中心数据源;\n[0022] 判断代码包对应中心数据源是否存在,如果存在,切换到代码包对应第一数据源,如果不存在,在默认数据源第二管理表中查询数据表对应数据源;\n[0023] 判断数据表对应数据源是否存在,如果存在,切换到数据表对应第二数据源,结束;如果不存在,使用默认数据源,结束。\n[0024] 优选的,所述切换到代码包对应第一数据源的步骤,进一步包括:\n[0025] 检查执行数据库操作涉及到的数据表;\n[0026] 在第一数据源对应的第二管理表中查询数据表对应数据源;\n[0027] 判断数据表对应数据源是否存在,如果存在,切换到对应第三数据源,结束;如果不存在,使用第一数据源,结束。\n[0028] 为了解决上述技术问题,本发明还提供了一种基于BS结构的多分布式数据源管理系统,所述系统包括:\n[0029] 存储模块,用于将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;\n[0030] 查找模块,用于执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;\n[0031] 处理模块,用于对所述数据源进行操作。\n[0032] 优选的,所述系统还包括:\n[0033] 修改模块,用于接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源的对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。\n[0034] 优选的,所述查找模块,进一步包括:\n[0035] 第一检查模块,用于检查执行数据库操作程序所在代码包;在默认数据源第一管理表中查询代码包对应中心数据源,或者在默认数据源第二管理表中查询数据表对应数据源;\n[0036] 第一判断模块,用于判断代码包对应中心数据源是否存在,或者数据表对应数据源是否存在;\n[0037] 第一切换模块,用于当代码包或者数据表对应数据源存在,切换到代码包对应第一数据源,或者切换到数据表对应第二数据源;如果不存在对应数据源,使用默认数据源。\n[0038] 优选的,所述查找模块,进一步包括:\n[0039] 第二检查模块,用于检查执行数据库操作涉及到的数据表;在第一数据源对应的第二管理表中查询数据表对应数据源;\n[0040] 第二判断模块,判断数据表对应数据源是否存在;\n[0041] 第二切换模块,用于当数据表对应数据源存在,切换到对应第三数据源,如果不存在,使用第一数据源。\n[0042] 本本发明的方法及系统与目前常用的两种方案相比,具有以下优点:\n[0043] 1、本发明不需要依赖于固定的HASH算法,可以避免因算法缺陷导致的BUG;\n[0044] 2、在数据源对应关系做调整时,不需要对代码进行修改,只需要修改数据源与数据表、数据源和代码包之间的关系即可,维护起来更加方便。\n[0045] 可见,本发明可以快捷、方便的实现对数据源管理。\n附图说明\n[0046] 图1为本发明的基于BS结构的多分布式数据源管理方法流程图。\n[0047] 图2为本发明的管理表结构示意图。\n[0048] 图3为本发明的执行数据库操作方法流程图。\n[0049] 图4为本发明的基于BS结构的多分布式数据源管理系统结构示意图。\n具体实施方式\n[0050] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0051] 本发明的主要思想是:通过在服务器端存储管理表,将数据源与数据表对应关系维护在一个管理表,数据源与代码包关系维护在另一管理表;这样通过配置数据源与数据表关联关系、配置数据源与代码包关联关系两种方式,将数据表、数据源和代码包关联起来,可以通过代码包查找数据源,或者通过数据表查找数据源。在代码开发阶段,开发人员无需显式处理数据表与数据源对应关系,完全由系统自动完成,只需通过修改配置即可达到目的。\n[0052] 参照图1所示,为本发明的基于BS结构的多分布式数据源管理方法流程图。所述数据源管理方法包括以下步骤:\n[0053] 步骤101,将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;\n[0054] 步骤102,执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;\n[0055] 步骤103,对所述数据源进行操作。\n[0056] 在本发明的一个优选实施例中,所述方法还包括以下步骤:\n[0057] 接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源的对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。\n[0058] 参照图2所示,为本发明的管理表结构示意图。\n[0059] 图中的数据源A本身对应的中心数据源,因此它后面还有对应的第二管理表,而数据源B和数据源C一样都是一般的数据源,此类数据源中不包含后续的数据表与数据源对应关系。\n[0060] 参照图2所示的管理表结构,图1中所述在第一管理表和第二管理表中查找到对应数据源的步骤,进一步包括:\n[0061] 检查执行数据库操作程序所在代码包;\n[0062] 在默认数据源第一管理表中查询代码包对应中心数据源;\n[0063] 判断代码包对应中心数据源是否存在,如果存在,切换到代码包对应第一数据源,如果不存在,在默认数据源第二管理表中查询数据表对应数据源;\n[0064] 判断数据表对应数据源是否存在,如果存在,切换到数据表对应第二数据源,结束;如果不存在,使用默认数据源,结束。\n[0065] 在本发明的一个优选实施例中,所述切换到代码包对应第一数据源的步骤,进一步包括:\n[0066] 检查执行数据库操作涉及到的数据表;\n[0067] 在第一数据源对应的第二管理表中查询数据表对应数据源;\n[0068] 判断数据表对应数据源是否存在,如果存在,切换到对应第三数据源,结束;如果不存在,使用第一数据源,结束。\n[0069] 参照图3所示,为本发明的执行数据库操作方法流程图的一个详细描述。由图3可知,图1所示的步骤102进一步包括:\n[0070] 步骤1021,检查执行数据库操作程序所在代码包;\n[0071] 步骤1022,在默认数据源第一管理表(tm_datasource)中查询代码包对应中心数据源;\n[0072] 其中,默认数据源就是系统启动时读取的基本配置的数据源。\n[0073] 步骤1023,判断代码包对应中心数据源是否存在?如果存在,执行步骤1029,如果不存在,执行步骤1024;\n[0074] 步骤1024,检查执行数据库操作涉及到的数据表;\n[0075] 步骤1025,在默认数据源第二管理表(tm_datatable)中查询数据表对应数据源;\n[0076] 步骤1026,判断数据表对应数据源是否存在?如果存在,执行步骤1027,如果不存在,执行步骤1028;\n[0077] 步骤1027,切换到数据表对应第二数据源(数据源B),结束;\n[0078] 步骤1028,使用默认数据源,结束;\n[0079] 步骤1029,切换到代码包对应第一数据源(数据源A);\n[0080] 步骤1030,检查执行数据库操作涉及到的数据表;\n[0081] 步骤1031,在第一数据源(数据源A)对应的第二管理表(tm_datatable)中查询数据表对应数据源;\n[0082] 步骤1032,判断数据表对应数据源是否存在?如果存在,执行步骤1033,如果不存在,执行步骤1034;\n[0083] 步骤1033,切换到对应第三数据源(数据源C),结束;\n[0084] 步骤1034,使用第一数据源(数据源A),结束。\n[0085] 参照图4所示,为本发明的基于BS结构的多分布式数据源管理系统结构示意图。所述系统包括:\n[0086] 存储模块401,用于将数据源与代码包对应关系存储于第一管理表中,和/或将数据表与数据源对应关系存储于第二管理表中;\n[0087] 查找模块402,用于执行数据库操作,检查执行数据库操作所涉及的代码包和/或数据表,根据所述代码包和/或所述数据表,在第一管理表和第二管理表中查找到对应数据源;\n[0088] 处理模块403,用于对所述数据源进行操作。\n[0089] 在本发明的一个优选实施例中,所述系统还包括:\n[0090] 修改模块404,用于接收对于数据源本身的调整或者数据源与代码包对应关系的调整,或者接收数据表与数据源的对应关系的调整,根据所述调整修改所述第一管理表或者第二管理表的对应内容。\n[0091] 在本发明的一个优选实施例中,所述查找模块402,进一步包括:\n[0092] 第一检查模块4021,用于检查执行数据库操作程序所在代码包;在默认数据源第一管理表中查询代码包对应中心数据源,或者在默认数据源第二管理表中查询数据表对应数据源;\n[0093] 第一判断模块4022,用于判断代码包对应中心数据源是否存在,或者数据表对应数据源是否存在;\n[0094] 第一切换模块4023,用于当代码包或者数据表对应数据源存在,切换到代码包对应第一数据源,或者切换到数据表对应第二数据源;如果不存在对应数据源,使用默认数据源。\n[0095] 在本发明的一个优选实施例中,所述查找模块402,进一步包括:\n[0096] 第二检查模块4024,用于检查执行数据库操作涉及到的数据表;在第一数据源对应的第二管理表中查询数据表对应数据源;\n[0097] 第二判断模块4025,判断数据表对应数据源是否存在;\n[0098] 第二切换模块4026,用于当数据表对应数据源存在,切换到对应第三数据源,如果不存在,使用第一数据源。\n[0099] 下面对本发明在具体应用中的实现过程进行详细说明:\n[0100] 第一步:系统规划及代码分包:\n[0101] 根据分布式系统规划,明确每个系统主要的管理表,对代码进行相应的分包处理,不同代码包对应不同的分布式系统中心数据源;\n[0102] 第二步:数据源与代码包关系配置调整;\n[0103] 如果数据源需要进行相应的调整,这个调整主要是指数据源本身的调整和数据源与包对应关系的调整,数据源本身的调整如:数据源从服务器1迁移至服务器2;数据源与包对应关系的调整如:数据源1原先映射com.hh.a这个包,调整至com.hh.b这个包)需要将数据源和代码包的关系进行对应的配置调整,调整后系统会自动将数据源和代码包关系进行映射;\n[0104] 第三步:数据源与数据表关系配置调整:\n[0105] 如果数据表的归属数据源需要进行相应的调整,数据表与数据源的对应关系存储在包对应的中心数据源的第二管理表(tm_datatable)表中,此表中存储了数据表与数据源的对应关系,此表也可以不配置任何关系,这样的话意味着从代码包对应的中心数据源获取数据。当需要将数据源和数据表的关系进行对应的配置调整,调整后系统会自动将数据源和数据表关系进行映射;\n[0106] 可见,如果系统数据源与数据表关系需要进行调整,只需要在系统界面上修改数据源和数据表的对应关系即可;如果分布式系统的中心数据源(管理表)进行调整,只需要在系统界面上修改数据源和代码包的对应关系即可。\n[0107] 本发明的关键点是将数据源与数据表之间的关系、数据源与代码包的映射关系结合在一起,并将其关系在数据库中进行映射,使得系统在分布式数据源管理中完全依赖于配置关系,不需要修改代码结构和映射算法。\n[0108] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2018-05-04
- 2016-05-11
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201510861212.3
申请日: 2015.12.01
- 2016-04-13
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-05-09
|
2011-12-22
| | |
2
| |
2012-06-13
|
2011-10-18
| | |
3
| |
2005-02-02
|
2004-06-04
| | |
4
| |
2014-07-23
|
2014-03-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |