CN107844490A - 一种数据库的分库方法及装置 - Google Patents

一种数据库的分库方法及装置 Download PDF

Info

Publication number
CN107844490A
CN107844490A CN201610831608.8A CN201610831608A CN107844490A CN 107844490 A CN107844490 A CN 107844490A CN 201610831608 A CN201610831608 A CN 201610831608A CN 107844490 A CN107844490 A CN 107844490A
Authority
CN
China
Prior art keywords
database table
incidence relation
database
subdata base
dml statement
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.)
Granted
Application number
CN201610831608.8A
Other languages
English (en)
Other versions
CN107844490B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610831608.8A priority Critical patent/CN107844490B/zh
Publication of CN107844490A publication Critical patent/CN107844490A/zh
Application granted granted Critical
Publication of CN107844490B publication Critical patent/CN107844490B/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/21Design, administration or maintenance of databases

Landscapes

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

Abstract

本发明实施例公开了一种数据库的分库方法及装置。本发明实施例中,获取源数据库中各个数据库表的DDL语句、各个数据库表关联的DML语句以及DML语句的性能指标数据;根据各个数据库表的DDL语句和各个数据库表关联的DML语句,确定各个数据库表之间的关联关系;根据各个数据库表之间的关联关系和DML语句的性能指标数据,确定各个数据库表之间的关联关系的程度值;根据各个数据库表之间的关联关系的程度值,对各个数据库表进行分库,从而避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。

Description

