CN110109919B - 确定逻辑信息的方法和装置 - Google Patents

确定逻辑信息的方法和装置 Download PDF

Info

Publication number
CN110109919B
CN110109919B CN201810105921.2A CN201810105921A CN110109919B CN 110109919 B CN110109919 B CN 110109919B CN 201810105921 A CN201810105921 A CN 201810105921A CN 110109919 B CN110109919 B CN 110109919B
Authority
CN
China
Prior art keywords
sub
determining
library
logic
name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810105921.2A
Other languages
English (en)
Other versions
CN110109919A (zh
Inventor
吕信
樊建刚
肖彪
李亚迪
王伟
刘海锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810105921.2A priority Critical patent/CN110109919B/zh
Publication of CN110109919A publication Critical patent/CN110109919A/zh
Application granted granted Critical
Publication of CN110109919B publication Critical patent/CN110109919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

确定逻辑信息的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种确定逻辑信息的方法和装置。
背景技术
在当前信息爆炸的时代,业务产生的数据量常常超过单个数据库实例的负荷,在实际生产中最常见的对数据库扩展的方式就是进行分库分表处理。顾名思义,分库分表就是对数据库进行水平扩展,从原来单个数据库实例扩展到多个数据库实例上。在日常的数据库使用过程中,对分库分表的OLTP(On-Line transaction processing,联机事务处理过程,主要是执行基本日常的事务处理,比如数据库记录的增删查改)处理、OLAP(On-Lineanalytical processing,联机分析处理过程,)数据源录入都涉及获取逻辑表中的分表的操作。其中,数据库实例指的是在单台服务器(Docker或者物理机)上运行的一个数据库服务进程,数据库实例使用IP:Port(IP地址:端口号)来标识,一台服务器上可以部署多个数据库实例,这些数据库实例分别占用不同的端口号。
目前通用的管理分库分表的方式是使用分布式数据库中间件,比如常见的Vitess,TDDL,Cobar,MyCat等。但是中间件侧重提供OLTP服务,也只能按照特定的方式获取中间件自己维护的分库分表。当OLAP需要使用分库分表信息的时候,无法使用通用的方式从数据库中间件获取。目前进行OLAP任务获取分库分表信息时,主要有两种方案:用户手动录入分库分表信息;单独维护库表元数据,记录分库分表信息。其中,上述元数据用于记录分库分表信息。现有技术中获取分库分表信息的大概流程是:根据逻辑库名、逻辑表名查询元数据;根据元数据查询分库分表信息,然后在查到的分库分表上进行操作。其中,分库分表指的是单个数据库中的表经过拆分后变成了多个分表,这些分表可能在同一个库中,拥有不同的表名,也有可能分布在多个库中甚至多个数据库实例中,拥有相同或不同的表名。这些分表拥有同样的表结构。将存储同一个业务中不同数据、来自不同分库的具有相同表结构的分表在使用者的逻辑上可以抽象为数据库中一个库上的一个表,该抽象的库为逻辑库,该抽象的表为逻辑表。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1.在生产环境中会出现查询逻辑库包含哪些分库、逻辑表包含哪些分表信息的场景。现有技术中需要通过元数据来获取分库分表,元数据是由中间件维护的,各个中间件维护各自元数据的方式不同,这些元数据无法通用并且在中间件外部无法使用统一的方式获取,因此现有技术获取分库分表信息的方式操作复杂,通用性差;
2.手动录入的方式费时费力而且容易出错,临时任务可以使用,长期任务不建议使用;
3.单独维护库表的元数据,需要在创建数据库数据表、库表拆分、数据库切换等数据库操作的时候去维护元数据,保持线上的库表信息和中间件的元数据一致。这种方式需要在原有的业务功能上添加维护元数据的功能,功能之间耦合性高,实现起来复杂,需要耗费大量人力物力;
4.不管是中间件维护的元数据还是其他方式维护的元数据,都存在由于更新不及时等原因导致中间件的元数据和线上的库表信息不一致的问题。
发明内容
有鉴于此,本发明实施例提供一种确定逻辑信息的方法,能够快速、准确地获取分库分表信息以及该分库分表之间的逻辑信息;直接查询线上数据库,获得逻辑库逻辑表,不依赖其他的元数据,省去维护元数据的工作,省时省力。
为实现上述目的,根据本发明实施例的一个方面,提供了一种确定逻辑信息的方法,包括:根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
可选地,所述根据查询请求,确定待查询的分库分表包括:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。
可选地,确定所述待查询的分库分表的结构信息包括:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。
可选地,确定所述待查询的分库分表的结构信息包括:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。
可选地,根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息包括:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。
可选地,根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称包括:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称包括:根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。
可选地,所述方法还包括:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。
为实现上述目的,根据本发明实施例的另一方面,提供一种确定逻辑信息的装置,包括:分库表确定模块,用于根据查询请求,确定待查询的分库分表;分库表分组模块,用于确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;逻辑信息确定模块,用于根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
可选地,所述分库表确定模块还用于:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。
可选地,所述分库表分组模块还用于:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。
可选地,分库表分组模块还用于:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。
可选地,所述逻辑信息确定模块还用于:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。
可选地,所述逻辑信息确定模块还用于:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。
可选地,所述逻辑信息确定模块还用于:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。
为实现上述目的,根据本发明实施例的又一方面,提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的确定逻辑信息的方法。
为实现上述目的,根据本发明实施例的再一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的确定逻辑信息的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息的技术手段,所以克服了现有技术依赖元数据获取逻辑库逻辑表以及分库分表信息导致的操作复杂和通用性差的技术问题,进而达到快速、准确地获取逻辑库、逻辑表以及分库分表信息的技术效果;以及本发明实施例无需手动录入,省时省力。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的确定逻辑信息的方法的主要流程的示意图;
图2-1是本发明一实施例的确定逻辑信息方法中的库表拆分的示意图;
图2-2是本发明另一实施例的确定逻辑信息方法中的库表拆分的示意图;
图2-3是本发明又一实施例的确定逻辑信息方法中的库表拆分的示意图;
图3-1和3-2是本发明一实施例的确定逻辑信息的方法中待查询的分库分表的示意图;
图4是根据本发明实施例的确定逻辑信息的装置的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的确定逻辑信息的方法的主要流程的示意图。如图1所示,该方法包括:
步骤S101:根据查询请求,确定待查询的分库分表;
步骤S102:确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;
步骤S103:根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
在本发明实施例中,分库分表一般有三种形式,如图2-1、图2-2和图2-3所示。其中,图2-1所示为库拆分的形式,图2-2所示为表拆分的形式,图2-3所示为库表同时拆分的形式。
在图2-1中,db表示一个拆分前的数据库,其中该数据库包含一个表tb。db1、db2和db3是数据库db拆分后的三个分库,每个分库中都包含表tb,每个分库的表存储的数据不同,即每个分库都包含分表,三个分表分别是db1.tb、db2.tb和db3.tb,因此该图是通过库拆分实现了分库分表。
在图2-2中,tb是数据库db中的一个表,tb1、tb2和tb3是表tb拆分后的三个分表,每个表中的数据也不相同。该图是通过表拆分实现了分库分表,三个分表分别是db.tb1、db.tb2和db.tb3。
图2-3是一个库表同时拆分的示例,图2-1和图2-2可以看作图2-3的一种特例。因此,在下文中以图2-3的形式为例对本发明实施例进行说明。
对于步骤S101,根据查询请求确定待查询的分库分表可以包括:
接收查询请求,所述查询请求包括项目标识;
根据项目标识,确定待遍历的数据库实例;
遍历所述待遍历的数据库实例,确定待查询的分库分表。
本发明实施例在查询库表信息时,没有查询所有的库表,而是在标识为某个项目或者业务的范围内搜寻所有的库。由于线上的库表一般会按照一定的规则划分,比如将标识为某个项目或者业务的库表按照某一规则划分为分库分表(可以使用数据库管理系统来记录相关信息,例如项标识与属于该项目的数据库实例的映射关系,以便于使用者管理),因此本发明实施例采用在标识为某个项目或者业务的范围内查询所有库表的方式,一方面缩小了查询的范围,另一方面也更符合查询逻辑。
对于步骤S102,确定待查询的分库分表的结构信息可以包括:确定待查询的分库分表的列信息,将所述列信息进行拼接以确定该待查询的分库分表的结构信息。
在本实施例中,分库分表的结构信息为存储在分库中的分表的schema信息。分表的schema信息为能标识分表的结构的信息,可以使用分表的所有列信息表示分表的schema信息。其中,如下表1所示,列信息可以是列名或列名与列字段类型的组合。
表1:
列名 列字段类型
id Int(11)
name Varchar(20)
age Int(11)
在可选的实施例中,在确定待查询的分库分表的结构信息时,可以采用并发处理的方式,即并发查询所述待查询的分库分表,以确定待查询的分库分表的结构信息。
具体的,可以根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询待查询的分库分表,以确定待查询的分库分表的结构信息。
作为具体的示例,某个项目拥有128个数据库实例,在该128个数据库实例上部署了2个数据库:数据库A和数据库B,其中数据库A具有18张表,每张表具有8192张分表。在数据库B中的表数量较少,与数据库A相比可以忽略不计。因此,在本实施例中可以根据待遍历的数据库实例的数量确定并发度,即使用128个协程的并发度进行并发处理,对每一个数据库实例使用一个协程进行处理。其中,协程指的是一种轻量级的线程,其调度、执行的方式和线程一样,但是拥有比线程更小的上下文切换开销。
在可选的实施例中,对于上述例子,还可以在查询的过程中根据服务器的配置信息确定并发度。例如,示例中的服务器配置信息为该服务器(Docker)为4核CPU的服务器,即示例中的服务运行在4核CPU的服务器上,因此可以使用4个协程的并发度进行并发处理。
在其他可选的实施例中,可以根据待遍历的数据库实例的数量和服务器配置信息确定并发度。例如,在上述示例中,可以使用512个协程的并发度进行并发处理。
本发明实施例的生成逻辑库逻辑表的方法,采用并发查询的方式,有效的缩短了查询时间,提高了查询效率,对于数量巨大的分库分表,能够在生产环境中实时地获取分库分表之间的逻辑信息。
在本实施例中,在确定待查询的分库分表的结构信息之后,根据该结构信息对该分库分表进行分组,将具有相同结构信息的分库分表分为一组。
对于步骤S103,确定所述待查询的分库分表之间的逻辑信息可以包括:确定哪些分库属于同一个逻辑库、确定哪些分表属于同一个逻辑表以及确定该逻辑库的名称和逻辑表的名称。
具体的,确定归属于同一分组的分库属于同一逻辑库,归属于同一分组的分表属于同一逻辑表;
根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称(简称逻辑库名)以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称(简称逻辑表名)。在本发明实施例中,归属于同一分组的分库属于同一逻辑库,归属于同一分组的分表属于同一逻辑表,又因为在步骤S101中,根据项目标识确定待查询的分库分表,所以逻辑库对应的逻辑表下的分库分表都属于一个项目。
根据归属于同一分组的分库名称或分表名称确定逻辑库或逻辑表名称的过程具体可以包括:利用最长公共子序列(LCS,Longest Common Subsequence)算法从归属于同一分组的分库的名称中确定逻辑库的名称、从归属于同一分组的分表的名称中确定逻辑表的名称。
其中,最长公共子序列是指:如果一个序列是两个或多个已知序列的子序列,且是该两个或多个已知序列所有子序列中最长的子序列,则该序列是该两个或多个已知序列的最长公共子序列。例如序列“aabcd”与“12abcabcd”,其最长公共子序列为“abcd”。最长公共子序列算法的优势在于公共子序列不需要在原序列中占用连续的位置。因此,该算法对于处理不规则的方式产生的命名尤其有效。该算法计算最长公共子序列的方式是:先求解规模更小、更简单的子问题,然后根据子问题求解该子问题的最优解。在本实施例中,可以采用动态规划的方法计算最长公共子序列,以优化执行效率。
例如,对于长度为m的字符串X=[X1,X2…Xm]和长度为n的字符串Y=[Y1,Y2…Yn],计算两者之间最长公共子序列的长度的过程如下:
1.创建1个二维数组C[i,j],初始化二维数组C[i,j]为0,其中,C[i,j]表示字符串X和字符串Y的最长公共子序列;
2.i和j分别从0开始进行加1循环(即,i++,j++,i≤m,j≤n);
3.如果X[i]=Y[j],则C[i,j]=C[i-1,j-1]+1;
4.如果X[i]!=Y[j],则C[i,j]=max{C[i,j-1],C[i-1,j};
5.二维数组C[i,j]中的最大的数即为字符串X和字符串Y的最长公共子序列的长度。
6.从二维数组C[i,j]中确定字符串X和字符串Y的最长公共子序列。
总而言之,最长公共子序列(LCS)的长度可以按照如下公式(1)计算,按照该公式(1)计算时,时间复杂度仅为O(i*j)+O(i+j)。
在可选的实施例中,在利用最长公共子序列算法确定逻辑库名和逻辑表名时,若确定的逻辑库名或逻辑表名为空,则可以输出错误信息;和/或根据预设的名称自动生成规则生成逻辑库名或逻辑表,例如生成全局唯一的随机字符串或者将所有归属于该同一分组的分库或分表的名称进行拼接,将拼接后得到的名称作为逻辑库的名称或逻辑表的名称。其中,上述预设的名称自动生成规则可以根据业务场景以及需求灵活设置,本发明在此不做限制。
本发明实施例的确定逻辑信息的方法,采用根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息的技术手段,所以克服了现有技术依赖元数据获取逻辑库逻辑表以及分库分表信息导致的操作复杂和通用性差的技术问题,进而达到快速、准确地获取逻辑库、逻辑表以及分库分表信息的技术效果;以及本发明实施例无需手动录入,省时省力。
本发明实施例的方法在获取该项目下的逻辑库、逻辑表以及该逻辑库逻辑表包含的分库分表之后,可以在此基础上提供相关的服务。例如,按照项目查询属于该项目的所有分库,继而查询某个分库包含的所有逻辑表;或者根据逻辑库和逻辑表查询和它们相关的所有分库分表、获取逻辑表的列信息等。在查询指定逻辑库逻辑表下所有分库分表信息的时候,以该指定逻辑库逻辑表的名称作为搜索词,可以缩短查询时间。
为使本发明实施例的技术方案便于理解,结合下面的例子对本发明实施例的方法进行说明。
图3-1和图3-2为待查询的分库分表的示意图。其中,order.user为原始表,将其拆分为order1.user1,order1.user2,order1.user3,order2.user1,order2.user2,order2.user3,order3.user1,order3.user2,order3.user3。order.product为原始表,将其拆分为order1.product1,order1.product2,order1.product3,order2.product1,order2.product2。
查询上述所有分表的列信息,将该列信息拼接为表的schema信息,如下表2所示。
表2:
分表 表的schema信息
order1.user1 schema_user
order1.user2 schema_user
order1.user3 schema_user
order2.user1 schema_user
order2.user2 schema_user
order2.user3 schema_user
order3.user1 schema_user
order3.user2 schema_user
order3.user3 schema_user
order1.product1 schema_product
order1.product2 schema_product
order1.product3 schema_product
order2.product1 schema_product
order2.product2 schema_product
将具有相同schema信息的分表分为一组,如下表3-1和表3-2所示。
表3-1:
表3-2:
确定该项目下的逻辑库、逻辑表以及该逻辑表包含的分库分表,并根据归属于同一分组的分库的名称确定逻辑库的名称,根据归属于同一分组的分库的名称确定逻辑表的名称。
经过上述操作,获得了该项目下的逻辑库order,逻辑库下的两个逻辑表user和product以及每个逻辑表包含的分表,如下表4-1和表4-2所示。
表4-1:
表4-2:
图4是根据本发明实施例的确定逻辑信息的装置的主要模块的示意图。
如图4所示,该装置400包括:分库表确定模块401,用于根据查询请求,确定待查询的分库分表;分库表分组模块402,用于确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;逻辑信息确定模块403,用于根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
可选地,所述分库表确定模块401还用于:接收查询请求,所述查询请求包括项目标识;根据项目标识,确定待遍历的数据库实例;遍历所述待遍历的数据库实例,确定待查询的分库分表。
可选地,所述分库表分组模块402还用于:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。
可选地,分库表分组模块402还用于:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。
可选地,所述逻辑信息确定模块403还用于:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。
可选地,所述逻辑信息确定模块403还用于:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。
可选地,所述逻辑信息确定模块403还用于:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
图5示出了可以应用本发明实施例的确定逻辑信息的方法或确定逻辑信息的装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的确定逻辑信息的方法一般由服务器505执行,相应地,确定逻辑信息的装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
根据查询请求,确定待查询的分库分表;
确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;
根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
本发明实施例的技术方案,因为采用根据查询请求,确定待查询的分库分表;确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表分为一组;根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息的技术手段,所以克服了现有技术依赖元数据获取逻辑库逻辑表以及分库分表信息导致的操作复杂和通用性差的技术问题,进而达到快速、准确地获取逻辑库、逻辑表以及分库分表信息的技术效果;以及本发明实施例无需手动录入,省时省力。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (16)

1.一种确定逻辑信息的方法,其特征在于,包括:
根据查询请求,确定待查询的分库分表;
确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;
根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
2.根据权利要求1所述的方法,其特征在于,所述根据查询请求,确定待查询的分库分表包括:
接收查询请求,所述查询请求包括项目标识;
根据项目标识,确定待遍历的数据库实例;
遍历所述待遍历的数据库实例,确定待查询的分库分表。
3.根据权利要求2所述的方法,其特征在于,确定所述待查询的分库分表的结构信息包括:
根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;
按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。
4.根据权利要求1所述的方法,其特征在于,确定所述待查询的分库分表的结构信息包括:
确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。
5.根据权利要求1所述的方法,其特征在于,根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息包括:
确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;
根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。
6.根据权利要求5所述的方法,其特征在于,根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称包括:根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;
根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称包括:根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。
8.一种确定逻辑信息的装置,其特征在于,包括:
分库表确定模块,用于根据查询请求,确定待查询的分库分表;
分库表分组模块,用于确定所述待查询的分库分表的结构信息,根据所述结构信息将所述待查询的分库分表进行分组,其中,具有相同结构信息的分库分表为一组;
逻辑信息确定模块,用于根据归属于同一分组的分库分表,确定所述待查询的分库分表之间的逻辑信息。
9.根据权利要求8所述的装置,其特征在于,所述分库表确定模块还用于:
接收查询请求,所述查询请求包括项目标识;
根据项目标识,确定待遍历的数据库实例;
遍历所述待遍历的数据库实例,确定待查询的分库分表。
10.根据权利要求9所述的装置,其特征在于,所述分库表分组模块还用于:根据待遍历的数据库实例的数量和/或服务器配置信息,确定并发度;
按照所述并发度查询所述待查询的分库分表,以确定所述待查询的分库分表的结构信息。
11.根据权利要求8所述的装置,其特征在于,分库表分组模块还用于:确定所述待查询的分库分表的列信息,将所述列信息进行拼接以确定所述待查询的分库分表的结构信息。
12.根据权利要求8所述的装置,其特征在于,所述逻辑信息确定模块还用于:确定归属于同一分组的分库属于同一逻辑库以及归属于同一分组的分表属于同一逻辑表;
根据所述归属于同一分组的分库的名称,确定所述逻辑库的名称以及根据所述归属于同一分组的分表的名称,确定所述逻辑表的名称。
13.根据权利要求12所述的装置,其特征在于,所述逻辑信息确定模块还用于:
根据最长公共子序列算法和所述归属于同一分组的分库的名称,确定逻辑库的名称;
根据最长公共子序列算法和所述归属于同一分组的分表的名称,确定逻辑表的名称。
14.根据权利要求13所述的装置,其特征在于,所述逻辑信息确定模块还用于:若根据最长公共子序列算法和所述归属于同一分组的分库的名称确定的逻辑库的名称为空或根据最长公共子序列算法和所述归属于同一分组的分表的名称确定的逻辑表的名称为空,则输出错误信息和/或利用预设的名称自动生成规则生成逻辑库的名称或逻辑表的名称。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN201810105921.2A 2018-02-02 2018-02-02 确定逻辑信息的方法和装置 Active CN110109919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810105921.2A CN110109919B (zh) 2018-02-02 2018-02-02 确定逻辑信息的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810105921.2A CN110109919B (zh) 2018-02-02 2018-02-02 确定逻辑信息的方法和装置

Publications (2)

Publication Number Publication Date
CN110109919A CN110109919A (zh) 2019-08-09
CN110109919B true CN110109919B (zh) 2024-01-12

Family

ID=67483323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810105921.2A Active CN110109919B (zh) 2018-02-02 2018-02-02 确定逻辑信息的方法和装置

Country Status (1)

Country Link
CN (1) CN110109919B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113779118A (zh) * 2020-10-28 2021-12-10 北京沃东天骏信息技术有限公司 基于Vitess架构的业务处理方法、装置及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02236778A (ja) * 1989-03-10 1990-09-19 Fujitsu Ltd 問い合わせ最適化処理方法
CN104657446A (zh) * 2015-02-04 2015-05-27 深圳市汇朗科技有限公司 分表联合统计查询方法、装置和系统
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
CN106528579A (zh) * 2015-09-15 2017-03-22 阿里巴巴集团控股有限公司 一种基于分库分表结构数据库的查询方法、装置及系统
CN107301178A (zh) * 2016-04-14 2017-10-27 阿里巴巴集团控股有限公司 数据查询处理方法、装置及系统
CN107423387A (zh) * 2017-07-19 2017-12-01 北京北信源软件股份有限公司 一种基于中间件的分库分表的方法与装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02236778A (ja) * 1989-03-10 1990-09-19 Fujitsu Ltd 問い合わせ最適化処理方法
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
CN104657446A (zh) * 2015-02-04 2015-05-27 深圳市汇朗科技有限公司 分表联合统计查询方法、装置和系统
CN106528579A (zh) * 2015-09-15 2017-03-22 阿里巴巴集团控股有限公司 一种基于分库分表结构数据库的查询方法、装置及系统
CN107301178A (zh) * 2016-04-14 2017-10-27 阿里巴巴集团控股有限公司 数据查询处理方法、装置及系统
CN107423387A (zh) * 2017-07-19 2017-12-01 北京北信源软件股份有限公司 一种基于中间件的分库分表的方法与装置

Also Published As

Publication number Publication date
CN110109919A (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
US11620308B2 (en) Adaptive distribution method for hash operations
CN107704202B (zh) 一种数据快速读写的方法和装置
CN107729399B (zh) 数据处理的方法和装置
US11310066B2 (en) Method and apparatus for pushing information
CN111061680A (zh) 一种数据检索的方法和装置
US10614087B2 (en) Data analytics on distributed databases
CN110895591B (zh) 一种定位自提点的方法和装置
CN110795494A (zh) 缓存数据同步异步化的自动化测试方法和装置
CN112182138A (zh) 一种目录编制方法和装置
CN110109919B (zh) 确定逻辑信息的方法和装置
CN111984745B (zh) 数据库字段动态扩展方法、装置、设备及存储介质
CN110851419A (zh) 一种数据迁移的方法和装置
CN112699187A (zh) 关联数据处理方法、装置、设备、介质及产品
CN112100168A (zh) 一种确定数据关联关系的方法和装置
CN111984686A (zh) 一种数据处理的方法和装置
CN110858199A (zh) 一种单据数据分布式计算的方法和装置
WO2021244233A1 (zh) 一种处理订单数据的方法和装置
CN113760600B (zh) 一种数据库备份方法、数据库还原方法和相关装置
CN112988778B (zh) 一种处理数据库查询脚本的方法和装置
CN110543520B (zh) 一种数据迁移的方法和装置
CN113850568A (zh) 会议室的配置方法、装置、电子设备和存储介质
CN113760966A (zh) 基于异构数据库系统的数据处理方法和装置
CN113760240A (zh) 一种生成数据模型的方法和装置
CN113448957A (zh) 一种数据查询方法和装置
CN112817930A (zh) 一种数据迁移的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant