基于MongoDB的事件归档和查询的方法和装置与流程

文档序号:11677557阅读:292来源:国知局
基于MongoDB的事件归档和查询的方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种基于mongodb的事件归档和查询的方法和装置。



背景技术:

随着事件量的不断递增,系统所承载的数据量也是与日俱增,因此,为了保证系统的平稳运行,需要对事件定期归档,即将已完成的事件通过调度任务存入到历史数据库中。例如,在电子商务领域的客服系统中,事件可用于表示客服在每接到一通来电时所记录的本通来电所有相关内容的载体,随着客服系统的运转,需要对客服系统数据库中对已经完成的事件进行归档。

现有的事件归档架构中,通常是采用如下方法:事件归档引擎(事件归档引擎是一种任务调度执行程序,是可在规定时间内自动运行程序并完成执行的业务功能等的一种调度工具)作为调度任务在归档时间内触发并将业务所规定的生产数据事件信息从生产数据库(如mysql)中读取,并存入到历史数据库(如mysql)中。

生产数据库中是系统运转过程中产生的数据,但是为了提高生产环境的工作效率,需要控制生产数据库的数据量,因此会将一些不活跃的历史数据,自动同步到另一个数据库中,这个数据库就是历史数据库。归档后从历史数据库进行数据查询。如前所述电子商务领域的客服系统,用户可在客服系统中通过事件号码等数据查询历史数据库并从中获得已归档事件信息。

但是现有的事件归档方法,对于后续的数据查询和扩展存在一定 瓶颈:

1)数据字段不够灵活

对于mysql数据库来说,已归档事件必须严格按照生产数据的字段来进行设计,如果需要扩展字段,需要在应用端与数据库端,共同开发来完成,造成开发周期增强;

2)查询性能瓶颈

mysql归档的过程中,事件待归档事件信息存储到历史数据库中,但是如果在历史数据库中建立索引,一是会影响归档的性能,二是会占用大量的空间来存储索引,因此,为了保证归档性能,不能建立索引,从而导致在查询历史事件的性能下降;

3)数据查询范围有限

目前查询已归档的事件,由于未建立索引,因此,查询时只能查询事件基本信息,无法查询事件的追踪信息,聊天记录,发送短信内容等相关信息,严重影响用户体验和对归档资源的利用。



技术实现要素:

有鉴于此,本发明提供一种基于mongodb的事件归档和查询的方法和装置,能够实现事件基本信息快速查询,提高响应速度;同时还可进行相关信息的查询,扩大数据查询范围;此外,还可实现已归档事件的数据字段的自主扩展。

为实现上述目的,根据本发明的一个方面,提供了一种基于mongodb的事件归档和查询的方法。

本发明的基于mongodb的事件归档和查询的方法包括:利用事件归档引擎获取待归档事件的数据,所述数据包括待归档事件的基本信息数据和相关信息数据;将所述数据存入mysql中,同时将所述数据存入mongodb,其中,将所述数据存入mongodb的过程中,在所述数据的字段上建立索引;根据查询需求从所述mysql和/或mongodb中查询所需数据。

可选地,利用事件归档引擎获取待归档事件的数据包括利用clover分布式任务调度系统抓取待归档事件的数据。

可选地,在所述数据的字段上建立索引包括在所述数据的事件号字段上建立单键索引。

可选地,根据查询需求从所述mysql和/或mongodb中查询所需数据包括:根据查询需求,根据单键索引的字段从mongodb中查询所需数据和/或利用结构化查询语句从mysql中多表关联查询所需数据。

可选地,所述方法还包括:利用springdata框架中的pagingandsortingrepository接口实现在mongodb中分页查询所需数据。

为实现上述目的,根据本发明的另一方面,提供了一种基于mongodb的事件归档和查询的装置。

本发明的基于mongodb的事件归档和查询的装置包括:数据获取模块,用于利用事件归档引擎获取待归档事件的数据,所述数据包括待归档事件的基本信息数据和相关信息数据;归档模块,用于将所述数据存入mysql中,同时将所述数据存入mongodb,其中,将所述数据存入mongodb的过程中,在所述数据的字段上建立索引;查询模块,用于根据查询需求从所述mysql和/或mongodb中查询所需数据。

可选地,所述数据获取模块还用于:利用clover分布式任务调度系统抓取待归档事件的数据。

可选地,所述归档模块还用于:在所述数据的事件号字段上建立单键索引。

可选地,所述查询模块还用于:根据查询需求,根据单键索引的字段从mongodb中查询所需数据和/或利用结构化查询语句从mysql中多表关联查询所需数据。

可选地,所述查询模块还用于:利用springdata框架中的pagingandsortingrepository接口实现在mongodb中分页查询所需数据。

