数据管理方法和系统技术方案

技术编号:23238996 阅读:17 留言:0更新日期:2020-02-04 18:24
本申请涉及一种数据管理方法和系统,所述方法包括:在接收到SQL请求时,确定所述SQL请求的类型;如果是正常SQL请求,从业务数据源获取业务库连接;如果是压测SQL请求,从影子数据源获取影子库连接;根据获取的业务库连接或影子库连接,下发SQL到对应的业务库或影子库。本申请的方案将业务数据保存于业务数据库,影子数据保存于影子数据库,从而有效地隔离这两种数据,使压测数据不会污染业务数据,并且压测数据非常容易删除;正常SQL请求下发到业务数据库,压测SQL请求下发到影子数据库,因而业务数据连接和影子数据连接之间不再需要切换,极大地提升了性能。

Data management methods and systems

【技术实现步骤摘要】
数据管理方法和系统
本申请涉及全链路压测场景下的数据隔离
,具体涉及一种数据管理方法和系统。
技术介绍
数据的保存和管理主要涉及三个概念:1、数据源,存储了所有建立数据库连接的信息,包括数据源名称、数据库类型、字符集、数据库驱动、数据源url和数据库账号等等。数据源中并无真正的数据,而是提供数据库连接。通过数据库连接,用户可以操作相应的数据库。在Java基本类库中,数据源被定义为DataSource接口。2、数据库连接,数据库连接的过程相当于建立一个网络通道的物理过程,每次数据库操作使用一个数据库连接,使用完都关闭或者释放连接。在Java基本类库中,数据库连接被定义为Connection接口。3、数据库,即database或者schema,包含了表(table)、列(column)、数据类型(datatype)、视图(view)、存储过程(storedprocedures)、关系(relationships)、主键(primarykey)、外键(foreignkey)等等。一般情况下,数据库的管理如图1所示:每个DataSource管理多个Connection,每个Connection唯一管理一个schema。在此基础上,如果使用单数据源同时管理业务数据库和影子数据库时,需要切换不同的数据连接。如图2所示,若业务发送的是压测SQL请求,单数据源SingleDataSource通过影子库Connection操作影子数据库schema_sd;若业务发送的是正常业务SQL请求,单数据源SingleDataSource通过业务库Connection操作业务数据库schema。可以看到,当SQL请求携带压测标识变化时,数据源需要在业务库Connection和影子库Connection之间切换并重新建立连接。建立数据库连接的过程非常消耗时间,这个过程的性能损耗超过了业务对中间件组件的使用要求。一般而言,参与全链路压测的业务系统,除了使用生产需要的业务数据,还使用压测需要的影子数据。业务系统要求全链路压测时,压测数据要尽可能的模拟生产环境的真实数据,但是又不能影响真实数据。业务现有压测场景不能覆盖全链路,主要因为当前线上压测缺少数据隔离能力。相关技术中,压测场景下的业务数据和压测数据使用同一个数据库,这种情况下压测数据极其容易污染业务数据,并且压测完成后清除压测数据也十分麻烦,只能人工地谨慎区分并删除压测数据,工作量大而且容易出错,并且这种错误对于业务系统来说又是不允许出现的。
技术实现思路
为至少在一定程度上克服相关技术中存在的问题,本申请提供一种数据管理方法和系统。根据本申请实施例的第一方面,提供一种数据管理方法,包括:在接收到SQL请求时,确定所述SQL请求的类型;如果是正常SQL请求,从业务数据源获取业务库连接;如果是压测SQL请求,从影子数据源获取影子库连接;根据获取的业务库连接或影子库连接,下发SQL到对应的业务库或影子库。进一步地,在确定所述SQL请求的类型之前,还包括:根据所述SQL请求的主键确定对应的数据分库;其中,所述数据分库的数量为多个;一个数据分库包括一个业务库和一个影子库。进一步地,所述确定所述SQL请求的类型,包括:根据所述SQL请求携带的压测标识确定是正常SQL请求还是压测SQL请求。进一步地,所述方法还包括:尝试获取影子数据源;如果获取失败,在接收到压测请求时报错。根据本申请实施例的第二方面,提供一种数据管理系统,包括:数据库中间件,设置有逻辑数据源;业务服务器,设置有业务数据源和影子数据源;其中,一个逻辑数据源对应一个业务数据源和一个影子数据源;DB服务器,设置有业务库和影子库;其中,每个业务库对应一个业务数据源,每个影子库对应一个影子数据源;所述逻辑数据源用于在接收到SQL请求时,确定所述SQL请求的类型;如果是正常SQL请求,所述逻辑数据源从所述业务数据源获取业务库连接,并通过所述业务数据源下发SQL到对应的业务库;如果是压测SQL请求,所述逻辑数据源从所述影子数据源获取影子库连接,并通过所述影子数据源下发SQL到对应的影子库。进一步地,所述DB服务器包括多个数据分库,每个所述数据分库中设置有一个业务库和一个影子库;相应地,所述业务服务器设置有多组业务数据源和影子数据源,分别对应所述DB服务器中的多个数据分库;所述数据库中间件设置有多个逻辑数据源,分别对应所述DB服务器中的多个数据分库;所述数据库中间件还设置有:确定模块,用于根据所述SQL请求的主键确定对应的数据分库。进一步地,所述确定模块还用于:根据确定的数据分库,将所述SQL请求分配到该数据分库所对应的逻辑数据源。进一步地,所述逻辑数据源用于确定所述SQL请求的类型,具体包括:根据所述SQL请求携带的压测标识确定是正常SQL请求还是压测SQL请求。进一步地,所述数据库中间件还用于:在接收到复制指令时,在所述DB服务器中生成影子库,并将业务库中的数据复制到影子库中。进一步地,所述数据库中间件还用于:尝试获取影子数据源;如果获取失败,记录错误日志,并正常启动,在接收到压测请求时报错;如果获取成功,则生成INFO日志提示。本申请的实施例提供的技术方案具备以下有益效果:本申请的方案将业务数据保存于业务数据库,影子数据保存于影子数据库,从而有效地隔离这两种数据,使压测数据不会污染业务数据,并且压测数据非常容易删除;正常SQL请求下发到业务数据库,压测SQL请求下发到影子数据库,因而业务数据连接和影子数据连接之间不再需要切换,极大地提升了性能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。图1是开源的JAVA基本类库管理多个数据库的流程图。图2是现有的改写JAVA基本类库后,通过单数据源方式管理业务数据库和影子数据库的流程图。图3是根据一示例性实施例示出的一种数据管理方法的流程图。图4是本申请改写JAVA基本类库后,通过双数据源方式管理业务数据库和影子数据库的流程图。图5是本申请改写JAVA基本类库后,通过两个数据源方式管理两对业务数据库和影子数据库的流程图。图6是基于图4所示流程的数据库结构示意图。图7是基于图5所示流程的数据库结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书本文档来自技高网
...