一种数据库的分库方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种数据库的分库方法及装置。
背景技术
随着社会的发展,应用***中大量的数据需要存储到数据库中。当需要存储的数据量到达一定程度(如:上亿级别),使用单台数据库进行数据的存储管理,会出现容量瓶颈、性能瓶颈等问题,影响到应用***处理能力提升,从而影响业务更加快速的发展。为解决这一问题,可采用数据库分库方法,即将海量数据由一个数据库存储管理拆分为多个数据库存储管理。
现有技术中的数据库分库通常由数据库管理员(Database Administrator,简称DBA)手动执行。具体来说,DBA通过对业务逻辑进行分析,以及对数据库表之间的关联关系进行分析,从而根据分析结果,将数据库表中关联关系较为密切的数据库表划分到一个分库中,并输出数据库ER图,以数据库ER图为基础进行分库。
然而,数据库表之间的关联关系较为复杂,例如,有些数据库表之间存在关联关系,但在业务场景中并不会关联使用,或者,有些数据库表之间的关联关系虽然在业务场景中有使用,但该关联关系可以更改,也就是说,关联使用并不是必须的。因此,在复杂业务场景中,数据库表的个数很多时,DBA在进行手动分库时,很难准确分析出大量数据库表之间的关联关系,更无法准确确定出关联关系的紧密程度,从而会导致得到的分库方案不准确。
发明内容
本发明实施例提供一种数据库的分库方法及装置,用以解决现有技术中DBA在进行手动分库时,很难准确分析出大量数据库表之间的关联关系,更无法准确确定出关联关系的紧密程度,导致得到的分库方案不准确的技术问题。
本发明实施例提供一种数据库的分库方法,包括:
获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;
根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;
根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
如此,通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了较为准确地对源数据库进行分库。由于源数据库中各个数据库表之间的关联关系是根据DDL语句和各个数据库表关联的DML语句得到的,从而使得各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
可选地,所述根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库,包括:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
如此,采用此种分库方式,依据预先设置的分库个数来划分,能够有效避免进行分库后得到的子数据库的个数过多或过少的问题,从而使得分库后的结果更为合理。
可选地,所述得到M个子数据库之后,还包括:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
如此,通过对划分后得到的各个子数据库的性能进行评估,从而能够保证各个子数据库对应的服务器的性能与各个子数据库的性能相匹配。
可选地,所述根据所述各个数据库表之间的关联关系的程度值,对所述源数据库进行分库,包括:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
如此,采用此种分库方式,在分库过程中,能够有效保证各个子数据库的性能值均小于等于预先设置的分库性能阈值。
可选地,所述子数据库的性能值包括所述子数据库的CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述子数据库的CPU消耗对应的性能值通过如下方式得到:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
如此,由于计算子数据库的性能值所采用的DML语句的CPU消耗量以及DML语句的IO消耗量均为预先可获取到的数据信息,因此,本发明实施例中可实现对子数据库性能的评估,有效解决了现有技术中进行手动分库后无法立即对分库效果进行评估的技术问题。
可选地,所述根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值,包括:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
可选地,所述根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还包括:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
如此,获取到不同子数据库中的数据库表之间的关联关系后,可根据数据信息,直接得到需要修改的DML语句和/或DDL语句,而现有技术中采用手动分库时,则需要导出所有的DML语句和DDL语句,并逐一分析各个DML语句和DDL语句是否受影响,是否需要修改,因此,本发明实施例中的方案不仅大大减小了分析的工作量,而且避免了手动分析容易出错的问题。
可选地,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
本发明实施例提供的一种数据库的分库装置,所述装置包括获取模块、处理模块、分库模块;
获取模块,用于获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
处理模块,用于根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;
分库模块,用于根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
如此,数据库的分库装置通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了较为准确地对源数据库进行分库。由于源数据库中各个数据库表之间的关联关系是数据库的分库装置根据DDL语句和各个数据库表关联的DML语句得到的,从而使得数据库的分库装置进行分库时所依据的各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
可选地,所述分库模块具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
可选地,所述处理模块在所述分库模块得到M个子数据库之后,还用于:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
可选地,所述分库模块具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
可选地,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述处理模块还用于,通过如下方式得到所述子数据库的CPU消耗对应的性能值:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
可选地,所述处理模块具体用于:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
可选地,所述分库模块根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还用于:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
可选地,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
本发明实施例提供的另一种数据库的分库装置,所述装置包括:通信接口、处理器;
所述通信接口,用于获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
所述处理器,用于根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
如此,数据库的分库装置通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了较为准确地对源数据库进行分库。由于源数据库中各个数据库表之间的关联关系是数据库的分库装置根据DDL语句和各个数据库表关联的DML语句得到的,从而使得数据库的分库装置进行分库时所依据的各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
可选地,所述处理器具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
可选地,所述处理器得到M个子数据库后,还用于:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
可选地,所述处理器具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
可选地,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述处理器还用于,通过如下方式得到所述子数据库的CPU消耗对应的性能值:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
可选地,所述处理器具体用于:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
可选地,所述处理器根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还用于:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
可选地,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
本发明的上述实施例中,获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的DML语句以及所述DML语句的性能指标数据;根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。本发明实施例中通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了对源数据库进行自动化分库。由于源数据库中各个数据库表之间的关联关系是根据DDL语句和各个数据库表关联的DML语句得到的,从而使得各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1a为垂直分库示意图;
图1b为水平分库示意图;
图2为本发明实施例适用的一种***架构示意图;
图3为本发明实施例提供的一种数据库的分库方法所对应的流程示意图;
图4a为根据DDL语句确定出的数据库表之间的关联关系示意图;
图4b为根据DML语句确定出的数据库表之间的关联关系示意图;
图4c为关联关系的程度值示意图;
图4d为采用分库方式一得到的分库结果示意图;
图4e为采用分库方式二得到的分库结果示意图;
图4f为采用分库方式三得到的分库结果示意图;
图5为本申请提供的一种数据库的分库装置的结构示意图;
图6为本申请提供的另一种数据库的分库装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
数据库分库包括垂直分库和水平分库。
具体来说,垂直分库是指将源数据库中关联关系较为紧密的数据库表划分到一个子数据库中,适用于源数据库中的数据库表的个数较多的场景。图1a为垂直分库示意图。如图1a所示,源数据库101中包括6个数据库表,分别为用户表(Users)、产品表(Products)、命令表(Orders)、信息表(Messages)、图像表(Images)、日志表(Logs)。经过垂直分库后,将源数据库101中的6个数据库表划分到3个子数据库中:用户表(Users)和产品表(Products)划分到子数据库1021中,命令表(Orders)和信息表(Messages)划分到子数据库1022中,图像表(Images)和日志表(Logs)划分到子数据库1023中。
水平分库是指将源数据库的一个数据库表中的数据按照规则划分到多个数据库中,适用于源数据库中的数据库表的个数不多,但数据库表中的数据量级较大的场景。图1b为水平分库示意图。如图1b所示,源数据库103中包括一个数据库表,即为用户表(Users),经过水平分库后,将用户表(Users)中的数据划分为4子数据库中,例如,用户编号为用户表(Users)中的主键,可基于用户编号对用户表中的数据进行划分,将用户编号为4的整数倍的数据划分到子数据库1041中,将用户编号为4的倍数余1的数据划分到子数据库1042中,将用户编号为4的倍数余2的数据划分到子数据库1043中,将用户编号为4的倍数余3的数据划分到子数据库1044中。
上述垂直分库和水平分库的方式可以单独使用,也可以结合使用,具体结合使用时,可先进行垂直分库,然后在垂直分库的基础上再进行水平分库。
由上述内容知,进行垂直分库时需要充分考虑数据库表之间的关联关系,而现有技术中通过DBA进行手动分库,会因为DBA准确分析出大量数据库表之间的关联关系,更无法准确确定出关联关系的紧密程度而导致得到的分库方案不准确,因此,本发明实施例正是针对于垂直分库中所存在的这一问题而提出的一种数据库的分库方法。
图2为本发明实施例适用的一种***架构示意图。如图2所示,该***架构中包括业务***201、消息中间件202、分库***数据库203、分库***204。
其中,业务***201中可包括多个监控代理终端(Agent),如图2中所示,包括监控代理终端2011、监控代理终端2012、监控代理终端2013、监控代理终端2014,多个监控代理终端用于采集源数据库的数据信息,例如,源数据库中各个数据库表关联的数据操控语言(Data Manipulation Language,简称DML)文件以及所述DML语句的性能指标数据等,其中,DML语句即为结构化查询语言(Structured Query Language,简称SQL)语句,多个监控代理终端采集到的SQL语句为历史执行过的SQL语句,SQL语句的性能指标数据为历史性能指标数据。
具体来说,一个监控代理终端可对应一个客户端或一个数据库服务端,用于从客户端或从数据库服务端采集源数据库的数据信息。若从客户端采集数据信息,则可通过封装各种数据提供的JDBC,避免对修改业务逻辑;JDBC周期上报SQL执行数据通过Flume上报到Kafka,最终存储到HDFS。若从数据库服务端采集数据信息,以Oracle为例,则可周期性读取Oracle数据库的V$SQL视图,读取到Oracle执行的所有SQL的性能指标数据。
消息中间件202用于将业务***201中的多个监控代理终端采集到的数据信息汇聚到分库***数据库中。消息中间件202可以为通用的Flume、Kafka等消息中间件。
分库***数据库203用于存储业务***201中的多个监控代理终端采集到的数据信息,以便于分库***204进行分库时使用。
分库***204用于根据分库***数据库203中存储的数据信息,实现对源数据库的自动化分库。
基于图2所示的***架构,图3为本发明实施例提供的一种数据库的分库方法所对应的流程示意图,该方法可由上述***架构中的分库***来执行,或者,也可以由数据库的分库装置来执行。下面以由分库***来执行为例进行说明,如图3所示,该方法包括:
步骤301,分库***向分库***数据库发送数据请求消息;所述数据请求消息中包括源数据库的标识信息。其中,源数据库即为待分库的数据库,源数据库的标识信息为能够唯一标识该源数据库的信息。
步骤302,分库***数据库接收到数据请求消息后,根据数据请求消息中包含的源数据库的标识信息,获取到源数据库的数据信息,并发送给分库***;其中,源数据库的数据信息中包括源数据库中各个数据库表的数据定义语言(Data Definition Language,简称DDL)语句、所述各个数据库表关联的DML语句以及所述DML语句的性能指标数据;
步骤303,分库***根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;
步骤304,分库***根据各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;
步骤305,分库***根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
本发明实施例中通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了较为准确地对源数据库进行分库。由于源数据库中各个数据库表之间的关联关系是根据DDL语句和各个数据库表关联的DML语句得到的,从而使得各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
具体来说,数据信息包括所述源数据库中各个数据库表的DDL语句、所述各个数据库表关联的DML语句以及所述DML语句的性能指标数据,其中,各个数据库表的DDL语句为静态数据,各个数据库表关联的DML语句以及所述DML语句的性能指标数据为动态数据。
下面分别进行具体介绍。
(1)各个数据库表的DDL语句
本发明实施例中,各个数据库表的DDL语句可以是分库***数据库从源数据库中导出的,一个数据库表对应一个DDL语句。分库***接收到分库***数据库发送的各个数据库表的DDL语句后,通过解析各个数据库表的DDL语句可得到的信息包括:表名、表列描述、主键、外键、数据量等信息。或者,各个数据库表的DDL语句也可以直接由分库***从源数据库中导出,进而解析各个数据库表的DDL语句,本发明实施例对此不做限定。如表1所示,为解析DDL语句得到的信息及描述。
表1:解析DDL语句得到的信息及描述
举个例子,获取到的数据库表GLOBAL_AREA的DDL语句如表2所示。
表2:数据库表GLOBAL_AREA的DDL语句
通过解析数据库表GLOBAL_AREA的DDL语句,获取到数据库表GLOBAL_AREA的信息如表3所示。
表3:数据库表GLOBAL_AREA的信息
步骤303中,通过解析源数据库中各个数据库表的DDL语句,可以得到各个数据库表的主键和/或外键,若数据库表b有外键,且数据库表b的外键关联数据库表a,则可确定数据库表a和数据库表b存在关联关系。
假设源数据库中包括13个数据库表,分别为数据库表1至数据库表13。通过解析13个数据库表的DDL语句后,可初步确定出13个数据库表之间的关联关系。图4a为根据DDL语句确定出的数据库表之间的关联关系示意图,其中,实线连接线表明连接线所连接的两个数据库表存在关联关系。如图4a所示,根据各个数据库表的DDL语句确定出数据库表1和数据库表2存在关联关系,数据库表2和数据库表4存在关联关系,数据库表4和数据库表5存在关联关系,数据库表9和数据库表11存在关联关系,数据库表8和数据库表10存在关联关系。
本发明实施例中,由于DDL语句可能未对数据库表之间的关联关系进行完整描述,例如,数据库表2和数据库表7之间也可能存在关联关系,但DDL语句创建了数据库表2和数据库表7,并没有描述数据库表2和数据库表7之间的关联关系,解析DDL语句无法得到数据库表2和数据库表7之间的关联关系。因此,本发明实施例中可结合各个数据库表关联的DML语句,通过对各个数据库表关联的DML文进行分析,以对各个数据库表之间的关联关系进行补充和完善。
(2)各个数据库表关联的DML语句以及所述DML语句的性能指标数据
本发明实施例中,各个数据库表关联的DML语句以及所述DML语句的性能指标数据可以是监控代理终端从客户端和数据库服务端采集并发送给分库***数据库的。具体来说,DML语句的性能指标数据包括DML语句的***吞吐量TPS、DML语句的中央处理器(Central Processing Unit,简称CPU)消耗量以及DML语句的输入/输出(Input/Output,简称IO)消耗量中的任一项或任意组合。
其中,从客户端可采集到的数据信息包括业务名、DML语句、执行总次数、TPS、平均时延等,如表4所示,为客户端采集到的数据信息示意。
表4:从客户端采集到的数据信息
业务名 DML语句 执行总次数 TPS 平均时延
业务A Select a,b…. 15420 20 100ms
业务A Select tt,kk… 20108 45 200ms
业务B Select aa,bb… 91534 10 400ms
…… ……. …. ….
从数据库服务端可采集到的数据信息包括DML语句、DML语句的CPU消耗量以及DML语句的IO消耗量等,如表5所示,为从数据库服务端采集到的数据信息示意。
表5:从数据库服务端采集到的数据信息
DML语句 CPU消耗量 IO消耗量
Select a,b…. *** ***
Select tt,kk… *** ***
步骤303中,分库***对获取到的DML语句进行分析,以确定DML语句关联的数据库表是否存在关联关系。如表6所示,为根据DML语句分析数据库表之间的关联关系示意。
表6:根据DML语句分析数据库表之间的关联关系
本发明实施例中,DML语句(Select A.a,A.b,B.c from A,B where A.a=B.b…)关联的数据库表为数据库表A和数据库表B,也即数据库表A和数据库表B关联的DML语句为Select A.a,A.b,B.c from A,B where A.a=B.b…。
如表6所示,通过分析DML语句(Select A.a,A.b,B.c from A,B where A.a=B.b…)后,确定出数据库表A和数据库表B存在隐式外键,则可确定数据库表A和数据库表B之间存在关联关系;数据库表B和数据库表C不存在隐式外键,则根据DML语句可确定数据库表B和数据库表C之间不存在关联关系。
需要说明的是,根据DML语句确定数据库表B和数据库表C之间不存在关联关系,但若根据DDL语句确定数据库表B和数据库表C之间存在关联关系,则可认为数据库表B和数据库表C之间存在关联关系。也就是说,若根据DML语句或DDL语句确定两个数据库表之间存在关联关系,即可认为两个数据库表之间存在关联关系。
举个例子,数据库表M的DDL语句为:
create table M(m1NUMBER(10),m 2VARCHAR2(64))
数据库表N的DDL语句为:
create table N(n1NUMBER(10),n2VARCHAR2(128))
通过解析数据库表M和数据库表N的DDL语句,确定数据库表M和数据库表N之间不存在外键关联。然而,通过分析的DML语句:
select M.m1,M.m2,N.n2from M,N where M.m1=N.m1
可确定数据库表M和数据库表N之间存在隐式外键,从而可确定数据库表M和数据库表N之间存在关联关系。
由上述内容可知,本发明实施例中,可先根据各个数据库表的DDL语句分析出各个数据库表的外键关联,然后根据DML语句分析出各个数据库表的隐式外键关联,二者互相补充,从而能够完整地确定出各个数据库表之间的关联关系。需要说明的是,本发明实施例中也可以先DML语句确定出各个数据库表的隐式外键关联,然后再分析DDL语句,具体先后顺序不做限定。
仍假设源数据库中包括13个数据库表,在图4a的基础上,通过解析13个数据库表关联的DML语句后,可进一步确定13个数据库表的隐式外键,进而对13个数据库表之间的关联关系进行完善。图4b为根据DML语句确定出的数据库表之间的关联关系示意图,其中,虚线连接线表明根据DML语句确定出连接线所连接的两个数据库表存在关联关系。
步骤304中,根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值,包括:针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
具体来说,如表6,与数据库表A和数据库表B之间的关联关系对应的DML语句为Select A.a,A.b,B.c from A,B where A.a=B.b…。本发明实施例中,与每一关联关系对应的DML语句可能为一个或一个以上。
在根据与每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值时,可依据DML语句的TPS,TPS越高,则与DML语句对应的关联关系的程度值越大;或者,依据DML语句的CPU消耗量,CPU消耗量越大,则与DML语句对应的关联关系的程度值越大;又或者,可同时依据DML语句的TPS和CPU消耗量来确定关联关系的程度值,具体不做限定。
举个例子,若一数据库中包括数据库表A、数据库表B、数据库表P、数据库表Q,数据库表A和数据库表B之间存在关联关系,数据库表P和数据库表Q之间存在关联关系,数据库表A和数据库表B之间的关联关系对应的DML语句为DML语句1,数据库表P和数据库表Q之间的关联关系对应的DML语句为DML语句2,则可根据DML语句1和DML语句2的TPS,来确定每一关联关系的程度值,若DML语句1的TPS为20,DML语句2的TPS为30,则相应地,可确定数据库表A和数据库表B之间的关联关系的程度值为10,数据库表P和数据库表Q之间的关联关系的程度值为15。
再举个例子,上述数据库表A和数据库表B之间的关联关系对应的DML语句为DML语句1和DML语句3,数据库表P和数据库表Q之间的关联关系对应的DML语句为DML语句2和DML语句4。若DML语句1的TPS为20,DML语句2的TPS为30,DML语句3的TPS为10,DML语句2的TPS为10,则由于DML语句1的TPS和DML语句3的TPS之和为20+10=30,DML语句2的TPS和DML语句4的TPS之和为30+10=40,相应地,可确定数据库表A和数据库表B之间的关联关系的程度值为15,数据库表P和数据库表Q之间的关联关系的程度值为20。
仍假设源数据库中包括13个数据库表,在图4b的基础上,根据13个数据库表之间的每一关联关系对应的DML语句的性能指标数据,可确定出每一关联关系的程度值。图4c为关联关系的程度值示意图。
步骤305中,确定出各个数据库表之间的关联关系以及关联关系的程度值后,可采用多种方式对各个数据库表进行分库,例如,可直接将关联关系的程度值大于等于某一阈值的数据库表划分到一个子数据库中(分库方式一),或者,可依据关联关系的程度值和预先设置的分库个数来对各个数据库表进行划分(分库方式二),又或者,可依据关联关系的程度值和预先设置的分库性能阈值来对各个数据库表进行划分(分库方式三)。下面分别对三种分库方式进行具体介绍。
(1)分库方式一:直接将关联关系的程度值大于等于某一阈值的数据库表划分到一个子数据库中
该种分库方式直接以关联关系的程度值作为分库的依据,而未对分库个数及分库性能进行限制,具有较强的随机性。
举个例子,仍假设源数据库中包括13个数据库表,在表4c的基础上,根据13个数据库表之间的关联关系的程度值进行划分,设某一阈值的大小为9,直接将关联关系的程度值大于等于9的数据库表划分到一个子数据库中,图4d为采用分库方式一得到的分库结果示意图。如图4d所示,数据库表1、数据库表2、数据库表7、数据库表4被划分到第一子数据库中,数据库表5、数据库表12、数据库表6、数据库表13被划分到第二子数据库中,数据库表8、数据库表9、数据库表10、数据库表11被划分到第三子数据库中,数据库表3被单独划分到第四子数据库中。
采用此种分库方式,由于随机性较强,很可能会导致各个子数据库的数据库表的数据总量差别较大(第四子数据库中的数据库表的数据总量明显小于前三个子数据库),从而使得各个子数据库性能不均衡,因此,本发明实施例中可在考虑各个数据库表关联关系的程度值的基础上,进一步结合其它限定条件,从而使得数据库的划分更为合理准确。
本发明实施例中优选采用分库方式二或分库方式三进行分库,以便得到合理准确的分库方案。
(2)分库方式二:根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
本发明实施例中,预先设置的分库个数可以是由本领域技术人员根据实际情况以及经验来设置的。
举个例子,仍假设源数据库中包括13个数据库表,在表4c的基础上,根据13个数据库表之间的关联关系的程度值和预先设置的分库个数来进行划分,若预先设置的分库个数为3(即M=3),则采用谱聚类算法对所述各个数据库表进行分库可包括如下步骤:
步骤1,根据各个数据库表之间的关联关系的程度值确定各个数据库表之间的相似矩阵(即为邻接矩阵):
步骤2,根据各个数据库表之间的邻接矩阵,得到拉普拉斯矩阵:
步骤3,将拉普拉斯矩阵进行特征分解后得到的特征向量进行聚类。
经过上述聚类过程后,得到3个子数据库。
图4e为采用分库方式二得到的分库结果示意图。如图4e所示,数据库表1、数据库表2、数据库表7、数据库表4被划分到第一子数据库中,数据库表3、数据库表5、数据库表12、数据库表6、数据库表13被划分到第二子数据库中,数据库表8、数据库表9、数据库表10、数据库表11被划分到第三子数据库中。
采用此种分库方式,由于是依据预先设置的分库个数来划分的,因此,需要对划分后得到的各个子数据库的性能进行评估,以保证各个子数据库对应的服务器的性能与各个子数据库的性能相匹配。
具体来说,获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;确定所述子数据库的性能值大于所述子数据库的分库阈值,则发出提示信息。其中,每一子数据库的分库性能阈值可以根据每一子数据库对应的服务器的性能来确定。提示信息可以用于提示工作人员子数据库的性能值大于该子数据库的分库阈值,从而使得工作人员在接收到该提示信息后,可对该子数据库对应的服务器(可以为物理机或虚拟机)的性能进行升级配置或对各个子数据库进行手动调整,以使得服务器的性能与该子数据库的性能相匹配;或者,也可以修改预先设置的分库个数(例如,增大分库个数),使分库***根据修改后的分库个数对各个数据库表重新进行分库,即将之前得到的分库结果确定为无效,并再次根据各个数据库表之间的关联关系的程度值以及修改后的分库个数再次进行分库。
举个例子,例如按照预先设置的分库个数3,将源数据库划分为3个子数据库:子数据库a1、子数据库a2、子数据库a3,其中,子数据库a1的分库性能阈值为A1,子数据库a2的分库性能阈值为A2,子数据库a3的分库性能阈值为A3。计算出所有子数据库(子数据库a1、子数据库a2、子数据库a3)的性能值,并将各个子数据库的性能值与对应的性能阈值进行比较,确定子数据库a1的性能值大于对应的性能阈值A1后,则发出提示信息,工作人员在接收到该提示信息后,可对子数据库a1对应的服务器(可以为物理机或虚拟机)的性能进行升级配置。
需要说明的是,本发明实施例中也可以是先计算子数据库a1的性能值,确定子数据库a1的性能值大于对应的性能阈值A1后,则可直接发出提示信息,而不再计算剩余的子数据库(子数据库a2和子数据库a3)的性能值,便于节省处理量和处理资源,工作人员接收到提示信息后,可将分库个数修改为4,再次进行分库。
上述发出提示信息的情形以及工作人员针对于提示信息所采用的解决方式,均可依据实际情况来设定,本发明实施例对此不做限定。
其中,提示信息的具体形式可以有多种,例如,警报声等,具体不做限定。
本发明实施例中,子数据库的性能值可包括子数据库的CPU消耗对应的性能值和/或子数据库的IO消耗对应的性能值。
所述子数据库的CPU消耗对应的性能值通过如下方式得到:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的总个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
举个例子,通过上述公式(1)和公式(2),确定第一子数据库CPU消耗对应的性能值为X,IO消耗对应的性能值为Y,此种情况下,第一子数据库的分库性能阈值包括CPU消耗对应的分库性能阈值和IO消耗对应的分库性能阈值,将第一子数据库CPU消耗对应的性能值和IO消耗对应的性能值分别与CPU消耗对应的分库性能阈值和IO消耗对应的分库性能阈值进行比较后,若确定CPU消耗对应的性能值大于CPU消耗对应的分库性能阈值和/或IO消耗对应的性能值大于IO消耗对应的分库性能阈值,则可发出提示信息,以提示工作人员对第一子数据库对应的服务器进行升级配置或者对各个子数据库进行手动调整,以使得第一子数据库的性能和服务器的性能相匹配。
由上述内容可知,由于计算子数据库的性能值所采用的DML语句的CPU消耗量以及DML语句的IO消耗量均为预先可获取到的数据信息,因此,本发明实施例中在根据各个数据库表之间的关联关系的程度值和预先设置的分库个数得到分库方案后,即可实现对各个子数据库的性能进行评估,有效解决了现有技术中进行手动分库后无法立即对分库效果进行评估的技术问题。且,通过对分库效果进行评估,能够保证子数据库的性能和服务器的性能相匹配,从而保证分库后的正常运行。
本发明实施例,在通过上述分库和分库效果评估后,可得到分库方案。例如,若经过分库效果评估,确定图4e中的3个子数据库的性能分别小于等于3个子数据库的分库性能阈值,则可确定图4e中的分库即为最终的分库方案。
(3)分库方式三:根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
本发明实施例中,预先设置的分库性能阈值可以是由本领域技术人员根据实际情况以及经验来设置的。
举个例子,仍假设源数据库中包括13个数据库表,在表4c的基础上,根据13个数据库表之间的关联关系的程度值和预先设置的分库性能阈值来进行划分,若预先设置的分库性能阈值为a,则在划分时,可实时采用公式(1)和/或公式(2)计算子数据库的性能值,从而保证划分后得到的各个子数据库的性能值均小于等于a。
图4f为采用分库方式三得到的分库结果示意图。如图4f所示,数据库表1、数据库表2、数据库表7、数据库表4被划分到第一子数据库中,数据库表3、数据库表5、数据库表12、数据库表6、数据库表13被划分到第二子数据库中,数据库表8、数据库表9、数据库表10、数据库表11被划分到第三子数据库中。
采用此种分库方式,由于在分库过程中,已使得各个子数据库的性能值均小于等于预先设置的分库性能阈值,因此,无需再对划分后得到的各个子数据库的性能进行评估。可直接将图4f中的分库结果作为最终的分库方案。
上述示例中,采用分库方式三和分库方式二所得到分库结果相同。在其它示例中,采用分库方式三和分库方式二所得到分库结果可能相同,也可能不相同。分库方式二的分库结果取决于预先设置的分库个数和数据库表之间的关联关系的程度值,分库方式三的分库结果取决于预先设置的分库性能阈值和数据库表之间的关联关系的程度值。
本发明实施例中,采用上述分库方式二或分库方式三得到分库方案后,还包括:针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句,对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
具体来说,源数据库的数据信息中还可以包括DML语句对应的业务,若不同子数据库中的数据库表之间的关联关系对应DML语句,则可根据数据信息,获取到DML语句对应的业务,进而根据DML语句对应的业务,对DML语句进行修改,以消除不同子数据库中的数据库表之间的关联关系。
以图4e中得到的分库方案为例,第一子数据库中的数据库表4和第二子数据库中的数据库表5之间存在关联关系,进一步地,根据数据信息获取到该关联关系对应的DML语句和DDL语句,以及所述DML语句对应的业务,从而对该关联关系对应的DDL语句进行修改,并根据DML语句对应的业务,对该关联关系对应的DML语句进行修改,以使得第一子数据库中的数据库表4和第二子数据库中的数据库表5不存在关联关系,即消除不同子数据库中的数据库表之间的关联关系。
由此可知,本发明实施例中获取到不同子数据库中的数据库表之间的关联关系后,可根据数据信息,直接得到需要修改的DML语句和/或DDL语句,而现有技术中采用手动分库时,则需要导出所有的DML语句和DDL语句,并逐一分析各个DML语句和DDL语句是否受影响,是否需要修改,因此,本发明实施例中的方案不仅大大减小了分析的工作量,而且避免了手动分析容易出错的问题。
经过上述过程,通过修改DML语句和/或DDL语句,消除了不同子数据库中的数据库表之间的关联关系后,可根据分库方案进行数据迁移,将数据库表分别迁移到对应的子数据库中,从而完成对源数据库的分库。
本发明的上述实施例中,获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的DML语句以及所述DML语句的性能指标数据;根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
本发明实施例中通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了对源数据库进行自动化分库。由于源数据库中各个数据库表之间的关联关系是根据DDL语句和各个数据库表关联的DML语句得到的,从而使得各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
针对上述方法流程,本发明实施例还提供一种数据库的分库装置,该装置的具体内容可以参照上述方法实施。
图5为本申请提供的一种数据库的分库装置的结构示意图。如图5所示,该数据库的分库装置500包括获取模块501、处理模块502、分库模块503;
获取模块501,用于获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
处理模块502,用于根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;
分库模块503,用于根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
可选地,所述分库模块503具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
可选地,所述处理模块502在所述分库模块503得到M个子数据库之后,还用于:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
可选地,所述分库模块503具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
可选地,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述处理模块502还用于,通过如下方式得到所述子数据库的CPU消耗对应的性能值:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
可选地,所述处理模块502具体用于:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
可选地,所述分库模块503根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还用于:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
可选地,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
本发明的上述实施例中,数据库的分库装置通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了较为准确地对源数据库进行分库。
由于源数据库中各个数据库表之间的关联关系是数据库的分库装置根据DDL语句和各个数据库表关联的DML语句得到的,从而使得数据库的分库装置进行分库时所依据的各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
基于相同构思,图6为本申请提供的另一种数据库的分库装置的结构示意图。如图6所示,该数据库的分库装置600包括通信接口601、处理器602、存储器603和总线***604;
其中,存储器603,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器603可能为随机存取存储器(random access memory,简称RAM),也可能为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。图中仅示出了一个存储器,当然,存储器也可以根据需要,设置为多个。存储器603也可以是处理器602中的存储器。
存储器603存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作***:包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
处理器602控制数据库的分库装置600的操作,处理器602还可以称为CPU(CentralProcessing Unit,中央处理单元)。具体的应用中,数据库的分库装置600的各个组件通过总线***604耦合在一起,其中总线***604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***604。为便于表示,图6中仅是示意性画出。
上述本申请实施例揭示的方法可以应用于处理器602中,或者由处理器602实现。处理器602可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器602可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器603,处理器602读取存储器603中的信息,结合其硬件执行以下步骤:
通过所述通信接口601获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
可选地,所述处理器602具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
可选地,所述处理器602得到M个子数据库后,还用于:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
可选地,所述处理器602具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
可选地,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述处理器602还用于,通过如下方式得到所述子数据库的CPU消耗对应的性能值:
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
可选地,所述处理器602具体用于:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
可选地,所述处理器602根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还用于:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
可选地,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
从上述内容可以看出:
本发明的上述实施例中,获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的DML语句以及所述DML语句的性能指标数据;根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
本发明实施例中通过获取源数据库的数据信息,并根据数据信息得到各个数据库表之间的关联关系以及关联关系的程度值,从而实现了对源数据库进行自动化分库。由于源数据库中各个数据库表之间的关联关系是根据DDL语句和各个数据库表关联的DML语句得到的,从而使得各个数据库表之间的关联关系较为完整;进一步地,通过DML语句的性能指标数据来确定各个数据库表之间的关联关系的程度值,很好地解决了各个数据库表之间的关联关系的紧密程度难以确定的问题,且基于各个数据库表之间的关联关系的程度值对各个数据库表进行分库能够使得分库方案更加准确,避免了现有技术中DBA手动分库而导致的分库方案不准确的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种数据库的分库方法,其特征在于,所述方法包括:
获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;
根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;
根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
2.如权利要求1所述的方法,其特征在于,所述根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库,包括:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
3.如权利要求2所述的方法,其特征在于,所述得到M个子数据库之后,还包括:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
4.如权利要求1所述的方法,其特征在于,所述根据所述各个数据库表之间的关联关系的程度值,对所述源数据库进行分库,包括:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
5.如权利要求3或4所述的方法,其特征在于,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述子数据库的CPU消耗对应的性能值通过如下方式得到:
<mrow> <msub> <mi>P</mi> <mi>C</mi> </msub> <mo>=</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <msub> <mi>X</mi> <mrow> <mi>i</mi> <mi>C</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mrow>
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
<mrow> <msub> <mi>P</mi> <mi>O</mi> </msub> <mo>=</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <msub> <mi>X</mi> <mrow> <mi>i</mi> <mi>O</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mrow>
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
6.如权利要求1所述的方法,其特征在于,所述根据所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值,包括:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
7.如权利要求1所述的方法,其特征在于,所述根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还包括:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
8.如权利要求1-7中任一项所述的方法,其特征在于,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
9.一种数据库的分库装置,其特征在于,所述装置包括:通信接口、处理器;
所述通信接口,用于获取源数据库的数据信息;所述数据信息包括所述源数据库中各个数据库表的数据定义语言DDL语句、所述各个数据库表关联的数据操控语言DML语句以及所述DML语句的性能指标数据;
所述处理器,用于根据所述各个数据库表的DDL语句和所述各个数据库表关联的DML语句,确定所述各个数据库表之间的关联关系;根据所述各个数据库表之间的关联关系和所述DML语句的性能指标数据,确定所述各个数据库表之间的关联关系的程度值;根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库。
10.如权利要求9所述的装置,其特征在于,所述处理器具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库个数,采用谱聚类算法对所述各个数据库表进行分库,得到M个子数据库,M等于所述预先设置的分库个数。
11.如权利要求10所述的装置,其特征在于,所述处理器得到M个子数据库后,还用于:
获取所述M个子数据库中每一子数据库的性能值以及所述每一子数据库的分库性能阈值;
确定所述子数据库的性能值大于所述子数据库的分库性能阈值,则发出提示信息,所述提示信息用于提示工作人员所述子数据库的性能值大于所述子数据库的分库性能阈值。
12.如权利要求9所述的装置,其特征在于,所述处理器具体用于:
根据所述各个数据库表之间的关联关系的程度值以及预先设置的分库性能阈值,采用谱聚类算法对所述各个数据库表进行分库,得到N个子数据库;所述N个子数据库的每一子数据库的性能值小于等于所述预先设置的分库性能阈值。
13.如权利要求11或12所述的装置,其特征在于,所述子数据库的性能值包括所述子数据库的中央处理器CPU消耗对应的性能值和/或所述子数据库的输入/输出IO消耗对应的性能值;
所述处理器还用于,通过如下方式得到所述子数据库的CPU消耗对应的性能值:
<mrow> <msub> <mi>P</mi> <mi>C</mi> </msub> <mo>=</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <msub> <mi>X</mi> <mrow> <mi>i</mi> <mi>C</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mrow>
其中,PC为所述子数据库的CPU消耗对应的性能值,XiC为所述子数据库中的数据库表关联的第i个DML语句的CPU消耗量,Yi为所述第i个DML语句的TPS,n为所述子数据库中的数据库表关联的DML语句的个数;
所述子数据库的IO消耗对应的性能值通过如下方式得到:
<mrow> <msub> <mi>P</mi> <mi>O</mi> </msub> <mo>=</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mi>n</mi> </mrow> </munderover> <msub> <mi>X</mi> <mrow> <mi>i</mi> <mi>O</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mrow>
其中,PO为所述子数据库的IO消耗对应的性能值,XiO为所述子数据库中的数据库表关联的第i个DML语句的IO消耗量,Yi为所述第i个DML语句的TPS。
14.如权利要求9所述的装置,其特征在于,所述处理器具体用于:
针对于所述各个数据库表之间的每一关联关系,确定与所述每一关联关系对应的DML语句;
根据与所述每一关联关系对应的DML语句的性能指标数据,确定所述每一关联关系的程度值。
15.如权利要求9所述的装置,其特征在于,所述处理器根据所述各个数据库表之间的关联关系的程度值,对所述各个数据库表进行分库之后,还用于:
针对于分库得到的多个子数据库,获取不同子数据库中的数据库表之间的关联关系;
根据所述不同子数据库中的数据库表之间的关联关系,确定所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句;
对所述不同子数据库中的数据库表之间的关联关系对应的DML语句和/或DDL语句进行修改,以消除所述不同子数据库中的数据库表之间的关联关系。
16.如权利要求9-15中任一项所述的装置,其特征在于,所述DML语句的性能指标数据包括所述DML语句的***吞吐量TPS、所述DML语句的CPU消耗量以及所述DML语句的IO消耗量中的任一项或任意组合。
CN201610831608.8A 2016-09-19 2016-09-19 一种数据库的分库方法及装置 Active CN107844490B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610831608.8A CN107844490B (zh) 2016-09-19 2016-09-19 一种数据库的分库方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610831608.8A CN107844490B (zh) 2016-09-19 2016-09-19 一种数据库的分库方法及装置