根据本发明的技术方案,通过利用事件归档引擎获取待归档事件的数据,并将数据存储到mysql,从而可以保证数据的持久化存储,并有利于后续查询过程中利用结构化查询语句进行复杂的多表关联查询;同时,通过将数据存储到mongodb中并建立索引,从而可以实现在保证归档性能的同时,打破数据查询的性能瓶颈,在保证事件基本信息的快速查询,提高响应速度的同时,还可以进一步扩大查询的范围;此外,鉴于mongodb中字段的可动态扩展性,从而可以保证已归档事件的数据字段自主扩展。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是现有技术的事件归档和查询方法的主要流程的示意图;

图2是根据本发明实施例的基于mongodb的事件归档和查询的方法的主要流程的示意图;

图3是根据本发明实施例的基于mongodb的事件归档和查询的方法的主要步骤的示意图;

图4是根据本发明实施例的基于mongodb的事件归档和查询的装置的主要模块的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发 明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是现有技术中事件归档和查询方法的主要流程的示意图。

如图1所示,现有技术的利用mysql进行事件归档和查询方法的主要流程如下,事件归档引擎作为调度任务在归档时间内触发并将业务所规定的生产数据事件信息从生产数据库(如mysql)中读取,并存入到历史数据库(如mysql)中。用户在需要查询的时候,可通过事件号码查询历史数据库并获得已归档事件信息的查询。

但是现有技术中,对于mysql数据库而言,字段一旦确定,若需要扩展一条数据的字段常常需要扩展整个表的字段,造成数据库空间资源的浪费;另,为了保障事件归档的性能,暂无法对归档数据建立索引,导致用户查询历史事件时的性能下降;此外,由于未建立索引,查询事件时,只能查询已归档事件的基本信息,无法查询事件的相关信息,如在电子商务的客服系统中,需要进一步了解事件的追踪信息、聊天记录、发送短信内容等相关信息。因此,现有的归档方法会影响用户的查询体验,造成归档资源的浪费。

图2是根据本发明实施例的基于mongodb的事件归档和查询的方法的主要流程的示意图。

如图2所示,本发明实施例的基于mongodb的事件归档和查询的方法的主要流程相对于图1的传统流程而言,增加了利用事件归档引擎中将待归档事件的数据写入mongodb的流程。此外,基于mongodb数据库的特点图2中的外部应用系统是b/s结构(browser/server,浏览器/服务器模式),客户端发起事件信息查询请求,可以直接请求 mongodb数据库完成事件归档记录的查询。

mongodb是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

本发明实施例中,使用mongodb作为归档的数据库之一,同时保留数据在mysql中的存储。如此,一方面可以利用mongodb作为一种扩展的存储方案,以便于在归档过程建立索引,方便对已归档数据的查询,并且有利于已归档数据字段的自主扩展;另一方面,可以在保障数据持久化存储的同时,利用结构化查询语言(sql)在mysql数据库进行复杂的多表关联查询,从而可以方便的获取数据。

图3是根据本发明实施例的基于mongodb的事件归档和查询的方法的主要步骤的示意图。

如图3所示,本发明实施例的基于mongodb的事件归档和查询的方法的主要步骤包括:

步骤s31:利用事件归档引擎获取待归档事件的数据,所述数据包括待归档事件的基本信息数据和相关信息数据。

事件归档引擎是一种任务调度执行程序,是在规定时间内自动运行程序并完成执行的业务功能等的一种调度工具。在本发明实施例中,利用事件归档引擎获取待归档事件的数据,并将数据存入数据库中。

在本发明的一个实施例中,利用事件归档引擎获取待归档事件的数据可以是利用clover分布式任务调度系统(使用java技术自主开发的调度系统)抓取待归档事件的数据。

事件归档引擎启动后,在生产数据库中检索待归档事件的数据,待归档事件的数据包括事件的基本信息数据和相关信息数据。例如在客户服务系统中,事件的数据信息可以包括:事件基本信息,以及事件追踪信息、事件日志、事件聊天记录等事件相关信息。事件归档引擎获取上述数据并将上述数据存入到数据库中。具体将数据存入数据库的过程,从步骤s32开始。

步骤s32:将所述数据存入mysql中,同时将所述数据存入mongodb,其中,将所述数据存入mongodb的过程中,在所述数据的字段上建立索引。

本发明实施例中,利用事件归档引擎从生产数据库抓取数据后,将数据存入历史数据库mysql和mongodb。其中,存入mongodb的过程如下:事件归档引擎从生产数据库中获取数据后,结合springdatamongodb所对外开放的接口(pagingandsortingrepository)进行基础数据的封装,调用保存方法来进行事件数据的归档操作。