【技术保护点】
1.一种数据管理方法,其特征在于,包括:/n在接收到SQL请求时,确定所述SQL请求的类型;/n如果是正常SQL请求,从业务数据源获取业务库连接;如果是压测SQL请求,从影子数据源获取影子库连接;/n根据获取的业务库连接或影子库连接,下发SQL到对应的业务库或影子库。/n

【技术特征摘要】
1.一种数据管理方法,其特征在于,包括:
在接收到SQL请求时,确定所述SQL请求的类型;
如果是正常SQL请求,从业务数据源获取业务库连接;如果是压测SQL请求,从影子数据源获取影子库连接;
根据获取的业务库连接或影子库连接,下发SQL到对应的业务库或影子库。


2.根据权利要求1所述的方法,其特征在于,在确定所述SQL请求的类型之前,还包括:
根据所述SQL请求的主键确定对应的数据分库;
其中,所述数据分库的数量为多个;一个数据分库包括一个业务库和一个影子库。


3.根据权利要求1所述的方法,其特征在于,所述确定所述SQL请求的类型,包括:
根据所述SQL请求携带的压测标识确定是正常SQL请求还是压测SQL请求。


4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
尝试获取影子数据源;
如果获取失败,在接收到压测请求时报错。


5.一种数据管理系统,其特征在于,包括:
数据库中间件,设置有逻辑数据源;
业务服务器,设置有业务数据源和影子数据源;其中,一个逻辑数据源对应一个业务数据源和一个影子数据源;
DB服务器,设置有业务库和影子库;其中,每个业务库对应一个业务数据源,每个影子库对应一个影子数据源;
所述逻辑数据源用于在接收到SQL请求时,确定所述SQL请求的类型;
如果是正常SQL请求,所述逻辑数据源从所述业务数据源获取业务库连接,并通过所述业务数据源下发SQL到对应的业务...

【专利技术属性】
技术研发人员:陈幸陆中骞洪建辉鲁祥宝
申请(专利权)人:苏宁云计算有限公司
类型:发明
国别省市:江苏;32

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

1