Publications (2)

Publication Number Publication Date
CN107844490A true CN107844490A (zh) 2018-03-27
CN107844490B CN107844490B (zh) 2020-12-08

Family

ID=61656634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610831608.8A Active CN107844490B (zh) 2016-09-19 2016-09-19 一种数据库的分库方法及装置

Country Status (1)

Country Link
CN (1) CN107844490B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110210307A (zh) * 2019-04-30 2019-09-06 ***股份有限公司 人脸样本库部署方法、基于人脸识别业务处理方法及装置
CN110795419A (zh) * 2019-10-08 2020-02-14 中国建设银行股份有限公司 动态分库路由的方法和装置
CN111930741A (zh) * 2020-07-15 2020-11-13 中国银行股份有限公司 数据库分库方法、装置及交易请求数据读写***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317134A1 (en) * 2011-06-09 2012-12-13 International Business Machines Incorporation Database table comparison
CN103782574A (zh) * 2011-09-09 2014-05-07 甲骨文国际公司 用于数据库事务的幂等性
CN105260403A (zh) * 2015-09-22 2016-01-20 广东同望科技股份有限公司 通用跨数据库访问方法
JP2016057722A (ja) * 2014-09-08 2016-04-21 株式会社日立製作所 Dml検索装置
CN105912678A (zh) * 2016-04-13 2016-08-31 北京思特奇信息技术股份有限公司 一种数据存储方法、数据读取方法及其对应的***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317134A1 (en) * 2011-06-09 2012-12-13 International Business Machines Incorporation Database table comparison
CN103782574A (zh) * 2011-09-09 2014-05-07 甲骨文国际公司 用于数据库事务的幂等性
JP2016057722A (ja) * 2014-09-08 2016-04-21 株式会社日立製作所 Dml検索装置
CN105260403A (zh) * 2015-09-22 2016-01-20 广东同望科技股份有限公司 通用跨数据库访问方法
CN105912678A (zh) * 2016-04-13 2016-08-31 北京思特奇信息技术股份有限公司 一种数据存储方法、数据读取方法及其对应的***

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110210307A (zh) * 2019-04-30 2019-09-06 ***股份有限公司 人脸样本库部署方法、基于人脸识别业务处理方法及装置
CN110210307B (zh) * 2019-04-30 2023-11-28 ***股份有限公司 人脸样本库部署方法、基于人脸识别业务处理方法及装置
US11893829B2 (en) 2019-04-30 2024-02-06 China Union Pay Co., Ltd. Method for deploying a face sample library and method and apparatus for business processing based on face recognition
CN110795419A (zh) * 2019-10-08 2020-02-14 中国建设银行股份有限公司 动态分库路由的方法和装置
CN111930741A (zh) * 2020-07-15 2020-11-13 中国银行股份有限公司 数据库分库方法、装置及交易请求数据读写***