归档的同时,为了便于后续的已归档数据的查询,可以在所述数据的字段上建立索引。例如可以是在所述数据的事件号字段上建立单键索引。

如前所述的电子商务领域的客户服务系统中,事件归档引擎获取待归档事件的数据。其中,事件基本信息即事件表,作为事件信息主表,其包含事件号、事件线索、事件追踪人、事件概要等相关信息,故可以在事件号字段上面建立单键索引,用于快速查询事件基本信息;此外,事件相关信息中,追踪记录表记录了事件声明周期、状态变更、 操作人等信息,可用事件号作为追踪信息与事件表的关联关系;聊天记录表记录了客服与客户之间的沟通信息,可用事件号作为聊天记录与事件表的关联关系;事件日志表记录了客服在处理事件是所遇到的问题描述、解决方案描述,同样用事件号作为事件日志与事件表的联系。

完成归档和索引的建立后,用户便可根据需求从历史数据库中进行数据查询。

步骤s33:根据查询需求从所述mysql和/或mongodb中查询所需数据。

根据查询需求,利用单键索引的字段从mongodb中查询所需数据和/或利用结构化查询语句从mysql中多表关联查询所需数据。

由于将数据归档到mongodb的过程中,对事件的数据进行了索引,因此,本发明实施例中在对数据进行查询的过程中,不仅可以快速的查询到事件的基础信息数据,而且可以查询到深度的事件相关信息数据。例如可以是,用户首先通过事件号将已归档事件的基本信息列表查询出来,数据就展示到浏览器的页面,再通过当前事件号分别查询事件记录的日志信息,事件追踪信息,事件的聊天记录信息,事件的发送短信信息等。当然如果涉及到利用结构化查询语句(sql)进行复杂的多表关联查询时,还是需要从mysql中进行数据的查询,这也是本发明技术方案中保留了将数据存储到mysql中的一个原因。

为了便于用户在浏览器种浏览数据,本发明一实施例中,支持对mongodb中已归档数据的分页查询。

虽然mongodb支持多种查询方式,但并没有直接的支持以动态查询条件支持分页查询的方法。本发明一实施例中,利用了springdata框 架中pagingandsortingrepository接口,编写动态拼装查询条件的工具,结合springframework的page对象实现了分页查询的功能。

根据本发明实施例的基于mongodb的事件归档和查询的方法可以看出,通过利用事件归档引擎获取待归档事件的数据,并将数据存储到mysql,从而可以保证数据的持久化存储,并有利于后续查询过程中利用结构化查询语句进行复杂的多表关联查询;同时,通过将数据存储到mongodb中并建立索引,从而可以实现在保证归档性能的同时,打破数据查询的性能瓶颈,在保证事件基本信息的快速查询,提高响应速度的同时,还可以进一步扩大查询的范围;此外,鉴于mongodb中字段的可动态扩展性,从而可以保证已归档事件的数据字段自主扩展。

图4是根据本发明实施例的基于mongodb的事件归档和查询的装置的主要模块的示意图。

如图4所示,本发明实施例的基于mongodb的事件归档和查询的装置40主要包括如下模块:数据获取模块401、归档模块402、查询模块403。

数据获取模块401用于利用事件归档引擎获取待归档事件的数据,所述数据包括待归档事件的基本信息数据和相关信息数据;归档模块402用于将所述数据存入mysql中,同时将所述数据存入mongodb,其中,将所述数据存入mongodb的过程中,在所述数据的字段上建立索引;查询模块403用于根据查询需求从所述mysql和/或mongodb中查询所需数据。

数据获取模块401还用于利用clover分布式任务调度系统抓取待归档事件的数据。

归档模块402还用于在所述数据的事件号字段上建立单键索引。

查询模块403还用于:根据查询需求,根据单键索引的字段从mongodb中查询所需数据和/或利用结构化查询语句从mysql中多表关联查询所需数据。

查询模块403还用于利用springdata框架中的pagingandsortingrepository接口实现在mongodb中分页查询所需数据。

从以上描述可以看出,通过利用事件归档引擎获取待归档事件的数据,并将数据存储到mysql,从而可以保证数据的持久化存储,并有利于后续查询过程中利用结构化查询语句进行复杂的多表关联查询;同时,通过将数据存储到mongodb中并建立索引,从而可以实现在保证归档性能的同时,打破数据查询的性能瓶颈,在保证事件基本信息的快速查询,提高响应速度的同时,还可以进一步扩大查询的范围;此外,鉴于mongodb中字段的可动态扩展性,从而可以保证已归档事件的数据字段自主扩展。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1