数据更新系统及方法与流程

文档序号:11177211阅读:294来源:国知局
数据更新系统及方法与流程

本发明涉及互联网技术领域,特别涉及一种数据更新系统及方法。



背景技术:

随着互联网的发展,海量数据的膨胀,垂直搜索的需求也日益增长。垂直搜索不同于网页搜索,是对某类信息的定向搜索。搜索平台可以作为搜索托管服务平台为一些用户(如企业用户或个人用户)提供垂直搜索服务,由用户在该搜索平台上上传指定的数据集合,以推出自身的个性化搜索服务。例如,手机管家等应用的提供商可以向搜索平台上传应用数据集合,从而使得手机管家用户可以在应用中进行搜索。

现有技术中,用户可以提供定期上传全量数据集合至搜索平台,也即是,用户可以把新增数据和已有数据保存成一个新的全量数据集合,并定期将该全量数据集合上传至搜索平台,以替换旧的全量数据集合,从而实现对全量数据的更新。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

由于用户只能定期上传更新的全量数据集合,且一旦进行上述替换过程,则可能需要暂停搜索服务,影响搜索服务的正常运行,更新的实时性差。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种数据更新系统及方法。所述技术方案如下:

一方面,提供了一种数据更新系统,包括:离线模块和在线模块;

所述离线模块,用于当检测到用户的第一数据文件,所述离线模块向所述在线模块申请新的存储空间,所述第一数据文件的数据类型为全量数据;

所述离线模块,还用于对接收到的第一数据文件进行处理,得到新版本的搜索服务数据,并将新版本的搜索服务数据推送至所述在线模块进行加载;

所述在线模块,用于分配新的存储空间,并在接收到所述新版本的搜索服务数据时,在所述新的存储空间中加载所述新版本的搜索服务数据;

所述在线模块用于在所述新版本的搜索服务数据未加载完成之前,保持由旧版本的搜索服务数据的在线状态,以提供搜索服务;

所述在线模块还用于在所述新版本的搜索服务数据加载完成时,将所述旧版本的搜索服务数据下线,并启动所述新版本的搜索服务数据,以提供所述搜索服务。

另一方面,提供了一种数据更新方法,包括:

当检测到用户的第一数据文件,申请新的存储空间,所述第一数据文件的数据类型为全量数据;

对接收到的第一数据文件进行处理,得到新版本的搜索服务数据,在所述新的存储空间中加载所述新版本的搜索服务数据;

在所述新版本的搜索服务数据未加载完成之前,保持由旧版本的搜索服务数据的在线状态,以提供搜索服务;

在所述新版本的搜索服务数据加载完成时,将所述旧版本的搜索服务数据下线,并启动所述新版本的搜索服务数据,以提供所述搜索服务。

本发明实施例提供的技术方案带来的有益效果是:

通过在数据更新过程中,一边进行新的全量数据的处理,一边采用原有全量数据来提供搜索服务,可以在不影响搜索服务正常运行的情况下,实现数据的更新,该过程不仅能够提高更新的实时性,且提供了更加灵活的更新方式。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数据更新系统的结构示意图;

图2是本发明实施例提供的数据更新系统的可能实现方式的架构示意图;

图3是本发明实施例提供的一种数据更新方法的流程图;

图4是根据一示例性实施例示出的一种服务器400的框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

对于检索服务来说,其不同阶段需要采用不同的更新方式,例如,刚刚开始提供检索服务时,必须提供一份全量数据集合,搜索平台才能根据这些数据中所包括的文档建立索引目录,以提供检索服务。而检索服务过程中,为了维护该搜索服务,用户可以上传批量增量数据。例如,应用管理业务定期增加了一批应用,因此用户需要提供这批应用数据,以生成新的索引目录,使得应用用户可以检索到这批应用。而检索服务过程中,用户还可能想要实时更新某一条数据,此时,用户可以实时更新单个文档。例如,视频业务新出了一个电影,那么用户就需要检索服务能够实时插入这个数据的索引,使这条数据能够立即被检索到,为了在保证正常运行的前提下,提供数据更新,提供了以下数据更新系统以及数据更新方法。

图1是本发明实施例提供的一种数据更新系统的结构示意图。参见图1,该数据更新系统包括:离线模块101和在线模块102;

离线模块101,用于当检测到用户的第一数据文件,所述离线模块101向所述在线模块102申请新的存储空间,所述第一数据文件的数据类型为全量数据;