Also Published As

Publication number Publication date
CN107844490B (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
CN111813963B (zh) 知识图谱构建方法、装置、电子设备及存储介质
US20210374610A1 (en) Efficient duplicate detection for machine learning data sets
CN107908672B (zh) 基于Hadoop平台的应用报表实现方法、设备及存储介质
US10452992B2 (en) Interactive interfaces for machine learning model evaluations
CN112800095B (zh) 一种数据处理方法、装置、设备及存储介质
CN112052138A (zh) 业务数据质量检测方法、装置、计算机设备及存储介质
WO2022179123A1 (zh) 数据更新及展示方法、装置、电子设备及存储介质
US11775529B2 (en) Recursive functionality in relational database systems
CN112162980A (zh) 数据质量管控方法及***、存储介质、电子设备
CN107844490A (zh) 一种数据库的分库方法及装置
CN114610747A (zh) 数据查询方法、装置、设备及存储介质
CN114612194A (zh) 产品推荐方法、装置、电子设备及存储介质
CN107016115A (zh) 数据导出方法、装置、计算机可读存储介质及电子设备
CN111813739A (zh) 数据迁移方法、装置、计算机设备及存储介质
CN113886419A (zh) Sql语句处理方法、装置、计算机设备及存储介质
CN113806492A (zh) 基于语义识别的记录生成方法、装置、设备及存储介质
CN112597171A (zh) 表格关系可视化方法、装置、电子设备及存储介质
CN109284268A (zh) 一种快速解析日志的方法、***及电子设备
CN110287241A (zh) 一种生成告警数据报表的方法及装置
CN114926082B (zh) 基于人工智能的数据波动预警方法及相关设备
CN110837970A (zh) 一种区域卫生平台质控方法和***
CN116304251A (zh) 标签处理方法、装置、计算机设备和存储介质
CN114780688A (zh) 基于规则匹配的文本质检方法、装置、设备及存储介质
CN114328486A (zh) 基于模型的数据质量核查方法及装置
CN111522812B (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