一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种索引数据的构建方法和装置与流程

2022-08-08 05:23:27 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种索引数据的构建方法和装置。


背景技术:

2.目前系统中数据检索的功能是通过es(elasticsearch,一个基于lucene的搜索服务器)进行数据的存储并为系统提供数据搜索能力。每个数据变更点都需单独组装数据并调用es的api(应用程序接口),在数据产生变更的位置直接调用es提供的api完成数据的写入。es中数据库表中的不同字段来自不同的系统,需要对来自不同系统的变更字段进行统一聚合。每个系统的数据都有各自的数据版本,无法实现对来自不同系统的字段在写入es时的数据版本的校验。
3.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
4.无法实现数据写入的统一控制,容易出现新数据被旧数据覆盖的问题,数据写入的准确率和效率低,对系统的性能要求较高。


技术实现要素:

5.有鉴于此,本发明实施例提供一种索引数据的构建方法和装置,能够实现数据写入的统一控制,解决了新数据被旧数据覆盖的问题,提高数据写入的准确率和效率,降低对系统的性能要求。
6.为实现上述目的,根据本发明实施例的一个方面,提供了一种索引数据的构建方法。
7.一种索引数据的构建方法,包括:通过统一的数据采集接口接收源系统中业务数据的变更数据,所述变更数据包括所述业务数据的业务标识和业务变更字段;将所述变更数据按照预设结构写入到第一数据库,并在所述变更数据写入成功后,生成变更消息,所述变更消息包括所述业务数据的业务标识;响应于生成所述变更消息,根据所述变更消息中的业务标识,从所述第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。
8.可选地,所述变更数据还包括所述业务数据的数据版本号;所述通过统一的数据采集接口接收源系统中业务数据的变更数据,包括:以业务标识、数据版本号、业务变更字段作为所述统一的数据采集接口的接口参数,接收所述源系统中业务数据的变更数据。
9.可选地,所述通过统一的数据采集接口接收源系统中业务数据的变更数据之后,包括:对接收的所述源系统中业务数据的变更数据进行字段验证,以确认接收的所述源系统中业务数据的变更数据中包括所述接口参数中的各字段。
10.可选地,所述确认接收的所述源系统中业务数据的变更数据中包括所述接口参数中的各字段之后,包括:将接收的所述源系统中业务数据的变更数据组装为第一消息,通将所述第一消息发布到第一消息中间件;所述将所述变更数据按照预设结构写入到第一数据库,包括:响应于发布到所述第一消息中间件的所述第一消息,将所述变更数据按照预设结
构写入到第一数据库。
11.可选地,所述将所述变更数据按照预设结构写入到第一数据库,包括:对所述变更数据进行数据合法性验证并确认所述数据合法性验证通过,所述数据合法性验证包括验证所述变更数据中的业务标识、数据版本号和业务变更字段;将所述变更数据按照所述第一数据库的数据存储结构进行转换并写入到所述第一数据库中。
12.可选地,所述将所述变更数据按照所述第一数据库的数据存储结构进行转换并写入到所述第一数据库中,包括:将所述变更数据按照所述第一数据库的数据存储结构进行转换,得到转换后的所述变更数据;获取分布式锁,并在确认所述分布式锁获取成功后,对所述变更数据进行版本判定,以确认所述变更数据为最新版本;将最新版本的转换后的所述变更数据按照对应的源系统标识写入到所述第一数据库,其中,所述源系统标识是根据所述变更数据中的所述业务变更字段确定的所述业务数据所属的源系统的标识。
13.可选地,所述对所述变更数据进行版本判定,以确认所述变更数据为最新版本,包括:从第二数据库中获取所述变更数据最近一次的已存版本号;将所述变更数据中的所述数据版本号与所述已存版本号进行比较,在所述变更数据中的所述数据版本号大于或等于所述已存版本号的情况下,确认所述变更数据为最新版本。
14.可选地,所述将最新版本的转换后的所述变更数据按照对应的源系统标识写入到所述第一数据库之后,包括:释放所述分布式锁,以及,将所述第二数据库中的所述已存版本号更新为所述变更数据中的所述数据版本号。
15.可选地,所述生成变更消息之后,包括:将所述变更消息发布到第二消息中间件;所述响应于生成所述变更消息,根据所述变更消息中的业务标识,从所述第一数据库中查询用于生成索引的字段,包括:响应于发布到所述第二消息中间件的所述变更消息,根据所述变更消息中的业务标识,从所述第一数据库中查询用于生成索引的字段,所述用于生成索引的字段为所述业务数据的一个或多个字段。
16.可选地,所述由查询到的字段组装得到索引数据,包括:按照存储集群的索引结构,对所述查询到的字段进行组装,得到所述索引数据,并通过调用所述存储集群的应用程序接口,将所述索引数据保存至所述存储集群中,所述索引数据用于所述存储集群查询对应的业务标识,以根据所述对应的业务标识从所述业务数据的源系统获取所述业务数据。
17.根据本发明实施例的另一方面,提供了一种索引数据的构建装置。
18.一种索引数据的构建装置,包括:变更数据采集模块,用于通过统一的数据采集接口接收源系统中业务数据的变更数据,所述变更数据包括所述业务数据的业务标识和业务变更字段;变更数据写入模块,用于将所述变更数据按照预设结构写入到第一数据库,并在所述变更数据写入成功后,生成变更消息,所述变更消息包括所述业务数据的业务标识;索引数据构建模块,用于响应于生成所述变更消息,根据所述变更消息中的业务标识,从所述第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。
19.可选地,所述变更数据还包括所述业务数据的数据版本号;所述变更数据采集模块还用于:以业务标识、数据版本号、业务变更字段作为所述统一的数据采集接口的接口参数,接收所述源系统中业务数据的变更数据。
20.可选地,还包括字段验证模块,用于:对接收的所述源系统中业务数据的变更数据进行字段验证,以确认接收的所述源系统中业务数据的变更数据中包括所述接口参数中的
各字段。
21.可选地,所述字段验证模块还用于:将接收的所述源系统中业务数据的变更数据组装为第一消息,通将所述第一消息发布到第一消息中间件;所述变更数据写入模块还用于:响应于发布到所述第一消息中间件的所述第一消息,将所述变更数据按照预设结构写入到第一数据库。
22.可选地,所述变更数据写入模块还用于:对所述变更数据进行数据合法性验证并确认所述数据合法性验证通过,所述数据合法性验证包括验证所述变更数据中的业务标识、数据版本号和业务变更字段;将所述变更数据按照所述第一数据库的数据存储结构进行转换并写入到所述第一数据库中。
23.可选地,所述变更数据写入模块还用于:将所述变更数据按照所述第一数据库的数据存储结构进行转换,得到转换后的所述变更数据;获取分布式锁,并在确认所述分布式锁获取成功后,对所述变更数据进行版本判定,以确认所述变更数据为最新版本;将最新版本的转换后的所述变更数据按照对应的源系统标识写入到所述第一数据库,其中,所述源系统标识是根据所述变更数据中的所述业务变更字段确定的所述业务数据所属的源系统的标识。
24.可选地,所述变更数据写入模块还用于:从第二数据库中获取所述变更数据最近一次的已存版本号;将所述变更数据中的所述数据版本号与所述已存版本号进行比较,在所述变更数据中的所述数据版本号大于或等于所述已存版本号的情况下,确认所述变更数据为最新版本。
25.可选地,所述变更数据写入模块还用于:释放所述分布式锁,以及,将所述第二数据库中的所述已存版本号更新为所述变更数据中的所述数据版本号。
26.可选地,所述变更数据写入模块还用于:将所述变更消息发布到第二消息中间件;所述索引数据构建模块还用于:响应于发布到所述第二消息中间件的所述变更消息,根据所述变更消息中的业务标识,从所述第一数据库中查询用于生成索引的字段,所述用于生成索引的字段为所述业务数据的一个或多个字段。
27.可选地,所述索引数据构建模块还用于:按照存储集群的索引结构,对所述查询到的字段进行组装,得到所述索引数据,并通过调用所述存储集群的应用程序接口,将所述索引数据保存至所述存储集群中,所述索引数据用于所述存储集群查询对应的业务标识,以根据所述对应的业务标识从所述业务数据的源系统获取所述业务数据。
28.根据本发明实施例的又一方面,提供了一种电子设备。
29.一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的索引数据的构建方法。
30.根据本发明实施例的又一方面,提供了一种计算机可读介质。
31.一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的索引数据的构建方法。
32.上述发明中的一个实施例具有如下优点或有益效果:通过统一的数据采集接口接收源系统中业务数据的变更数据,变更数据包括业务数据的业务标识和业务变更字段;将变更数据按照预设结构写入到第一数据库,并在变更数据写入成功后,生成变更消息,变更
消息包括业务数据的业务标识;响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。能够实现数据写入的统一控制,解决了新数据被旧数据覆盖的问题,提高数据写入的准确率和效率,降低对系统的性能要求。
33.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
34.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
35.图1是根据本发明一个实施例的索引数据的构建方法的主要步骤示意图;
36.图2是根据本发明一个实施例的索引数据的构建的的流程示意图;
37.图3是根据本发明一个实施例的采集变更数据的流程示意图之一;
38.图4是根据本发明一个实施例的采集变更数据的流程示意图之二;
39.图5是根据本发明一个实施例的写入变更数据的流程示意图;
40.图6是根据本发明一个实施例的使用分布式锁的流程示意图;
41.图7是根据本发明一个实施例的构建索引的流程示意图;
42.图8是根据本发明一个实施例的索引数据的构建装置的主要模块示意图;
43.图9是本发明实施例可以应用于其中的示例性系统架构图;
44.图10是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
45.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
46.图1是根据本发明一个实施例的索引数据的构建方法的主要步骤示意图。
47.如图1所示,本发明一个实施例的索引数据的构建方法主要包括如下的步骤s101至步骤s103。
48.步骤s101:通过统一的数据采集接口接收源系统中业务数据的变更数据,变更数据包括业务数据的业务标识和业务变更字段。
49.变更数据还可以包括业务数据的数据版本号。
50.通过统一的数据采集接口接收源系统中业务数据的变更数据,可以包括:以业务标识、数据版本号、业务变更字段作为统一的数据采集接口的接口参数,接收源系统中业务数据的变更数据。
51.通过统一的数据采集接口接收源系统中业务数据的变更数据之后,可以包括:对接收的源系统中业务数据的变更数据进行字段验证,以确认接收的源系统中业务数据的变更数据中包括接口参数中的各字段。接口参数中的各字段包括业务标识、数据版本号、业务变更字段。
52.确认接收的源系统中业务数据的变更数据中包括接口参数中的各字段之后,可以包括:将接收的源系统中业务数据的变更数据组装为第一消息,通将第一消息发布到第一消息中间件。
53.步骤s102:将变更数据按照预设结构写入到第一数据库,并在变更数据写入成功后,生成变更消息,变更消息包括业务数据的业务标识。
54.将变更数据按照预设结构写入到第一数据库,可以包括:响应于发布到第一消息中间件的第一消息,将变更数据按照预设结构写入到第一数据库。其中,第一数据库可以为hbase(开源的非关系型分布式数据库)或者mongodb(基于分布式文件存储的数据库)。
55.预设结构可以是第一数据库的数据存储结构。将变更数据按照预设结构写入到第一数据库,可以包括:对变更数据进行数据合法性验证并确认数据合法性验证通过,数据合法性验证包括验证变更数据中的业务标识、数据版本号和业务变更字段;将变更数据按照第一数据库的数据存储结构进行转换并写入到第一数据库中。其中,数据合法性验证可以包括验证数据版本号、变更字段、业务标识是否为空,若均不为空,则验证通过,若有任一为空,则为异常数据,验证不通过。
56.将变更数据按照第一数据库的数据存储结构进行转换并写入到第一数据库中,可以包括:将变更数据按照第一数据库的数据存储结构进行转换,得到转换后的变更数据;获取分布式锁,并在确认分布式锁获取成功后,对变更数据进行版本判定,以确认变更数据为最新版本;将最新版本的转换后的变更数据按照对应的源系统标识写入到第一数据库,其中,源系统标识是根据变更数据中的业务变更字段确定的业务数据所属的源系统的标识。其中,分布式锁可以通过redis(集中式的缓存中间件)的setnx命令、数据库或者zk(zookeeper,分布式应用程序协调服务)实现。
57.对变更数据进行版本判定,以确认变更数据为最新版本,可以包括:从第二数据库中获取变更数据最近一次的已存版本号;将变更数据中的数据版本号与已存版本号进行比较,在变更数据中的数据版本号大于或等于已存版本号的情况下,确认变更数据为最新版本。
58.将最新版本的转换后的变更数据按照对应的源系统标识写入到第一数据库之后,可以包括:释放分布式锁,以及,将第二数据库中的已存版本号更新为变更数据中的数据版本号。
59.生成变更消息之后,可以包括:将变更消息发布到第二消息中间件。第二消息中间件与第一消息中间件可以为同一消息中间件。
60.步骤s103:响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。
61.响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,可以包括:响应于发布到第二消息中间件的变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,用于生成索引的字段为业务数据的一个或多个字段,其中可以包括变更数据中包含的业务变更字段,还可以包括该业务数据的已存于第一数据库的各字段。
62.由查询到的字段组装得到索引数据,可以包括:按照存储集群的索引结构,对查询到的字段进行组装,得到索引数据,并通过调用存储集群的应用程序接口,将索引数据保存
至存储集群中,索引数据用于存储集群查询对应的业务标识,以根据对应的业务标识从业务数据的源系统获取业务数据。存储集群例如es,对查询到的字段进行组装,得到索引数据可以按照es的mapping结构进行数据组装,将组装后的数据写入es,以完成索引数据的构建。
63.图2是根据本发明一个实施例的索引数据的构建的的流程示意图。
64.如图2所示,在系统采集端,梳理各系统涉及搜索构建需要字段的变更点,并在变更点处调用统一数据采集api(即统一的数据采集接口)以采集各变更点的变更数据。各系统(如图2中的系统a、系统b、系统c)发生数据变更时调用统一数据采集api,通过远程接口调用的方式将数据推送至数据接收服务器(步骤201)。数据接收服务器接收到变更数据后对变更数据按照预设结构进行组装,并将包括变更数据(变更数据如图2中的实例a、实例b、实例c,分别对应系统a、系统b、系统c)的消息通过消息中间件发送至数据聚合服务器(步骤202)。数据聚合服务器通过消息中间件接收到变更数据(步骤203)后,使用分布式锁的方式将变更数据写入hbase(即第一数据库)(步骤204),以防止因并发或消息乱序的问题导致最新数据被旧数据覆盖,数据聚合服务器将变更数据成功写入hbase后,通过消息中间件将包含业务数据的业务标识的数据变更消息发送至索引构建服务器(步骤205)。索引构建服务器接收到数据变更消息(步骤206)后,通过业务数据的业务标识从hbase中查询出最新的数据(步骤207),并按照es的mapping结构进行数据组装,将组装后的数据写入es(步骤208),以完成索引数据的构建。其中,消息中间件为用于处理消息的推送和接收的中间件技术,例如rabbitmq;es是一个基于lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎;分布式锁是控制分布式系统之间同步访问共享资源的一种方式;hbase是一个开源的非关系型分布式数据库。
65.在一个实施例中,客户端系统(如图2中的客户端系统a、客户端系统b、客户端系统c)向es发送包括搜索条件的请求,从es中检索满足搜索条件的业务数据的业务标识(步骤209),根据搜索出的业务标识从系统中获取与业务标识对应的具体数据(步骤210),以完成搜索服务。
66.图3是根据本发明一个实施例的采集变更数据的流程示意图之一。
67.如图3所示,在一个实施例中,以业务标识、数据版本号、业务变更字段作为统一的数据采集接口的接口参数,接收源系统中业务数据的变更数据。具体地,数据采集流程主要是将分散在各模块或各源系统(如图2中的系统a、系统b、系统c)的涉及数据变更的功能点增加对统一数据采集api的调用,采集各个系统的变更数据。统一数据采集api的必传字段包括业务标识、数据版本号、业务变更字段,其中,业务标识用于唯一确定一条变更数据,如变更数据为订单则业务标识可以为订单号,变更数据为商品则业务标识可以为商品编号,数据版本号为业务数据经过多次变更后当前的版本,用于唯一标记每一条业务数据的每一次变更,与业务数据的源系统相关,业务字段为一个json数据结构,用于传递涉及变更的字段值。数据采集端完成参数组装后,通过rpc(远程过程调用,remote procedure call)的方式调用数据接收server(即服务器)提供的具体服务完成变更数据推送。业务数据的必传字段示例如表1所示。
68.表1业务数据的必传字段示例
[0069][0070]
在一个实施例中,对接收的源系统中业务数据的变更数据进行字段验证,以确认接收的源系统中业务数据的变更数据中包括接口参数中的各字段。具体地,数据采集端完成参数组装后,可以对各必传字段进行校验,判断业务标识是否为空,若为空,则按照异常逻辑处理,若不为空,则判断数据版本号是否为空,若为空,则按照异常逻辑处理,若不为空,则组装业务变更字段,并调用统一数据采集api进行数据推送。
[0071]
图4是根据本发明一个实施例的采集变更数据的流程示意图之二。
[0072]
如图4所示,在一个实施例中,通过数据接收服务器调用统一数据采集api,将接收的源系统中业务数据的变更数据组装为第一消息,通将第一消息发布到第一消息中间件。具体地,数据接收服务器统一数据采集api接收到数据采集端采集的数据后,对推送的数据必传字段进行校验,若校验通过则将变更数据组装为消息(即第一消息),通过消息中间件(即第一中间件)发送给数据聚合server。其中,校验可以包括对是否存在字段缺失进行验证,如验证数据版本号、变更字段、业务标识是否为空,若均不为空,则校验通过,若有任一为空,则为异常数据,校验不通过。
[0073]
图5是根据本发明一个实施例的写入变更数据的流程示意图。
[0074]
如图5所示,在一个实施例中,响应于发布到第一消息中间件的第一消息,将变更数据按照预设结构写入到第一数据库。,对变更数据进行数据合法性验证并确认数据合法性验证通过,数据合法性验证包括验证变更数据中的业务标识、数据版本号和业务变更字段。具体地额,数据聚合server接收到数据接收server发送的第一消息,对变更数据进行数据合法性验证,以确定数据版本号、变更字段、业务标识均不为空。
[0075]
在一个实施例中,将变更数据按照第一数据库的数据存储结构进行转换,得到转换后的变更数据。具体地,将变更数据按照hbase(即第一数据库)中存储结构的数据格式进行转化。其中,hbase中存储的数据字段结构与es搜索服务中数据字段结构相似,以保证索引构建server在后续进行索引数据构建时进行最少的数据转换量。hbase中表的结构按照字段所属源系统以列族进行分割存储,以商品搜索服务为例,搜索索引满足的功能为商品标识号列表搜索,并且搜索条件包含商品编号、商品名称、是否预售商品、是否秒杀商品等字段,则hbase列族存储结构的设计可以如表2所示,其中,每一个列族对应一个源系统。
[0076]
表2 hbase列族存储结构示例
[0077][0078]
图6是根据本发明一个实施例的使用分布式锁的流程示意图。
[0079]
如图5和图6所示,在一个实施例中,获取分布式锁,并在确认分布式锁获取成功后,对变更数据进行版本判定,以确认变更数据为最新版本;将最新版本的转换后的变更数据按照对应的源系统标识写入到第一数据库;释放分布式锁,以及,将第二数据库中的已存版本号更新为变更数据中的数据版本号,将变更消息发布到第二消息中间件。具体地,在接收到变更数据(步骤601)后,通过redis(即第二数据库)的setnx命令获取分布式锁(步骤602),其中,setnx命令的key命名规则可以为update_业务标识_数据来源标识,若setnx命令成功执行则抢锁成功。在抢锁成功后,根据该变更数据的业务标识和源系统标识,从redis中获取变更数据最近一次的已存版本号(步骤603),将变更数据中的数据版本号与已存版本号进行比较(步骤604),在变更数据中的数据版本号大于或等于已存版本号的情况下,确认变更数据为最新版本(步骤605),继续执行流程,在变更数据中的数据版本号小于已存版本号的情况下,确认变更数据不是最新版本,将该变更数据丢弃。在确认变更数据为最新版本之后,按照该变更数据的业务标识和源系统标识对应的列族,将该变更数据更新至hbase中(步骤606),写入成功后将当前数据的版本号通过set命令(步骤607)更新至redis中(步骤608),并通过del命令(步骤609)释放分布式锁(步骤610),以及将包括业务标识的变更消息发布到第二消息中间件。其中,根据变更数据中的业务变更字段确定的业务数据所属的列族来源系统的标识。
[0080]
在一个实施例中,在设置setnx命令时可以设置分布式锁的有效时间,若分布式锁过期或者执行期间如发生异常,若释放分布式锁。
[0081]
图7是根据本发明一个实施例的构建索引的流程示意图。
[0082]
如图7所示,在一个实施例中,响应于发布到第二消息中间件的变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,按照存储集群的索引结构,对查询到的字段进行组装,得到索引数据,并通过调用存储集群的应用程序接口,将索引数据保存至存储集群中。具体地,索引构建server接收到变更消息后,从变更消息中解析出业务标识,通过业务标识作为查询条件从hbase中查询出用于构建索引数据的字段信息,获取到字段信息后按照es的mapping结构进行索引数据构造,完成索引数据构造后,调用es的api将数据写入es。基于该es索引搭建搜索服务,该搜索服务对外部系统(如客户端系统)提供搜索api,外部系统可通过调用搜索api完成数据的检索。其中,mapping类似于数据库中的表结构定义schema,mapping可以定义索引中的字段的名称,定义字段的数据类型,比如字符串、数字、布尔等,设置倒排索引的相关配置,比如设置某个字段为不被索引。
[0083]
在一个实施例中,通过分布式锁的方式从第一数据库中查询用于生成索引的字段,由查询到的字段组装得到索引数据,将索引数据保存至存储集群中。具体地,在从第一数据库中查询用于生成索引的字段之前,通过setnx命令获取分布式锁。在将索引数据保存
至存储集群中之后,释放分布式锁。
[0084]
在一个实施例中,索引数据用于存储集群查询对应的业务标识,以根据对应的业务标识从业务数据的源系统获取业务数据。具体地,根据来自客户端系统的搜索条件,从es中获取到满足条件的数据的业务标识,通过业务标识从数据源系统中获取详细数据,最终将数据组装后返回给客户端系统。es中只存储与搜索条件相关的字段,业务标识作为搜索结果存储,其余查询条件作为索引字段存储,基于以上两点保证es的存储量足够小,以提高es数据检索的性能;同时基于es构建的搜索服务,在查询es时只会查询到业务标识,通过业务标识去数据源系统获取详细数据进行组装,从而分散负载压力,以减小es本身的负载压力。
[0085]
在一个实施例中,搜索服务的构建过程中涉及的相关应用均采用集群式部署,可通过对各自集群的运行实例数量进行增减,以提升搜索所有的构建效率;同时该方案引入了消息中间件解除了流程节点间的耦合,各流程可单独调整各自消息消费速率以达到索引构建流程的最高效率。
[0086]
图8是根据本发明一个实施例的索引数据的构建装置的主要模块示意图。
[0087]
如图8所示,本发明一个实施例的索引数据的构建装置800主要包括:变更数据采集模块801、变更数据写入模块802、索引数据构建模块803。
[0088]
变更数据采集模块801,用于通过统一的数据采集接口接收源系统中业务数据的变更数据,变更数据包括业务数据的业务标识和业务变更字段。
[0089]
变更数据写入模块802,用于将变更数据按照预设结构写入到第一数据库,并在变更数据写入成功后,生成变更消息,变更消息包括业务数据的业务标识。
[0090]
索引数据构建模块803,用于响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。
[0091]
在一个实施例中,变更数据还包括业务数据的数据版本号;变更数据采集模块801具体用于:以业务标识、数据版本号、业务变更字段作为统一的数据采集接口的接口参数,接收源系统中业务数据的变更数据。
[0092]
在一个实施例中,还可以包括字段验证模块,用于:对接收的源系统中业务数据的变更数据进行字段验证,以确认接收的源系统中业务数据的变更数据中包括接口参数中的各字段。
[0093]
在一个实施例中,字段验证模块具体用于:将接收的源系统中业务数据的变更数据组装为第一消息,通将第一消息发布到第一消息中间件;变更数据写入模块802还用于:响应于发布到第一消息中间件的第一消息,将变更数据按照预设结构写入到第一数据库。
[0094]
在一个实施例中,变更数据写入模块802具体用于:对变更数据进行数据合法性验证并确认数据合法性验证通过,数据合法性验证包括验证变更数据中的业务标识、数据版本号和业务变更字段;将变更数据按照第一数据库的数据存储结构进行转换并写入到第一数据库中。
[0095]
在一个实施例中,变更数据写入模块802具体用于:将变更数据按照第一数据库的数据存储结构进行转换,得到转换后的变更数据;获取分布式锁,并在确认分布式锁获取成功后,对变更数据进行版本判定,以确认变更数据为最新版本;将最新版本的转换后的变更数据按照对应的源系统标识写入到第一数据库,其中,源系统标识是根据变更数据中的业
务变更字段确定的业务数据所属的源系统的标识。
[0096]
在一个实施例中,变更数据写入模块802具体用于:从第二数据库中获取变更数据最近一次的已存版本号;将变更数据中的数据版本号与已存版本号进行比较,在变更数据中的数据版本号大于或等于已存版本号的情况下,确认变更数据为最新版本。
[0097]
在一个实施例中,变更数据写入模块802具体用于:释放分布式锁,以及,将第二数据库中的已存版本号更新为变更数据中的数据版本号。
[0098]
在一个实施例中,变更数据写入模块802具体用于:将变更消息发布到第二消息中间件;索引数据构建模块803具体用于:响应于发布到第二消息中间件的变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,用于生成索引的字段为业务数据的一个或多个字段。
[0099]
在一个实施例中,索引数据构建模块803具体用于:按照存储集群的索引结构,对查询到的字段进行组装,得到索引数据,并通过调用存储集群的应用程序接口,将索引数据保存至存储集群中,索引数据用于存储集群查询对应的业务标识,以根据对应的业务标识从业务数据的源系统获取业务数据。
[0100]
另外,在本发明实施例中索引数据的构建装置的具体实施内容,在上面索引数据的构建方法中已经详细说明了,故在此重复内容不再说明。
[0101]
图9示出了可以应用本发明实施例的索引数据的构建方法或索引数据的构建装置的示例性系统架构900。
[0102]
如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0103]
用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
[0104]
终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0105]
服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息
‑‑
仅为示例)反馈给终端设备。
[0106]
需要说明的是,本发明实施例所提供的索引数据的构建方法一般由服务器905执行,相应地,索引数据的构建装置一般设置于服务器905中。
[0107]
应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0108]
下面参考图10,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统1000的结构示意图。图10示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0109]
如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的
程序而执行各种适当的动作和处理。在ram 1003中,还存储有系统1000操作所需的各种程序和数据。cpu 1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
[0110]
以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
[0111]
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本发明的系统中限定的上述功能。
[0112]
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0113]
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0114]
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括变更数据采集模块、变更数据写入模块、索引数据构建模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,变更数据采集模块还可以被描述为“用于通过统一的数据采集接口接收源系统中业务数据的变更数据的模块”。
[0115]
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:通过统一的数据采集接口接收源系统中业务数据的变更数据,变更数据包括业务数据的业务标识和业务变更字段;将变更数据按照预设结构写入到第一数据库,并在变更数据写入成功后,生成变更消息,变更消息包括业务数据的业务标识;响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。
[0116]
根据本发明实施例的技术方案,通过统一的数据采集接口接收源系统中业务数据的变更数据,变更数据包括业务数据的业务标识和业务变更字段;将变更数据按照预设结构写入到第一数据库,并在变更数据写入成功后,生成变更消息,变更消息包括业务数据的业务标识;响应于生成变更消息,根据变更消息中的业务标识,从第一数据库中查询用于生成索引的字段,以由查询到的字段组装得到索引数据。能够实现数据写入的统一控制,解决了新数据被旧数据覆盖的问题,提高数据写入的准确率和效率,降低对系统的性能要求。
[0117]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献