所述离线模块101,还用于对接收到的第一数据文件进行处理,得到新版本的搜索服务数据,并将新版本的搜索服务数据推送至所述在线模块102进行加载;

所述在线模块102,用于分配新的存储空间,并在接收到所述新版本的搜索服务数据时,在所述新的存储空间中加载所述新版本的搜索服务数据;

所述在线模块102用于在所述新版本的搜索服务数据未加载完成之前,保持由旧版本的搜索服务数据的在线状态,以提供搜索服务;

所述在线模块102还用于在所述新版本的搜索服务数据加载完成时,将所述旧版本的搜索服务数据下线,并启动所述新版本的搜索服务数据,以提供所述搜索服务。

上述实施例提供的数据更新系统,通过在数据更新过程中,一边进行新的全量数据的处理,一边采用原有全量数据来提供搜索服务,可以在不影响搜索服务正常运行的情况下,实现数据的更新,该过程不仅能够提高更新的实时性, 且提供了更加灵活的更新方式。

在本发明提供的另一实施例中,所述离线模块101还用于当检测到所述用户的第二数据文件时,在对所述第一数据文件的加载完成后,处理所述第二数据文件,并将处理后的第二数据文件与所述新版本的搜索服务数据进行整合,所述第二数据文件的数据类型为批量增量数据。

该实施例提供的数据更新系统,不仅可以达到不影响搜索服务正常运行的目的,还可以保证在全量更新的同时,一旦发生增量批量更新,也可以在全量更新结束时,继续进行增量更新,保证了更新数据的先后顺序。

在本发明提供的另一实施例中,所述离线模块101还用于为所述第一数据文件中的多个文档添加第一时间戳,所述第一时间戳为0;所述离线模块101还用于为所述第二数据文件中的多个文档添加第二时间戳,所述第二时间戳为早于当前时间的时间戳;

所述离线模块101还用于确定所述第一数据文件和所述第二数据文件中的第一相同文档,保留所述第一相同文档中时间戳最大的文档,删除所述第一相同文档中其他文档。

通过上述实施例,由于全量数据中文档的时间戳均为0,则如果增量数据中具有与全量数据相同的文档,该文档的时间戳肯定是大于0的,因此,即使全量更新和增量更新的数据中有重复文档,也可以通过时间戳的特殊设置,删除时间戳小的文档,从而实现数据整合,避免数据冗余,也避免数据的错删等情况,可以保证最终提供搜索服务的数据均为最新数据。

需要说明的是,上述第一数据文件和第二数据文件对应的数据均可以是由用户上传至为该用户创建的云存储离线目录中,由该云存储离线目录以文件的形式进行存储。

另外,离线模块101还可以对接收到的数据进行完整性校验,如md5校验等,当完整性校验成功时,再进行数据处理,以避免数据出错。

在本发明提供的另一实施例中,所述离线模块101还用于当接收到所述用户发送的实时数据流时,将所述实时数据流分别加载至所述新的存储空间和原有存储空间。

需要说明的是,上述实时数据流可以是由用户上传至http服务器中,并由该服务器分别推送至在线模块和云存储离线目录中,以保证实时数据流一定会 存在于新的存储空间,而由于该实时数据流也落地于云存储离线目录中,则还可以避免数据丢失等情况发生。

在本发明提供的另一实施例中,所述离线模块101还用于为用户发送的实时数据流中的文档添加第三时间戳,所述第三时间戳用于指示当前时间;

所述在线模块102还用于根据所述新的存储空间中多个文档的时间戳和所述实时数据流中文档的第三时间戳,确定所述新的存储空间中和所述实时数据流中的第二相同文档,保留所述第二相同文档中时间戳最大的文档,删除所述第二相同文档中其他文档。

在该实施例中,如果需要同时加载全量数据、批量增量数据以及实时数据流中的实时文档,则加载过程中,可以由在线模块102进行时间戳的判断,以保留最新的文档,在保证正常运行的前提下,不仅提供了多种方式的灵活更新方法,且保证了数据的完整性。

在一种可能实现方式中,可以离线模块101可以包括如图2中的实时流服务器、云存储离线目录单元、文件流处理单元,而在线模块102可以包括在线加载单元以及云存储在线目录单元。增量数据和全量数据可以由用户上传至云存储离线目录单元,由云存储离线目录单元写入数据文件,并通过文件流处理单元对数据文件中所包含的文档进行数据整合和处理,并将处理结果发送至在线模块的云存储在线目录单元,以提供搜索服务,而实时流服务器则可以接收用户通过实时数据流发送的增量文档,并进行数据处理,再将处理后的增量文档分别推送至云存储离线目录单元以及在线加载单元,由在线加载单元进行加载,从而实现实时更新。该实现方式仅是本发明的一种示例,并不对本发明在实际应用时的具体硬件或功能划分造成限制。

上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

图3是本发明实施例提供的一种数据更新方法的流程图。参见图1和图3,该图3可以应用于如图1的系统架构,该方法具体包括:

301、当检测到用户的第一数据文件,离线模块101向在线模块102申请新的存储空间,所述第一数据文件的数据类型为全量数据,该第一数据文件的多个文档携带第一时间戳,该第一时间戳为0。

在离线模块101接收到用户上传的全量数据时,在将该全量数据存储为第一数据文件的过程中,可以为所述第一数据文件中的多个文档添加第一时间戳,所述第一时间戳为0。

对于数据文件,可以根据其命名不同,确定该数据文件的数据类型。对于全量数据和批量增量数据,可以命名为不同的文件名。例如,参见下表1,表1为不同数据类型的文件的命名格式。

表1

其中,全量数据索引文件是指根据全量数据生成的索引文件,该全量数据以全量数据文件(也即是本发明实施例提供的第一数据文件)的形式存储于云存储目录中,而批量增量数据文件(也即是本发明实施例他工的第二数据文件)、增量数据删除文件以及属性增量更新文件均是对部分数据进行操作的文件,如,批量增量数据文件可以包括将要添加至全量数据中的多个文档,而增量数据删除文件可以包括将要从全量数据中删除的多个文档。属性增量更新文件所包括的可以是多个用于描述文档属性的文档,该属性是指某一文档的网络互动参数,如点赞数、评论数、下载数等等,该属性可以用于对文档的评分,从而使得在向应用用户推送搜索结果时,可以根据对文档的评分高低进行有选择性的推送,以提高搜索结果的公信力和针对性。

302、在线模块102分配新的存储空间。

该分配新的存储空间可以是指在该用户的制定容量内为该用户分配新的存 储空间,如,该用户所制定的容量为500m,则从其空闲容量中分配新的存储空间,每次所分配的存储空间可以为固定值,也可以根据该第一数据文件的实际大小进行分配,本发明实施例对此不做限定。

303、在线模块102在所述新版本的搜索服务数据未加载完成之前,保持由旧版本的搜索服务数据的在线状态,以提供搜索服务。

该旧版本的搜索服务数据是指未进行更新前的搜索服务数据。其中,搜索服务数据包括应用服务商提供的多个文档,还包括搜索平台在对该多个文档进行数据处理时所生成的索引目录,该索引目录用于维护索引关键字与文档之间的对应关系,使得应用用户在搜索平台上输入某一个索引关键字,可以通过该索引目录,得到对应的搜索结果。

该步骤303是指在真正将第一数据文件加载完成之前,还继续采用旧版本的搜索服务数据提供搜索服务,使得应用用户仍能够使用该搜索服务,且对于应用用户来说,该数据更新过程完全在后台进行,对于应用用户不可见,不会影响该搜索服务的正常运行。

304、离线模块101对接收到的第一数据文件进行处理,得到新版本的搜索服务数据,并将新版本的搜索服务数据推送至所述在线模块102进行加载。

该处理过程即是对数据进行整理以及为第一数据文件生成相应索引目录的过程,本发明实施例对此不做限定。

305、在线模块102在接收到所述新版本的搜索服务数据时,在所述新的存储空间中加载所述新版本的搜索服务数据。

该加载过程可以是指将新版的搜索服务数据的传输和存储过程,本发明实施例对此不做具体限定。

306、当离线模块101检测到所述用户的第二数据文件时,在对所述第一数据文件的加载完成后,处理所述第二数据文件,并将处理后的第二数据文件与所述新版本的搜索服务数据进行整合,所述第二数据文件的数据类型为批量增量数据,第二数据文件中的多个文档携带第二时间戳,所述第二时间戳为早于当前时间的时间戳。

在所述离线模块101接收到用户上传的批量增量数据时,在将该批量增量数据存储为第二数据文件的过程中,可以为所述第二数据文件中的多个文档添加第二时间戳,所述第二时间戳为早于当前时间的时间戳。例如,该第二时间 戳可以为当前时间减去1年。

在实际场景中,可以为用户提供多种数据更新方式,如全量更新和增量更新,这两种更新方式很可能并发,因此,为了避免数据冗余或数据错误,需要按照一定顺序进行加载,先对全量数据进行处理和加载,在加载完成后,再对全量数据处理过程中所接收到且未处理的增量数据进行处理,也即是本发明实施例306的步骤。

将处理后的第二数据文件与所述新版本的搜索服务数据进行整合的过程,可以根据数据文件中文档的时间戳进行,具体可以包括以下步骤:确定所述第一数据文件和所述第二数据文件中的第一相同文档,保留所述第一相同文档中时间戳最大的文档,删除所述第一相同文档中其他文档。其中,第一相同文档是指文档名相同的文档,虽然第一数据文件中的某一文档和第二数据文件中的某一文档可能文档名相同,但是很有可能文档内容发生了变化,因此为了保证应用数据均为最新数据,可以采用时间戳来确定最新数据,并仅保留该确定的最新数据,即可以保证数据的完整性,还可以保证数据的时新性,进一步还避免了数据冗余。

例如,第一数据文件中的多个文档包括:

文档a(0);文档b(0);文档c(0);文档d(0);

第二数据文件中的多个文档包括:

文档b(t1);文档e(t1);t1=当前时间减去1年

其中,()中的数值为时间戳;

由于t1大于0,因此,对于第一相同文档中的文档b(0)和文档b(t1),删除文档b(0),保留文档b(t1)。

307、在线模块102在所述新版本的搜索服务数据加载完成时,将所述旧版本的搜索服务数据下线,并启动所述新版本的搜索服务数据,以提供所述搜索服务。

如果仅检测到第一数据文件,则在第一数据文件对应的新版本加载完成后,即可以将旧版本下线,并启动新版本来提供搜索服务,实现了在正常运行的前提下的数据更新,而如果同时并发了两种更新方式,即全量更新和增量更新,则可以在全量更新加载完成时,再进行增量更新的处理和加载,待增量更新也加载完成后,再启动由全量更新和增量更新对应的新版本,以提供所述搜索服 务。

308、当离线模块101接收到所述用户发送的实时数据流时,将所述实时数据流分别加载至所述新的存储空间和原有存储空间。

这种分别加载的方式可以使得新的存储空间中获取到最新数据,虽然实时数据流可能会在全量更新或增量更新的过程中灌入,但是,可以通过时间戳的方式保证数据的时新性,该实时数据流中的文档可以添加第三时间戳,所述第三时间戳用于指示当前时间,使得在后续数据整合过程中,可以保留时间戳最大的文档,保证了时间上的先后顺序。

309、根据所述新的存储空间中多个文档的时间戳和所述实时数据流中文档的第三时间戳,确定所述新的存储空间中和所述实时数据流中的第二相同文档,保留所述第二相同文档中时间戳最大的文档,删除所述第二相同文档中其他文档。

又例如,第一数据文件中的多个文档包括:

文档a(0);文档b(0);文档c(0);文档d(0);

第二数据文件中的多个文档包括:

文档b(t1);文档e(t1);t1=当前时间减去1年

实时数据流中的多个文档包括:

文档b(t2);文档f(t2),t2=当前时间

其中,()中的数值为时间戳;

由于t2大于t1和0,因此,对于第二相同文档中的文档b(0)、文档b(t1)和文档b(t2),删除文档b(0)、文档b(t1),保留文档b(t2)。

通过在数据更新过程中,一边进行新的全量数据的处理,一边采用原有全量数据来提供搜索服务,可以在不影响搜索服务正常运行的情况下,实现数据的更新,该过程不仅能够提高更新的实时性,且提供了更加灵活的更新方式。该实施例提供的系统和方法,提供了一套通用的流程支撑用户复杂的使用场景,提高了搜索平台的业务接入能力,同时也缩减了运维的人力成本。由于可以灵活的采用不同的方式进行推送数据,也大大提高了用户的体验。

图4是根据一示例性实施例示出的一种服务器400的框图。参照图4,服务器400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432 所代表的存储器资源,用于存储可由处理部件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述数据更新方法。

服务器400还可以包括一个电源组件426被配置为执行服务器400的电源管理,一个有线或无线网络接口450被配置为将服务器400连接到网络,和一个输入输出(i/o)接口458。服务器400可以操作基于存储在存储器432的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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