确定逻辑信息的方法和装置制造方法及图纸

技术编号:21832498 阅读:23 留言:0更新日期:2019-08-10 17:56
本发明专利技术公开了一种确定逻辑信息的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述分库分表进行分组,其中,具有相同结构信息的分库分表分为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。该实施方式能够快速、准确地获取分库分表信息以及该分库分表之间的逻辑信息;直接查询线上数据库,汇总出逻辑库逻辑表,不依赖其他的元数据,省去维护元数据的工作;该实施方式无需手动录入,省时省力。

Methods and devices for determining logical information

【技术实现步骤摘要】
确定逻辑信息的方法和装置
本专利技术涉及计算机
,尤其涉及一种确定逻辑信息的方法和装置。
技术介绍
在当前信息爆炸的时代,业务产生的数据量常常超过单个数据库实例的负荷,在实际生产中最常见的对数据库扩展的方式就是进行分库分表处理。顾名思义,分库分表就是对数据库进行水平扩展,从原来单个数据库实例扩展到多个数据库实例上。在日常的数据库使用过程中,对分库分表的OLTP(On-Linetransactionprocessing,联机事务处理过程,主要是执行基本日常的事务处理,比如数据库记录的增删查改)处理、OLAP(On-Lineanalyticalprocessing,联机分析处理过程,)数据源录入都涉及获取逻辑表中的分表的操作。其中,数据库实例指的是在单台服务器(Docker或者物理机)上运行的一个数据库服务进程,数据库实例使用IP:Port(IP地址:端口号)来标识,一台服务器上可以部署多个数据库实例,这些数据库实例分别占用不同的端口号。目前通用的管理分库分表的方式是使用分布式数据库中间件,比如常见的Vitess,TDDL,Cobar,MyCat等。但是中间件侧重提供OLTP服务,也只能按照特定的方式获取中间件自己维护的分库分表。当OLAP需要使用分库分表信息的时候,无法使用通用的方式从数据库中间件获取。目前进行OLAP任务获取分库分表信息时,主要有两种方案:用户手动录入分库分表信息;单独维护库表元数据,记录分库分表信息。其中,上述元数据用于记录分库分表信息。现有技术中获取分库分表信息的大概流程是:根据逻辑库名、逻辑表名查询元数据;根据元数据查询分库分表信息,然后在查到的分库分表上进行操作。其中,分库分表指的是单个数据库中的表经过拆分后变成了多个分表,这些分表可能在同一个库中,拥有不同的表名,也有可能分布在多个库中甚至多个数据库实例中,拥有相同或不同的表名。这些分表拥有同样的表结构。将存储同一个业务中不同数据、来自不同分库的具有相同表结构的分表在使用者的逻辑上可以抽象为数据库中一个库上的一个表,该抽象的库为逻辑库,该抽象的表为逻辑表。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:1.在生产环境中会出现查询逻辑库包含哪些分库、逻辑表包含哪些分表信息的场景。现有技术中需要通过元数据来获取分库分表,元数据是由中间件维护的,各个中间件维护各自元数据的方式不同,这些元数据无法通用并且在中间件外部无法使用统一的方式获取,因此现有技术获取分库分表信息的方式操作复杂,通用性差;2.手动录入的方式费时费力而且容易出错,临时任务可以使用,长期任务不建议使用;3.单独维护库表的元数据,需要在创建数据库数据表、库表拆分、数据库切换等数据库操作的时候去维护元数据,保持线上的库表信息和中间件的元数据一致。这种方式需要在原有的业务功能上添加维护元数据的功能,功能之间耦合性高,实现起来复杂,需要耗费大量人力物力;4.不管是中间件维护的元数据还是其他方式维护的元数据,都存在由于更新不及时等原因导致中间件的元数据和线上的库表信息不一致的问题。
技术实现思路
有鉴于此,本专利技术实施例提供一种确定逻辑信息的方法,能够快速、准确地获取分库分表信息以及该分库分表之间的逻辑信息;直接查询线上数据库,获得逻辑库逻辑表,不依赖其他的元数据,省去维护元数据的工作,省时省力。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种确定逻辑信息的方法,包括:根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。可选地,所述根据查询请求,确定待查询的分库分表包括:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。可选地,确定所述待查询的分库分表的结构信息包括:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。可选地,确定所述待查询的分库分表的结构信息包括:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。可选地,根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息包括:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。可选地,根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称包括:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称包括:根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。可选地,所述方法还包括:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。为实现上述目的,根据本专利技术实施例的另一方面,提供一种确定逻辑信息的装置,包括:分库表确定模块,用于根据查询请求,确定待查询的分库分表;分库表分组模块,用于确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;逻辑信息确定模块,用于根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。可选地,所述分库表确定模块还用于:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。可选地,所述分库表分组模块还用于:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。可选地,分库表分组模块还用于:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。可选地,所述逻辑信息确定模块还用于:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。可选地,所述逻辑信息确定模块还用于:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。可选地,所述逻辑信息确定模块还用于:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。为实现上述目的,根据本专利技术实施例的又一方面,提供一种电子设备,包括:一个本文档来自技高网
...

【技术保护点】
1.一种确定逻辑信息的方法,其特征在于,包括:根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。

【技术特征摘要】
1.一种确定逻辑信息的方法,其特征在于,包括:根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。2.根据权利要求1所述的方法,其特征在于,所述根据查询请求,确定待查询的分库分表包括:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。3.根据权利要求2所述的方法,其特征在于,确定所述待查询的分库分表的结构信息包括:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。4.根据权利要求1所述的方法,其特征在于,确定所述待查询的分库分表的结构信息包括:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。5.根据权利要求1所述的方法,其特征在于,根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息包括:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。6.根据权利要求5所述的方法,其特征在于,根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称包括:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称包括:根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。8.一种确定逻辑信息的装置,其特征在于,包括:分库表确定模块,用于根据查询请求,确定待查询的分库分表;分库表...

【专利技术属性】
技术研发人员:吕信樊建刚肖彪李亚迪王伟刘海锋
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1