具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
关于本文中所使用的“第一”、“第二”、…等,并非特别指称次序或顺位的意思,也非用以限定本发明,其仅为了区别以相同技术用语描述的元件或操作。
下面结合附图对本申请所述的信息查询方法及装置进行详细的说明。图1是本申请提出的信息查询方法的一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块结构。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例提供的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本申请设计了基于对象(例如:股票代码或者栏目代码)资讯视图表,当前端进行资讯查询时可以直接查询已经处理过的数据,而且是单表查询,缩短响应时间。另外,在有新资讯落库时,调用原接口进行数据查询,且去重、排序后插入到资讯视图表中,从而保证了资讯查询的时效性。本申请可以以股票资讯或者栏目资讯为例进行方案的具体说明,当然,本申请所述的信息查询方案不仅可以用于股票资讯或者栏目资讯的信息查询,同样可以适用于其他类型资讯的信息查询。具体的如图1所示,本申请提供的信息查询方法的一种实施例可以包括:
步骤S101,对各个对象进行数据查询,得到与各个对象相关联的资讯的ID;
步骤S102,构建资讯视图表;其中,该资讯视图表中存储有对象以及与对象相关联的资讯的ID;
步骤S103,接收到查询指令后,根据资讯视图表,获取与待查询对象相关联的资讯的ID。
本申请利用数据更新的时机,提前异步处理数据,然后在用户查询的时候就可以更快地响应,减少每次实时查询带来的时间消耗,提升用户体验。
上述资讯视图表为对象以及与对象相关联的资讯的ID列表,其中并不存储资讯内容,根据用户的查询指令查询到与待查询对象相关联的资讯的ID后,可以根据与待查询对象相关联的资讯的ID向用户推送相关资讯。
在构建资讯视图表之后,由于会不定时的出现新增的资讯或者现有资讯不定时的更新(包括但不限于:现有资讯被删除或者信息内容变更),因此需要对资讯进行实时监听。基于此,本申请至少提供了两种优选实施方式,即:
1)监听是否出现新增的资讯;如果出现新增的资讯,则重新进行数据查询,确定与新增的资讯相关联的对象;将新增的资讯的ID与其相关联的对象添加到资讯视图表中。
2)监听现有资讯是否更新;如果更新,则重新对各个对象进行数据查询,得到与各个对象相关联的资讯的ID;根据各个对象以及与各个对象相关联的资讯的ID,更新资讯视图表。
通过上述两种优选实施方式,可以实时更新资讯视图表,以保证资讯查询的时效性,避免影响最终查询结果。
本申请中的对象包括以下至少之一:股票代码、栏目代码;与股票代码相关联的资讯是股票资讯;与栏目代码相关联的资讯是栏目资讯。本申请中的资讯视图表可以是一个,也可以是多个,即资讯视图表为多个的时候,每个资讯视图表中包括一个对象以及与对象相关联的资讯的ID;或者,资讯视图表为一个的时候,该资讯视图表中包括多个对象以及与多个对象相关联的资讯的ID;可以根据股票代码构建股票资讯视图表(如表1所示),根据栏目代码构建栏目资讯视图表(如表2所示)。也可以根据股票代码和栏目代码共同构建一个资讯视图表。具体如何构建可以根据实际需求确定,本申请对此不作限定。
表1中,不同的股票代码(sec_code)用于表示不同的股票,股票市场(exchange)用于表示该股票的交易市场,如阿里巴巴的股票市场为美股。推荐资讯(News)中保存了股票的大量的股票资讯的ID,创建时间(Gmt_create)为该资讯视图表的创建时间,更新时间(Gmt_modified)为该资讯视图表的实时更新时间。通过创建该资讯视图表,本申请可以实现单表查询,解决了现有技术中由于多表查询带了的性能问题,提高了查询性能。
表2中,不同的栏目代码(Cloumn_id)用于表示不同的栏目,推荐资讯(News)中保存了栏目的大量的栏目资讯的ID,创建时间(Gmt_create)为该资讯视图表的创建时间,更新时间(Gmt_modified)为该资讯视图表的实时更新时间,提高了查询性能。通过创建该资讯视图表,本申请可以实现单表查询,解决了现有技术中由于多表查询带了的性能问题,提高了查询性能。
表1
sec_code |
exchange |
News |
Gmt_create |
Gmt_modified |
股票代码 |
股票市场 |
推荐资讯 |
创建时间 |
更新时间 |
表2
Cloumn_id |
News |
Gmt_create |
Gmt_modified |
栏目id |
推荐资讯 |
创建时间 |
更新时间 |
下面结合具体实施例说明本申请,蚂蚁聚宝是蚂蚁金服下可以理财的APP(Application,应用),里面至少包括余额宝,招财宝,基金,存金宝等。下面以蚂蚁聚宝为例,介绍聚宝用户进行聚宝资讯(蚂蚁聚宝中的新闻,主要来源于一财、新浪资讯等)查询的过程。图2是本申请提出的蚂蚁聚宝的信息查询方法的一种实施例的示意图。聚宝资讯的数据是通过finfocore系统查询推荐给客户端的,主要是做栏目资讯和自选股资讯推荐,而这些资讯数据是从聚源把数据同步给secuinfos系统的stockdb数据库,然后finfocore系统通过DRC(Data Replication Center,是技术保障部数据库团队自主研发的对异构数据源进行实时迁移同步及数据流订阅的数据管道基础技术设施)监听stockdb数据库的binlog,再同步给finfocore系统的finfoproddb数据库。当finfocore系统通过DRC监听到有新资讯数据落库,那么就向finfoproddb数据库查询对象(股票资讯或者栏目资讯等)对应的资讯,并将finfoproddb数据库返回的对象及其对应的资讯的ID同步到栏目资讯视图表和股票资讯视图表。这样,每次有新增资讯或者资讯数据更新时都触发资讯视图表的更新,当用户来查询资讯的时候只有单表数据查询,很大一部分解决了查询性能问题。具体的如图2所示,本申请提供的蚂蚁聚宝的信息查询方法的一种实施例可以包括以下两部分:
第一部分:
1:finfocore系统通过DRC监听stockdb数据库,确定资讯变更:新增资讯或者现有资讯更新;
1.1:finfocore系统插入或者更新finfoproddb数据库中的股票资讯/栏目资讯。股票资讯/栏目资讯中记录了股票/栏目的相关资讯,该相关资讯一般存在于多张表中,包括主表及关系表等,主表中一般包含有标题、作者、资讯内容等信息,关系表中一般包含股票(或栏目)的代码及相关资讯的ID等信息。现有技术中,一般是首先关联多张数据表进行数据查询,然后进行去重、排序,得到最终的查询结果,查询过程较为缓慢。
1.2:finfocore系统向finfoproddb数据库查询对象(股票资讯或者栏目资讯等)对应的资讯,包括更新资讯和未更新的咨询。
1.3:finfoproddb数据库将finfocore系统查询的对象及其对应的资讯的ID返回至finfocore系统。finfoproddb数据库中的关系表中存储了资讯的ID。
1.4:finfocore系统将finfoproddb数据库返回的对象及其对应的资讯的ID更新到finfoproddb数据库的资讯视图表中。资讯视图表为信息列表,如表1所示,根据表1中股票代码可以将股票对应的多个资讯的ID存储至推荐资讯一栏中。
第二部分:
2:聚宝用户查询股票资讯/栏目资讯。用户通过点击某一股票或栏目向secuinfos系统申请进行股票或栏目的资讯查询。
2.1:secuinfos系统接收到用户的查询请求后,将查询指令发送至finfocore系统,该查询指令中包含了待查询的股票或栏目的代码。
2.1.1:finfocore系统根据查询指令中的股票id(代码)/栏目id(代码)查询finfoproddb数据库中存储的资讯视图表中的资讯的ID,根据该资讯的ID,可以从上述1.1所述的主表中得到对应的资讯内容,该资讯内容为查询结果。
2.1.2:finfoproddb数据库将查询结果反馈至finfocore系统。
2.2:finfocore系统将查询结果反馈至secuinfos系统。
2.3:secuinfos系统将查询结果反馈至聚宝用户。
在图2中所示的各个数据库只是用以举例说明,在实际应用中可以使用其他数据库存储数据,本实施例对此不作限定。通过上述实施例可以看出,在同步股票资讯和栏目资讯后,用户进行资讯查询时是在资讯视图表进行单表查询,很大程度解决了性能问题。并且资讯视图表实时更新,保证了资讯时效性。
在本申请中,由于构建了资讯视图表,可以进行单表查询,不再需要关联多表查询。因此,用户查询接口sql(数据库执行语言,可以对数据库进行增删改查)的代码量也相应减少。具体地,
原个选股资讯查询sql如下:
原栏目资讯查询sql:
优化后的股票资讯的用户查询接口sql如下:
select id,sec_code,exchange,news,gmt_create,gmt_modified from
rec_stock_news_securities_cache where((sec_code=#secCode#)AND(exchange=#exchange#))
优化后的栏目资讯的用户查询接口sql如下:
select id,column_id,news,gmt_create,gmt_modified from
rec_stock_news_column_item_query_view
where(column_id=#columnId#)
用户查询接口sql的代码量的减少,可以缩短查询时间,提高查询性能。
基于与上述信息查询方法相同的发明构思,本申请提供一种信息查询装置,如下面实施例所述。由于该信息查询装置解决问题的原理与信息查询方法相似,因此该信息查询装置的实施可以参见信息查询方法的实施,重复之处不再赘述。
图3是本申请所述信息查询装置一种实施例的结构示意图,如图3所示,所述装置可以包括:
信息查询单元10,用于对各个对象进行数据查询,得到与各个对象相关联的资讯的ID;信息查询单元10是信息查询装置中获取各个对象相关联的资讯的ID的部分,可以是软件、硬件或二者的结合,例如可以是完成资讯采集功能的输入输出接口、处理芯片等元器件。
建表单元20,用于构建资讯视图表;其中,资讯视图表中存储有对象以及与对象相关联的资讯的ID;建表单元20是信息查询装置中构建资讯视图表的部分,可以是软件、硬件或二者的结合,例如可以是完成建表功能的输入输出接口、处理芯片等元器件。
信息获取单元30,用于接收到查询指令后,根据资讯视图表,获取与待查询对象相关联的资讯的ID。信息获取单元30是信息查询装置中获取与待查询对象相关联的资讯的ID的部分,可以是软件、硬件或二者的结合,例如可以是完成信息获取功能的输入输出接口、处理芯片等元器件。
本申请利用数据更新的时机,提前异步处理数据,然后在用户查询的时候就可以更快地响应,减少每次实时查询带来的时间消耗,提升用户体验。
在构建资讯视图表之后,由于会不定时的出现新增的资讯或者现有资讯不定时的更新(包括但不限于:现有资讯被删除或者信息内容变更),因此需要对资讯进行实时监听。基于此,本申请至少提供了两种优选实施方式,即:
上述信息查询装置还可以包括:第一监听单元,用于监听是否出现新增的资讯;添加单元,用于在出现新增的资讯时,重新进行数据查询,确定与新增的资讯相关联的对象;将新增的资讯的ID与其相关联的对象添加到资讯视图表中。
上述信息查询装置还可以包括:第二监听单元,用于监听现有资讯是否更新;更新单元,用于在资讯更新时,重新对各个对象进行数据查询,得到与各个对象相关联的资讯的ID;根据各个对象以及与各个对象相关联的资讯的ID,更新资讯视图表。
通过上述两种优选实施方式,可以实时更新资讯视图表,以保证资讯查询的时效性,避免影响最终查询结果。
本申请中的对象包括以下至少之一:股票代码、栏目代码;与股票代码相关联的资讯是股票资讯;与栏目代码相关联的资讯是栏目资讯。本申请中的资讯视图表可以是一个,也可以是多个,即资讯视图表为多个的时候,每个资讯视图表中包括一个对象以及与对象相关联的资讯的ID;或者,资讯视图表为一个的时候,该资讯视图表中包括多个对象以及与多个对象相关联的资讯的ID。具体如何构建可以根据实际需求确定,本申请对此不作限定。
从以上的描述中可知,本申请解决了现有方案中用户查询资讯响应时间过久的问题,提高了性能,也提升了用户体验;还解决了现有方案中tair缓存的资讯延迟时间,真正意义上实现了资讯时效性。本申请的技术方案主要体现在业务时机的处理上,可以使用任何计算机语言实现。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。