CN111522881B - 业务数据处理方法、装置、服务器及存储介质 - Google Patents
业务数据处理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111522881B CN111522881B CN202010338963.8A CN202010338963A CN111522881B CN 111522881 B CN111522881 B CN 111522881B CN 202010338963 A CN202010338963 A CN 202010338963A CN 111522881 B CN111522881 B CN 111522881B
- Authority
- CN
- China
- Prior art keywords
- data
- service
- target
- dimension
- isolation dimension
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种业务数据处理方法、装置、服务器及存储介质。属于互联网技术领域,该方法包括:接收业务数据处理请求,业务数据处理请求中至少包括待处理业务数据对应的目标业务主键;确定目标业务主键对应的目标数据隔离维度;确定目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段;通过目标数据源响应业务数据处理请求。相比于相关技术,本申请中由于不同的数据源即对应不同的数据隔离维度,无需在数据源包含的数据表中存储数据隔离维度对应的字段,也可以将业务数据处理请求准确定位到对应的数据隔离维度(或目标数据源)中,可以减少对存储空间的浪费。
Description
技术领域
本申请实施例涉及互联网技术领域,特别涉及一种业务数据处理方法、装置、服务器及存储介质。
背景技术
在电商业务平台或其他业务平台中,通常需要面对海量的存储数据,比如,商品数据、订单数据等,同时针对不同类型的数据,需要进行一定的数据隔离,比如,商品数据,可能需要对商品数据按照品类进行隔离存储。
现有技术中,对商品对应的商品数据进行存储时,需要将业务主键(比如,订单编号)和隔离维度值均冗余在每张数据表中,方便准确定位至对应的数据表。
发明内容
本申请实施例提供了一种业务数据处理方法、装置、服务器及存储介质。
所述技术方案如下:
一方面,本申请实施例提供一种业务数据处理方法,所述方法包括:
接收业务数据处理请求,所述业务数据处理请求中至少包括待处理业务数据对应的目标业务主键;
确定所述目标业务主键对应的目标数据隔离维度,其中,数据隔离维度是隔离不同业务数据时所基于的维度;
确定所述目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段;
通过所述目标数据源响应所述业务数据处理请求。
另一方面,本申请实施例提供一种业务数据处理装置,所述装置包括:
第一接收模块,用于接收业务数据处理请求,所述业务数据处理请求中至少包括待处理业务数据对应的目标业务主键;
第一确定模块,用于确定所述目标业务主键对应的目标数据隔离维度,其中,数据隔离维度是隔离不同业务数据时所基于的维度;
第二确定模块,用于确定所述目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段;
响应模块,用于通过所述目标数据源响应所述业务数据处理请求。
再一方面,本申请实施例提供一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述发票填写方法。
又一方面,本申请实施例提供一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述发票填写方法。
本申请实施例提供的技术方案可以带来如下有益效果:
当服务器接收到业务数据处理请求时,从该业务数据处理请求中确定出目标业务主键,并根据该目标业务主键确定出该业务数据对应的目标数据隔离维度,由于预先对业务数据进行隔离时,即对不同的数据隔离维度创建有不同的数据源,因此,可以根据目标数据隔离维度确定出对应的目标数据源,并通过目标数据源响应当前业务数据处理请求。相比于相关技术中,不同的数据隔离维度均对应同一数据源,导致在存储业务数据时,需要将业务主键和对应的数据隔离维度均冗余存储在每个数据表中,方便后续进行数据表的定位,而本申请中由于不同的数据源即对应不同的数据隔离维度,因此,无需在数据源包含的数据表中存储数据隔离维度对应的字段,也可以将业务数据处理请求准确定位到对应的数据隔离维度(或目标数据源)中,可以减少对存储空间的浪费,从而有利于对业务数据的优化存储。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了相关技术中数据隔离方案的示意图;
图2示出了本申请一个示例性实施例示出的数据隔离方案的示意图;
图3示出了本申请一个实施例提供的业务数据处理方法的流程图;
图4示出了本申请另一个实施例提供的业务数据处理方法的流程图;
图5示出了本申请一个示例性实施例示出的业务创建过程的流程图;
图6示出了本申请一个示例性实施例示出的动态数据源切换的流程图;
图7示出了本申请一个示例性实施示出的动态数据源切换模块的类图;
图8示出了本申请一个示例性实施例示出的新增隔离维度的过程的流程图;
图9示出了本申请一个示例性实施例示出业务数据处理系统的架构图;
图10示出了本申请一个实施例提供的业务数据处理装置的结构框图;
图11示出了本申请一个实施例提供的服务器的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
由于在一些业务平台中,比如,电商平台中,均需要面对大量的存储数据(比如,商品数据、订单数据等),且对于不同的应用场景的需求,需要对数据进行隔离存储,比如,对于商品数据,可以按照商品的品类对所有的商品数据进行隔离存储,对于订单数据,可能需要按照订单的所属地域进行隔离存储。
在相关技术中,为了减少开发成本,一般设置单一数据源,即将不同类别的商品数据存储在同一数据源中,请参考图1,其示出了相关技术中数据隔离方案的示意图。在数据源101中,分别存储有A类商品数据102、B类商品数据103和C类商品数据104,其中,数据隔离维度可以为A类、B类以及C类。在将商品数据进行隔离存储(即将同一数据隔离维度对应的商品数据存储在同一张数据表中,或多张数据表存储同一数据隔离维度对应的商品数据)时,由于不同类的商品数据均对应相同的数据源,因此,为了便于对数据表中的商品数据进行调用,即方便准确的定位到某个商品数据对应的数据表,需要在每张数据表中均对应存储数据隔离维度对应的字段,造成数据表存储空间的浪费。
而不同于相关技术中的数据隔离方案,本申请实施例提供了一种新的数据隔离方案,请参考图2,其示出了本申请一个示例性实施例示出的数据隔离方案的示意图。业务人员预先针对需要存储的商品数据确定出多个隔离维度,比如,将商品数据按照A类商品数据、B类商品数据和C类商品数据进行隔离,并针对每一个数据隔离维度创建对应的数据源,即A类商品数据对应数据源201,B类商品数据对应数据源202,其次,不同的数据源再根据业务的实际情况进行分库分表,比如,A类商品数据可以分为A1类商品数据、A2类商品数据和A3类商品数据等。由于本申请提供的数据隔离方案可以针对不同的数据隔离维度创建不同的数据源,因此,无需将数据隔离维度对应的字段冗余存储在不同的数据表中,单一数据源对应的即单一类的商品数据,相比于相关技术中的数据隔离方案,本申请实施例提供的数据隔离方案可以减少对存储空间的浪费,且更利于数据的优化存储。
请参考图3,其示出了本申请一个实施例提供的业务数据处理方法的流程图,本申请实施例以该方法应用于服务器为例进行说明,该方法包括:
步骤301,接收业务数据处理请求,业务数据处理请求中至少包括待处理业务数据对应的目标业务主键。
其中,对于业务数据处理请求,可以是查找某个业务对象对应的数据信息,比如,业务对象为某个商品,即查找该商品对应的详细信息(如,材质、大小、功效等);或指修改某个业务对象对应的数据信息,比如,对该商品原有的详细信息进行增加、删除或修改等。
在一种可能的实施方式中,服务器提供有方便其他服务器进行远程调用业务数据的应用程序接口(Application Programming Interface,API),当其他服务器通过API调用业务对象对应的数据时,则服务器接收到该业务数据处理请求,该业务数据处理请求可以指调用某个业务对象对应的数据信息。
其中,业务数据处理请求中至少包含有待处理业务数据对应的目标业务主键,即若上游服务器需要调用某业务对象对应的数据信息,则至少需要将该业务对象对应的业务主键发送给下游服务器(即API所在的服务器),方便下游服务器根据该业务主键来进行相应的调用操作。
业务主键指在数据库表中把具有逻辑含义的字段作为主键,且一般不同业务对象对应有不同业务主键,比如,商品的唯一编码(Identity document,ID)、订单ID、或是身份证号等。
步骤302,确定目标业务主键对应的目标数据隔离维度。
其中,数据隔离维度是隔离不同业务数据时所基于的维度。比如,对于商品数据,可以按照商品的种类设置数据隔离维度,也可以按照商品的应用场景设置数据隔离维度,或按照商品的产地设置数据隔离维度。则种类、应用场景、或产地等都可以作为商品数据对应的数据隔离维度。
由于本申请实施例的业务数据处理方法是基于新的数据隔离方案进行的,且由数据隔离方案可知,不同的数据源对应不同的数据隔离维度,因此,当服务器在存储商品数据或调用商品数据时,需要预先知晓该商品数据对应的数据隔离维度,以便在实际操作中准确的定位到该数据库(或将商品数据正确地存储在目标数据库中)。
针对确定目标业务主键对应的目标数据隔离维度的方法,在一种可能的实施方式中,当上游服务器在调用目标商品数据时,一般会提供有目标商品数据对应的业务主键和目标数据隔离维度,即业务数据处理请求中可能包含有对应的目标数据隔离维度,相应的,下游服务器即可以从业务处理请求中获取到对应的目标数据隔离维度。
可选的,在一种可能的实施方式中,由于商品数据在存储时,一般会预先将其对应的数据隔离维度和业务主键关联存储,当接收到对目标商品数据的调用请求时,即可以根据上游服务器提供的目标业务主键查找到对应的目标数据隔离维度。
步骤303,确定目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段。
在一种可能的实施方式中,由本申请实施例示出的数据隔离方案可知,不同的数据隔离维度即对应不同的数据源,因此,在确定出业务处理请求对应的目标数据隔离度之后,即可以根据该目标数据隔离维度确定出对应的目标数据源。
步骤304,通过目标数据源响应业务数据处理请求。
在一种可能的实施方式中,当确定出对应的目标数据源之后,服务器即可以将该业务数据处理请求定位到该目标数据源,即做出对该业务数据处理请求的响应。
综上所述,本申请实施例提供的技术方案中,当服务器接收到业务数据处理请求时,从该业务数据处理请求中确定出目标业务主键,并根据该目标业务主键确定出该业务数据对应的目标数据隔离维度,由于预先对业务数据进行隔离时,即对不同的数据隔离维度创建有不同的数据源,因此,可以根据目标数据隔离维度确定出对应的目标数据源,并通过目标数据源响应当前业务数据处理请求。相比于相关技术中,不同的数据隔离维度均对应同一数据源,导致在存储业务数据时,需要将业务主键和对应的数据隔离维度均冗余存储在每个数据表中,方便后续进行数据表的定位,而本申请中由于不同的数据源即对应不同的数据隔离维度,因此,无需在数据源包含的数据表中存储数据隔离维度对应的字段,也可以将业务数据处理请求准确定位到对应的数据隔离维度(或目标数据源)中,可以减少对存储空间的浪费,从而有利于对业务数据的优化存储。
在一种可能的实施方式中,当上游服务器发送的数据处理请求中包含有业务主键和数据隔离维度,为了保护服务平台中相关业务数据的安全,还需要对数据处理请求中的数据隔离维度进行合法性校验,只有合法性校验通过后,才允许该业务处理请求进行后续的定位数据源的操作,反之,可能返回错误的校验信息。
请参考图4,其示出了本申请另一个实施例提供的业务数据处理方法的流程图。该方法包括:
步骤401,接收业务数据处理请求,业务数据处理请求中至少包括待处理业务数据对应的目标业务主键。
本步骤的实施方式可以参考步骤301,本实施例在此不做赘述。
步骤402,响应于业务数据处理请求中不包含候选数据隔离维度,获取全局表。
其中,全局表中存储有业务主键与数据隔离维度之间的对应关系。在一种可能的实施方式中,当某个业务数据进行存储时(或某个业务对象进行创建时),首先将其对应的业务主键和数据隔离维度存储在全局表中,一般情况下不会进行修改。
示意性的,全局表的存储形式可以如表一所示,其中,可以针对不同的业务数据类型设置不同的全局表,比如,业务数据可以包括商品数据和订单数据,则可以针对商品数据设置全局表A,针对业务数据设置全局表B。
表一
业务主键 | 数据隔离维度 |
业务主键A | <![CDATA[V<sub>1</sub>]]> |
业务主键B | <![CDATA[V<sub>2</sub>]]> |
业务主键C | <![CDATA[V<sub>3</sub>]]> |
业务主键D | <![CDATA[V<sub>2</sub>]]> |
业务主键E | <![CDATA[V<sub>3</sub>]]> |
业务主键F | <![CDATA[V<sub>1</sub>]]> |
可选的,不同的业务主键可能对应相同的数据隔离维度,比如,业务主键A和业务主键F均对应数据隔离维度V1,表示,业务主键A和业务主键F分别对应的业务数据均对应同一数据源。
在一种可能的实施方式中,当服务器从业务处理请求中未获取到数据隔离维度对应的字段,即确定该数据业务处理请求中不包含候选数据隔离维度,此时,为了业务数据处理请求的正常执行,可以获取预先存储在服务器中的全局表,由于全局表中存储有业务对象在进行创建时,即存储的业务主键与数据隔离维度的对应关系,相应的,可以从中查找到目标业务主键对应的目标数据隔离维度。
可选的,由于预先设置有全局表,因此,后续其他上游服务器在发送业务数据处理请求时,也就无需发送对应的数据隔离维度,只需提供业务主键即可。
在另一可能的实施方式中,采用预设全局表的形式为各种业务数据处理请求提供正确的数据隔离维度,也可以防止若上游服务器提供的数据隔离维度出错,导致对业务数据的错误修改,可以提高业务数据的安全性。
步骤403,从全局表中查找目标业务主键对应的数据隔离维度,并将查找到的数据隔离维度确定为目标数据隔离维度。
在一种可能的实施方式中,当服务器确定出业务数据处理请求中不包含数据隔离维度时,则根据获取到的目标业务主键从全局表中进行查找,得到该目标业务主键对应的目标数据隔离维度。
示意性的,若服务器确定出目标业务主键为业务主键F,则由表一可知,该业务主键F对应的数据隔离维度为V1。
步骤404,响应于业务数据处理请求中包含候选数据隔离维度,根据全局表对候选数据隔离维度进行合法性校验。
由于上游服务器传送的参数可能出错,即业务数据处理请求中包含的候选数据隔离维度有误,当该业务数据处理请求为存储商品数据时,则会导致将业务数据处理请求定位到错误的数据源,从而将商品数据存储在错误的数据表中,当后续上游服务器再度调用该商品数据时,会导致在该商品数据对应的数据源中无法查找到对应的商品数据。因此,为了防止上游服务器的传参有误导致商品数据被错误存储,在一种可能的实施方式中,当服务器确定出该业务处理请求中包含有候选数据隔离维度时,需要对该候选数据隔离维度进行合法性校验,即判断该业务主键是否与候选数据隔离维度对应。
针对候选数据隔离维度进行合法性校验的方式,在一种可能的实施方式中,可以根据全局表对候选数据隔离维度进行合法校验,该方法可以包括以下步骤:
一、从全局表中查找目标业务主键对应的数据隔离维度。
在一种可能的实施方式中,由于业务对象在创建时均会预先在全局表中存储该业务对象对应的业务主键和数据隔离维度,因此,当服务器获取到目标数据隔离维度后,即可以根据该目标业务主键,在全局表中查找该目标业务主键对应的数据隔离维度,用来与业务数据处理请求中获取到的候选数据隔离维度进行比较。
二、响应于候选数据隔离维度与查找到的数据隔离维度一致,确定候选数据隔离维度通过合法性校验。
在一种可能的实施方式中,若根据目标业务主键查找到的数据隔离维度与候选隔数据离维度一致,则表示该候选数据隔离维度通过合法性校验,即上游传参无误,可以进行后续操作。
步骤405,响应于候选数据隔离维度通过合法性校验,将候选数据隔离维度确定为目标数据隔离维度。
在一种可能的实施方式中,当确定出该候选数据隔离维度通过合法性校验,则可以将该候选数据隔离维度确定为目标数据隔离维度,用于后续的定位目标数据源操作。
步骤406,响应于候选数据隔离维度未通过合法性校验,反馈请求失败信息。
在一种可能的实施方式中,若该候选数据隔离维度与根据目标业务主键查找到的数据隔离维度不同,则表示上游传参出错,此时,为了防止错误传参对业务数据造成危害,需要返回请求失败消息,以便提醒上游服务器请求失败,或提醒相关业务人员出现错误请求。
步骤407,确定目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段。
步骤408,通过目标数据源响应业务数据处理请求。
上述步骤407和步骤408的实施方式可以参考步骤303和步骤304,本实施例在此不做赘述。
本实施例中,通过在业务对象创建时将业务对象对应的数据隔离维度和业务主键关联存储在全局表中,当服务器后续接收到对该业务对象的业务数据处理请求时,若业务数据处理请求中未包含数据隔离维度时,可以根据全局表获取到对应的目标数据隔离维度,避免上游传输参数(即数据隔离维度)缺少时无法定位到对应的数据源,或无需上游服务器提供对应的数据隔离维度;若业务处理请求中包含有候选数据隔离维度,则可以根据全局表对该候选数据隔离维度进行合法性校验,避免候选数据隔离维度出错时,导致业务数据可能被错误存储或修改,可以提高业务数据的存储安全性。
由于需要根据全局表对上游服务器传输的参数进行校验,因此,在一种可能的实施方式中,当存储新的业务数据时(或创建新的业务对象时),需要将业务对象对应的业务主键和数据隔离维度预先存储在全局表中。
请参考图5,其示出了本申请一个示例性实施例示出的业务创建过程的流程图,该方法包括:
步骤501,接收业务创建请求,业务创建请求中包含待创建业务对应的待创建业务主键和待创建业务数据隔离维度。
其中,业务创建请求即对应需要存储新的业务数据,此时,业务人员首先需要确定该业务数据对应的业务主键和数据隔离维度,并将其写入业务创建请求中。
可选的,该业务创建请求也可以由上游服务器发送。
步骤502,将待创建业务主键和待创建业务数据隔离维度写入全局表。
在一种可能的实施方式中,当服务器接收到业务创建请求时,即获取其中包含的待创建业务主键和待创建业务数据隔离维度,并将待创建业务主键和待创建业务数据隔离维度对应写入全局表中,以便后续服务器在接收到对该待创建业务的数据处理请求时,可以从该全局表中获取到对应的目标数据隔离维度。
本实施例中,通过在业务对象进行创建时,接收业务创建请求,可以将该业务对应的待创建业务主键和待创建业务数据隔离维度写入全局表中,以便后续服务器在接收到对该待创建业务的业务数据处理请求时,可以从该全局表中获取到对应的目标数据隔离维度,进行合法性校验或对目标数据隔离维度进行补偿。
针对通过目标数据隔离维度确定目标数据源的过程,在一种可能的实施方式中,可以采用开源(Spring)框架中的动态数据源切换工具(或实现方法)来进行。
请参考图6,其示出了本申请一个示例性实施例示出的动态数据源切换的流程图,该方法包括:
步骤601,通过数据源路由接口确定目标数据隔离维度对应的目标数据源,并将目标数据源存入线程工具,线程工具用于存储当前线程与数据源之间的对应关系。
其中,实现动态数据源切换的原理可以包括以下步骤:
(1)数据源路由(IDataSourceRouter)接口根据数据隔离维度,确定对应数据源。
其中,数据源路由接口中由业务人员根据数据隔离方案实现,使得数据源路由接口可以准确的根据当前提供的数据隔离维度确定出对应的数据源。
(2)采用Java切面技术定义注解@动态数据源(@DynamicDataSource),该注解标注于事务所在方法或者结构化查询语言(Structured Query Language,SQL)执行方法之上,其对应切面在方法执行之前会通过IDataSourceRouter获取当前请求下使用的数据源,并将其存入路由数据源实用程序(RoutingDataSourceUtils)的本地线程(ThreadLocal)中。
在一种可能的实施方式中,当程序运行至需要对数据执行动态数据源方法之前,首先会通过@DynamicDataSource唤起动态数据源切面(DynamicDataSourceAspect)工具,该工具通过数据源路由接口获取到目标数据隔离维度对应的目标数据源,并将目标数据源存储在RoutingDataSourceUtils中的ThreadLocal中。
请参考图7,其示出了本申请一个示例性实施示出的动态数据源切换模块的类图。当流量运行至@DynamicDataSource处,由@DynamicDataSource唤起DynamicDataSourceAspect,DynamicDataSourceAspect即调用IDataSourceRouter接口,获取目标数据隔离维度对应的目标数据源,并由DynamicDataSourceAspect将其设置在RoutingDataSourceUtils的ThreadLocal中。
步骤602,通过Spring框架从线程工具中获取当前线程对应的目标数据源,并将业务数据处理请求路由至目标数据源。
(3)继承Spring提供的抽象类抽象路由数据源(AbstractRoutingDataSource),并实现确定当前查找关键字(determineCurrentLookupKey)方法。其具体实现方式为通过一个工具类路由数据源实用程序(RoutingDataSourceUtils)获取当前线程对应的数据源。
在一种可能的实施方式中,通过Spring提供的工具类从线程工具中获取到之前存储的目标数据源,并将业务数据处理请求路由至目标数据源处。
请参考图7,其示出了本申请一个示例性实施示出的动态数据源切换模块的类图。由动态路由数据源(DynamicRoutingDataSourcer)从RoutingDataSourceUtils中查询到当前线程对应的目标数据源,并由AbstractRoutingDataSource将业务处理请求定位至该目标数据源处。
本申请实施例中,通过Spring的动态数据源切换方法实现将业务数据处理请求直接定位至目标数据隔离维度对应的目标数据源处,可以实现在多数据源情况下准确定位当前业务处理请求对应的目标数据源。
基于本申请实施例提供的新的数据隔离方案,即不同的数据隔离维度对应不用的数据源,因此,在一种可能的实施方式中,若需要新增数据隔离维度,只需要新增对应的数据源即可,无需改变原有的数据源。
请参考图8,其示出了本申请一个示例性实施例示出的新增隔离维度的过程的流程图,该方法包括:
步骤801,接收隔离维度新增请求,隔离维度新增请求中包含新增数据隔离维度。
在一种可能的实施方式中,当服务器接收到隔离维度新增请求时,即获取到隔离维度新增请求中包含的新增数据隔离维度。
步骤802,根据新增数据隔离维度创建对应的新增数据源。
在一种可能的实施方式中,当业务人员需要对商品数据新增数据隔离维度时,只需要提供新增数据隔离维度,服务器接收到新增数据隔离维度后,即创建该新增数据隔离维度对应的新增数据源。
本实施例中,当服务器接收到隔离维度新增请求时,只需对应创建新增数据隔离维度对应的新增数据源即可,不会影响原有的数据源。
请参考图9,其示出了本申请一个示例性实施例示出业务数据处理系统的架构图。
在一种可能的实施方式中,当上下文处理模块902接收到上游服务器901发送的业务数据处理请求之后,即根据业务数据处理请求中包含的目标业务主键获取到对应的目标数据隔离维度,其中,若业务数据处理请求中未包含对应的目标数据隔离维度,则根据目标业务主键从全局表903中查找对应的目标数据隔离维度;若业务数据处理请求中包含有对应的候选数据隔离维度,则根据全局表对候选数据隔离维度进行合法性校验,若合法性校验通过,则将候选数据隔离维度确定为目标数据隔离维度,否则,返回请求失败;上下文处理模块902将目标数据隔离维度发送给动态数据源模块905,由该动态数据源模块905根据目标数据隔离维度确定出目标数据源,并将业务数据处理请求定位至目标数据源,比如,目标数据隔离维度为数据隔离维度V1,则目标数据源为数据源906,则将业务数据处理请求定位至数据源906;其中,业务逻辑模块904主要用于为业务数据处理请求提供一些业务逻辑相关操作。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图10,其示出了本申请一个实施例提供的业务数据处理装置的结构框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图10所示,该装置1000可以包括:第一接收模块1001、第一确定模块1002、第二确定模块1003和响应模块1004。
第一接收模块1001,用于接收业务数据处理请求,所述业务数据处理请求中至少包括待处理业务数据对应的目标业务主键;
第一确定模块1002,用于确定所述目标业务主键对应的目标数据隔离维度,其中,数据隔离维度是隔离不同业务数据时所基于的维度;
第二确定模块1003,用于确定所述目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段;
响应模块1004,用于通过所述目标数据源响应所述业务数据处理请求。
可选的,所述第一确定模块1002,包括:
获取单元,用于响应于所述业务数据处理请求中不包含候选数据隔离维度,获取全局表,所述全局表中存储有业务主键与数据隔离维度之间的对应关系;
第一确定单元,用于从所述全局表中查找所述目标业务主键对应的数据隔离维度,并将查找到的数据隔离维度确定为所述目标数据隔离维度。
可选的,所述第一确定模块1002,还包括:
校验单元,用于响应于所述业务数据处理请求中包含所述候选数据隔离维度,根据所述全局表对所述候选数据隔离维度进行合法性校验;
第二确定单元,用于响应于所述候选数据隔离维度通过合法性校验,将所述候选数据隔离维度确定为所述目标数据隔离维度。
可选的,所述校验单元,还用于:
从所述全局表中查找所述目标业务主键对应的数据隔离维度;
响应于所述候选数据隔离维度与查找到的数据隔离维度一致,确定所述候选数据隔离维度通过合法性校验。
可选的,所述装置还包括:
反馈模块,用于响应于所述候选数据隔离维度未通过合法性校验,反馈请求失败信息。
可选的,所述装置还包括:
第二接收模块,用于接收业务创建请求,所述业务创建请求中包含待创建业务对应的待创建业务主键和待创建业务数据隔离维度;
写入模块,用于将所述待创建业务主键和所述待创建业务数据隔离维度写入所述全局表。
可选的,所述第二确定模块1003,包括:
第三确定单元,用于通过数据源路由接口确定所述目标数据隔离维度对应的所述目标数据源,并将所述目标数据源存入线程工具,所述线程工具用于存储当前线程与数据源之间的对应关系;
可选的,所述响应模块1004,包括:
路由单元,用于通过Spring框架从所述线程工具中获取所述当前线程对应的所述目标数据源,并将所述业务数据处理请求路由至所述目标数据源。
可选的,所述装置还包括:
第三接收模块,用于接收隔离维度新增请求,所述隔离维度新增请求中包含新增数据隔离维度;
创建模块,用于根据所述新增数据隔离维度创建对应的新增数据源。
综上所述,本申请实施例提供的技术方案中,当服务器接收到业务数据处理请求时,从该业务数据处理请求中确定出目标业务主键,并根据该目标业务主键确定出该业务数据对应的目标数据隔离维度,由于预先对业务数据进行隔离时,即对不同的数据隔离维度创建有不同的数据源,因此,可以根据目标数据隔离维度确定出对应的目标数据源,并通过目标数据源响应当前业务数据处理请求。相比于相关技术中,不同的数据隔离维度均对应同一数据源,导致在存储业务数据时,需要将业务主键和对应的数据隔离维度均冗余存储在每个数据表中,方便后续进行数据表的定位,而本申请中由于不同的数据源即对应不同的数据隔离维度,因此,无需在数据源包含的数据表中存储数据隔离维度对应的字段,也可以将业务数据处理请求准确定位到对应的数据隔离维度(或目标数据源)中,可以减少对存储空间的浪费,从而有利于对业务数据的优化存储。
需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图11,其示出了本申请一个实施例提供的服务器的结构框图。该服务器可用于实施上述实施例中提供的业务数据处理方法。具体来讲:
所述服务器1100包括中央处理单元(Central Processing Unit,CPU)1101、包括随机存取存储器(Random Access Memory,RAM)1102和只读存储器(Read-Only Memory,ROM)1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。所述服务器1100还包括帮助服务器内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。
所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读存储介质为服务器1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)驱动器之类的计算机可读存储介质(未示出)。
不失一般性,所述计算机可读存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读存储指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read OnlyMemory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable ProgrammableRead-Only Memory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1101执行,一个或多个程序包含用于实现上述方法实施例的指令,中央处理单元1101执行该一个或多个程序实现上述各个方法实施例提供的方法。
根据本申请的各种实施例,所述服务器1100还可以通过诸如因特网等网络连接到网络上的远程服务器运行。也即服务器1100可以通过连接在所述系统总线1105上的网络接口单1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程服务器系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由服务器所执行的步骤。
在示例性实施例中,还提供了一种非临时性计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被处理器执行时以实现上述业务数据处理方法。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被处理器执行时,其用于实现上述业务数据处理方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种业务数据处理方法,其特征在于,所述方法包括:
接收业务数据处理请求,所述业务数据处理请求中至少包括待处理业务数据对应的目标业务主键;
确定所述目标业务主键对应的目标数据隔离维度,其中,数据隔离维度是隔离不同业务数据时所基于的维度;
确定所述目标数据隔离维度对应的目标数据源,其中,不同数据源对应不同数据隔离维度,且数据源中的数据表不包含数据隔离维度对应的字段;
通过所述目标数据源响应所述业务数据处理请求;
其中,所述确定所述目标业务主键对应的目标数据隔离维度,具体包括:
响应于所述业务数据处理请求中不包含候选数据隔离维度,获取全局表,所述全局表中存储有业务主键与数据隔离维度之间的对应关系;
从所述全局表中查找所述目标业务主键对应的数据隔离维度,并将查找到的数据隔离维度确定为所述目标数据隔离维度。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标业务主键对应的目标数据隔离维度,还包括:
响应于所述业务数据处理请求中包含所述候选数据隔离维度,根据所述全局表对所述候选数据隔离维度进行合法性校验;
响应于所述候选数据隔离维度通过合法性校验,将所述候选数据隔离维度确定为所述目标数据隔离维度。
3.根据权利要求2所述的方法,其特征在于,所述根据所述全局表对所述候选数据隔离维度进行合法性校验,包括:
从所述全局表中查找所述目标业务主键对应的数据隔离维度;
响应于所述候选数据隔离维度与查找到的数据隔离维度一致,确定所述候选数据隔离维度通过合法性校验。
4.根据权利要求2所述的方法,其特征在于,所述根据所述全局表对所述候选数据隔离维度进行合法性校验之后,所述方法还包括:
响应于所述候选数据隔离维度未通过合法性校验,反馈请求失败信息。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
接收业务创建请求,所述业务创建请求中包含待创建业务对应的待创建业务主键和待创建业务数据隔离维度;
将所述待创建业务主键和所述待创建业务数据隔离维度写入所述全局表。
6.根据权利要求1至4任一所述的方法,其特征在于,所述确定所述目标数据隔离维度对应的目标数据源,包括:
通过数据源路由接口确定所述目标数据隔离维度对应的所述目标数据源,并将所述目标数据源存入线程工具,所述线程工具用于存储当前线程与数据源之间的对应关系;
所述通过所述目标数据源响应所述业务数据处理请求,包括:
通过开源Spring框架从所述线程工具中获取所述当前线程对应的所述目标数据源,并将所述业务数据处理请求路由至所述目标数据源。
7.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
接收隔离维度新增请求,所述隔离维度新增请求中包含新增数据隔离维度;
根据所述新增数据隔离维度创建对应的新增数据源。
8.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的方法。
9.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010338963.8A CN111522881B (zh) | 2020-04-26 | 2020-04-26 | 业务数据处理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010338963.8A CN111522881B (zh) | 2020-04-26 | 2020-04-26 | 业务数据处理方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522881A CN111522881A (zh) | 2020-08-11 |
CN111522881B true CN111522881B (zh) | 2023-04-28 |
Family
ID=71904725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010338963.8A Active CN111522881B (zh) | 2020-04-26 | 2020-04-26 | 业务数据处理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522881B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806813A (zh) * | 2021-08-27 | 2021-12-17 | 上海得帆信息技术有限公司 | 一种多数据源的数据隔离切换方法和系统 |
CN115204158B (zh) * | 2022-07-20 | 2023-05-26 | 平安科技(深圳)有限公司 | 数据隔离应用方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291925A (zh) * | 2017-06-29 | 2017-10-24 | 浪潮软件股份有限公司 | 一种基于业务模型的审批数据沉淀方法 |
CN108572991A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 数据库处理方法、装置和存储介质 |
CN109359112A (zh) * | 2018-10-15 | 2019-02-19 | 行吟信息科技(上海)有限公司 | 一种代码的自动生成方法及代码生成器 |
CN109669807A (zh) * | 2017-10-13 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 业务事件的校验方法及装置、处理器、存储介质 |
CN110413634A (zh) * | 2019-06-27 | 2019-11-05 | 北京奇艺世纪科技有限公司 | 数据查询方法、系统、装置及计算机可读存储介质 |
CN110489471A (zh) * | 2019-07-25 | 2019-11-22 | 北京文渊佳科技有限公司 | 一种数据请求处理方法、装置、存储介质及服务器 |
CN110866008A (zh) * | 2019-10-17 | 2020-03-06 | 苏宁云计算有限公司 | 一种数据处理方法、装置、系统 |
-
2020
- 2020-04-26 CN CN202010338963.8A patent/CN111522881B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572991A (zh) * | 2017-03-14 | 2018-09-25 | 北京京东尚科信息技术有限公司 | 数据库处理方法、装置和存储介质 |
CN107291925A (zh) * | 2017-06-29 | 2017-10-24 | 浪潮软件股份有限公司 | 一种基于业务模型的审批数据沉淀方法 |
CN109669807A (zh) * | 2017-10-13 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 业务事件的校验方法及装置、处理器、存储介质 |
CN109359112A (zh) * | 2018-10-15 | 2019-02-19 | 行吟信息科技(上海)有限公司 | 一种代码的自动生成方法及代码生成器 |
CN110413634A (zh) * | 2019-06-27 | 2019-11-05 | 北京奇艺世纪科技有限公司 | 数据查询方法、系统、装置及计算机可读存储介质 |
CN110489471A (zh) * | 2019-07-25 | 2019-11-22 | 北京文渊佳科技有限公司 | 一种数据请求处理方法、装置、存储介质及服务器 |
CN110866008A (zh) * | 2019-10-17 | 2020-03-06 | 苏宁云计算有限公司 | 一种数据处理方法、装置、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111522881A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474578B (zh) | 报文消息校验方法、装置、计算机设备和存储介质 | |
CN110209650B (zh) | 数据规整迁移方法、装置、计算机设备和存储介质 | |
WO2020186786A1 (zh) | 文件处理方法、装置、计算机设备和存储介质 | |
CN111027295B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN107483221B (zh) | 一种跨应用问题排查方法、装置及系统 | |
CN107633016B (zh) | 数据处理方法及装置和电子设备 | |
CN110162512B (zh) | 一种日志检索方法、装置及存储介质 | |
CN110569035A (zh) | 软件开发项目的代码编译方法、装置、设备和存储介质 | |
CN110413507B (zh) | 系统测试方法、装置、计算机设备和存储介质 | |
US9513997B2 (en) | Test data management | |
CN111522881B (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN1976320B (zh) | 数据访问控制方法及系统 | |
CN112559526A (zh) | 数据表导出方法、装置、计算机设备及存储介质 | |
CN109785867B (zh) | 双录流程配置方法、装置、计算机设备和存储介质 | |
CN111324375A (zh) | 代码管理方法、装置、计算机设备和存储介质 | |
CN112835885A (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
CN113010398A (zh) | 一种业务日志模型、业务执行方法、装置、电子设备和介质 | |
CN110196877B (zh) | 数据展示方法、装置、计算机设备及存储介质 | |
CN111881128B (zh) | 大数据回归验证方法及大数据回归验证装置 | |
CN114900531B (zh) | 数据同步方法、装置和系统 | |
CN113849218B (zh) | 软件信息合并方法、装置、计算机设备和存储介质 | |
CN112487830B (zh) | 一种翻译记忆库操作执行方法、装置、计算机设备和存储介质 | |
CN115481614A (zh) | 车辆工程配置表的获取方法、装置、设备及存储介质 | |
CN116244268A (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 |