一种更新数据的方法及装置制造方法

文档序号:6489399阅读:104来源:国知局
一种更新数据的方法及装置制造方法
【专利摘要】本发明公开了一种更新数据的方法及装置,属于计算机领域。所述方法包括:接收数据产生源发送的数据更新请求消息,所述数据更新请求消息携带某数据类型和所述数据类型对应的第一文件的存储地址,所述第一文件包括所述数据产生源产生所述数据类型对应的第一数据;根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据;将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,所述数据目录用于存储数据类型与智能指针的对应关系。所述装置包括:第一接收模块、第一创建模块和第一更新模块。本发明能够减少对内存的消耗。
【专利说明】一种更新数据的方法及装置
【技术领域】
[0001]本发明涉及计算机及通信领域,特别涉及一种更新数据的方法及装置。
【背景技术】
[0002]互联网服务后台包括数据产生源和数据管理器,数据产生源可以产生某数据类型对应的新数据,此时数据管理器需要将自身管理的该数据类型对应的数据更新为该数据类型对应的新数据。
[0003]现有技术提供了一种更新数据的方法,可以具体为:数据管理器包括两个buffer和一个读指针,读指针指向的buffer为读buffer,读指针未指向的另一个buffer为写buffer,当数据产生源产生某数据类型对应的新数据时,数据管理器将写buffer中存储的该数据类型对应的数据更新为该数据类型对应的新数据,设置读指针指向写buffer,此时写buffer变为读buffer,原来的读buffer变为写buffer,将变后的写buffer存储的该数据类型对应的数据更新为该数据类型对应的新数据,如此数据管理器完成数据更新。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]读写两个buffer都为内存中的两个存储队列,现有技术在更新数据时,将每个新数据都存储在两个buffer内,即每个新数据都在内存中存储两份,对内存消耗巨大。

【发明内容】

[0006]为了减少对内存的消耗,本发明提供了提供了一种更新数据的方法及装置。所述技术方案如下:
[0007]—种更新数据的方法,所述方法包括:
[0008]接收数据产生源发送的数据更新请求消息,所述数据更新请求消息携带某数据类型和所述数据类型对应的第一文件的存储地址,所述第一文件包括所述数据产生源产生所述数据类型对应的第一数据;
[0009]根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据;
[0010]将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,所述数据目录用于存储数据类型与智能指针的对应关系。
[0011]所述根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据,包括:
[0012]根据所述第一文件的存储地址,从文件系统中获取所述第一文件,所述文件系统用于存储所述数据产生源产生的文件;
[0013]将所述第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,创建智能指针指向所述第一数据。
[0014]所述将所述第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,创建智能指针指向所述第一数据,包括:[0015]根据所述数据类型,从已存储的数据类型与加载函数的对应关系中获取对应的加载函数;
[0016]通过所述获取的加载函数将所述第一文件包括的第一数据加载到数据管理器的内存中;
[0017]如果加载成功,则创建智能指针指向所述第一数据。
[0018]所述将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,包括:
[0019]对读智能指针指向的数据目录进行复制,得到复制的数据目录;
[0020]根据所述数据类型,从所述复制的数据目录中查找所述数据类型对应的智能指针;
[0021]将所述数据类型对应的智能指针更新为指向所述第一数据的智能指针;
[0022]设置所述读智能指针指向所述复制的数据目录。
[0023]所述根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存之后,还包括:
[0024]如果加载成功,则发送加载成功通知消息给所述数据产生源,使所述数据产生源发送所述数据更新请求消息给未请求更新数据的数据管理器;
[0025]如果加载失败,则发送加载失败通知消息给所述数据产生源,使所述数据产生源重新产生所述数据类型对应的第一数据并封装成第一文件。
[0026]所述发送加载失败通知消息给所述数据产生源之后,还包括:
[0027]接收所述数据产生源发送的数据更新失败消息,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据;
[0028]根据所述第二文件的存储地址将所述第二数据加载到所述数据管理器的内存中,创建智能指针指向所述第二数据;
[0029]将所述数据目录中存储的所述数据类型对应的智能指针更新为指向所述第二数据的智能指针。
[0030]所述方法还包括:
[0031]接收数据使用方发送的数据请求消息,所述数据请求消息携带待请求的数据的数据类型;
[0032]根据所述待请求的数据的数据类型从所述数据目录中获取指向所述待请求的数据的智能指针;
[0033]发送指向所述待请求的数据的智能指针给所述数据使用方,使所述数据使用方根据指向所述待请求的数据的智能指针获取所述待请求的数据。
[0034]一种更新数据的方法,所述方法包括:
[0035]产生某数据类型对应的第一数据并封装成第一文件;
[0036]将所述第一文件存储在文件系统中并获取所述第一文件的存储地址;
[0037]发送数据更新请求消息给数据管理器,所述数据更新请求消息携带所述数据类型和所述第一文件的存储地址,以请求所述数据管理器更新数据。[0038]所述发送数据更新请求消息给数据管理器之后,还包括:
[0039]接收所述数据管理器发送的加载成功通知消息,发送所述数据更新请求消息给未请求更新数据的数据管理器。
[0040]所述发送数据更新请求消息给数据管理器之后,还包括:
[0041]接收所述数据管理器发送的加载失败通知消息,重新产生所述数据类型对应的第一数据并封装成第一文件。
[0042]所述接收所述数据管理器发送的加载失败通知消息之后,还包括:
[0043]发送数据更新失败消息给已请求更新数据的数据管理器,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据。
[0044]一种更新数据的装置,所述装置包括:
[0045]第一接收模块,用于接收数据产生源发送的数据更新请求消息,所述数据更新请求消息携带某数据类型和所述数据类型对应的第一文件的存储地址,所述第一文件包括所述数据产生源产生所述数据类型对应的第一数据;
[0046]第一创建模块,用于根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据;
[0047]第一更新模块,用于将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,所述数据目录用于存储数据类型与智能指针的对应关系。
[0048]所述第一创建模块包括:
[0049]获取单元,用于根据所述第一文件的存储地址,从文件系统中获取所述第一文件,所述文件系统用于存储所述数据产生源产生的文件;
[0050]创建单元,用于将所述第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,创建智能指针指向所述第一数据。
[0051]所述创建单元包括:
[0052]获取子单元,用于根据所述数据类型,从已存储的数据类型与加载函数的对应关系中获取对应的加载函数;
[0053]加载子单元,用于通过所述获取的加载函数将所述第一文件包括的第一数据加载到数据管理器的内存中;
[0054]创建子单元,用于如果加载成功,则创建智能指针指向所述第一数据。
[0055]所述更新模块包括:
[0056]复制单元,用于对读智能指针指向的数据目录进行复制,得到复制的数据目录;
[0057]查找单元,用于根据所述数据类型,从所述复制的数据目录中查找所述数据类型对应的智能指针;
[0058]更新单元,用于将所述数据类型对应的智能指针更新为指向所述第一数据的智能指针;
[0059]设置单元,用于设置所述读智能指针指向所述复制的数据目录。
[0060]所述装置还包括:
[0061]第一发送模块,用于如果加载成功,则发送加载成功通知消息给所述数据产生源,使所述数据产生源发送所述数据更新请求消息给未请求更新数据的数据管理器;
[0062]第二发送模块,用于如果加载失败,则发送加载失败通知消息给所述数据产生源,使所述数据产生源重新产生所述数据类型对应的第一数据并封装成第一文件。
[0063]所述装置还包括:
[0064]第二接收模块,用于接收所述数据产生源发送的数据更新失败消息,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据;
[0065]第二创建模块,用于根据所述第二文件的存储地址将所述第二数据加载到所述数据管理器的内存中,创建智能指针指向所述第二数据;
[0066]第二更新模块,用于将所述数据目录中存储的所述数据类型对应的智能指针更新为指向所述第二数据的智能指针。
[0067]所述装置还包括:
[0068]第三接收模块,用于接收数据使用方发送的数据请求消息,所述数据请求消息携带待请求的数据的数据类型;
[0069]第一获取模块,用于根据所述待请求的数据的数据类型从所述数据目录中获取指向所述待请求的数据的智能指针;
[0070]第三发送模块,用于发送指向所述待请求的数据的智能指针给所述数据使用方,使所述数据使用方根据指向所述待请求的数据的智能指针获取所述待请求的数据。
[0071]一种更新数据的装置,所述装置包括:
[0072]第一产生模块,用于产生某数据类型对应的第一数据并封装成第一文件;
[0073]第二获取模块,用于将所述第一文件存储在文件系统中并获取所述第一文件的存储地址;
[0074]第四发送模块,用于发送数据更新请求消息给数据管理器,所述数据更新请求消息携带所述数据类型和所述第一文件的存储地址,以请求所述数据管理器更新数据。
[0075]所述装置还包括:
[0076]第四接收模块,用于接收所述数据管理器发送的加载成功通知消息,发送所述数据更新请求消息给未请求更新数据的数据管理器。
[0077]所述装置还包括:
[0078]第二产生模块,用于接收所述数据管理器发送的加载失败通知消息,重新产生所述数据类型对应的第一数据并封装成第一文件。
[0079]所述装置还包括:
[0080]第五发送模块,用于发送数据更新失败消息给已请求更新数据的数据管理器,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据。
[0081]在本发明实施例中,接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括数据产生源产生所述数据类型对应的第一数据,根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向第一数据,将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,如此,只需要在内存中存储一份数据,而数据目录中的智能指针的容量都较小,从而减少对内存的消耗。
【专利附图】

【附图说明】
[0082]图1是本发明实施例1提供的一种更新数据的方法流程图;
[0083]图2是本发明实施例2互联网服务后台的结构示意图;
[0084]图3是本发明实施例2提供的一种更新数据的方法流程图;
[0085]图4是本发明实施例3提供的一种更新数据的方法流程图;
[0086]图5是本发明实施例4提供的一种更新数据的装置结构示意图;
[0087]图6是本发明实施例5提供的一种更新数据的装置结构示意图。
【具体实施方式】
[0088]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0089]实施例1
[0090]如图1所示,本发明实施例提供了一种更新数据的方法,包括:
[0091]步骤101:接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括数据产生源产生该数据类型对应的第一数据;
[0092]步骤102:根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向第一数据;
[0093]步骤103:将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,数据目录用于存储数据类型与智能指针的对应关系。
[0094]在本发明实施例中,接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括数据产生源产生所述数据类型对应的第一数据,根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向第一数据,将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,如此,只需要在内存中存储一份数据,而数据目录中的智能指针的容量都较小,从而减少对内存的消耗。
[0095]实施例2
[0096]本发明实施例提供了 一种更新数据的方法。
[0097]其中,本实施例应用于如图2所示的互联网服务后台,互联网服务后台包括数据产生源、一个或多个数据管理器和一个或多个数据使用方,数据产生源用于产生某数据类型对应的数据,数据管理器用于管理数据产生源产生的数据,数据使用方用于从数据管理器中获取需要使用的数据。
[0098]其中,当数据产生源产生某数据类型对应的数据,数据管理器需要通过本实施例提供的方法来将自身存储的该数据类型对应的数据更新该数据类型对应的数据。参见图3,该方法包括:[0099]步骤201:数据产生源产生某数据类型对应的第一文件,第一文件中包括第一数据;
[0100]具体地,数据产生源产生某数据类型对应的第一数据,将该数据类型对应的第一数据封装成第一文件。
[0101]步骤202:数据产生源将第一文件存储在文件系统中,获取存储第一文件的存储地址;
[0102]具体地,数据产生源将第一文件推送给文件系统,文件系统存储第一文件,并将存储第一文件的存储地址发送给数据产生源。
[0103]其中,文件系统中还可能存在该数据类型对应的第二文件,第二文件包括第二数据;第二数据为数据产生源在产生第一数据之前最近一次产生该数据类型对应的数据,第二文件为数据产生源将第二数据封装形成的文件。
[0104]步骤203:数据产生源发送数据更新请求消息给数据管理器,该数据更新请求消息携带该数据类型和第一文件的存储地址;
[0105]其中,数据产生源内预先设置一个或多个数据管理器的地址,数据产生源产生该数据类型对应的第一数据后,首先选择一批数据管理器,根据选择的数据管理器的地址向选择的数据管理器发送数据更新请求消息,以请求选择的数据管理器更新数据。
[0106]步骤204:数据管理器接收该数据更新请求消息,根据该数据更新请求消息携带的第一文件的存储地址获取第一文件;
[0107]具体地,数据管理器接收该数据更新请求消息,根据该数据更新请求消息携带的第一文件的存储地址,从文件系统中获取第一文件。
[0108]其中,在本发明实施例中,数据产生源将该数据类型对应的第一文件存储在文件系统后,发送数据更新请求消息请求数据管理器进行数据更新;现有技术是数据管理器检测数据产生源是否有新数据需要更新,如果有,则从数据产生源拉取新数据并进行数据更新,而数据管理器检测数据产生源是否有新数据需要较长的检测时间,因此本发明实施例相比现有技术可以减少数据产生源产生数据到数据管理器进行数据更新之间的时间差,提高了数据更新的实时性。
[0109]步骤205:数据管理器加载第一文件包括的第一数据到内存中,如果加载成功,创建一个智能指针指向第一数据;
[0110]具体地,数据管理器根据该数据更新请求消息携带的数据类型,从已存储的数据类型与加载函数的对应关系中获取该数据类型对应的加载函数,通过该数据类型对应的加载函数将第一文件包括的第一数据加载到数据管理器的内存中,如果加载成功,则创建一个智能指针指向第一数据。
[0111]其中,每个数据类型对应一个加载函数,对于任一个数据类型,该数据类型对应的加载函数用于将该数据类型的数据加载到数据管理器的内存中。
[0112]其中,在本实施例中,事先将每个数据类型和每个数据类型对应的加载函数存储在数据类型与加载函数的对应关系中。
[0113]其中,数据管理器通过该数据类型对应的加载函数将第一文件包括的第一数据加载到数据管理器的内存中,且该数据类型对应的加载函数在加载第一文件包括的第一数据时,如果成功地将第一文件包括的第一数据加载到数据管理器的内存中,则该数据类型对应的加载函数向数据管理器返回加载成功消息,如果没有成功地将第一文件包括的第一数据加载到数据管理器的内存中,则该数据类型对应的加载函数向数据管理器返回加载失败消息。
[0114]其中,如果数据产生源产生该数据类型对应的第一数据存在问题,例如该数据类型对应的第一数据不完整,则该数据类型对应的加载函数无法成功地将该数据类型对应的第一数据加载到数据管理器的内存中;如果数据产生源产生该数据类型对应的第一数据不存在问题,则该数据类型对应的加载函数能够成功地将该数据类型对应的第一数据加载到数据管理器的内存中。
[0115]其中,如果成功地将该数据类型对应的第一数据加载到数据管理器的内存中,则数据管理器发送加载成功通知消息给数据产生源,数据产生源接收加载成功通知消息后再发送数据更新请求消息给其他数据管理器;如果没有成功地将该数据类型对应的第一数据加载到数据管理器的内存中,数据管理器发送加载失败通知消息给数据产生源,数据产生源接收加载失败通知消息后发送数据更新失败消息给数据产生源已请求数据更新的数据管理器,且该数据更新失败消息携带该数据类型和该数据类型对应的第二文件的存储地址。
[0116]其中,数据产生源接收加载失败通知消息后重新产生该数据类型对应的第一数据,并将重新产生的第一数据封装成第一文件,将第一文件存储在文件系统,并获取第一文件的存储地址,然后重新发送数据更新请求消息给数据管理器,该数据更新请求消息携带该数据类型和第一文件的存储地址。
[0117]其中,在本实施例中,数据产生源每次只向一批数据管理器发送数据更新请求消息,来请求该批数据管理器更新数据,当接收到数据管理器返回的加载成功通知消息,才向下一批数据管理器发送数据更新请求消息,来请求下一批数据管理器更新数据;当接收到数据管理器返回的加载失败通知消息,则重新产生该数据类型对应的第一数据,如此,当数据产生源产生存在问题的数据时,相比目前每个数据管理器同时向数据产生源拉取新数据的方式,本实施例可以避免每个数据管理器都同时获取到存在问题的数据,从而可以避免每个数据管理器因存在问题的数据而导致每个数据管理器服务异常退出。
[0118]步骤206:数据管理器对已存储的读智能指针指向的数据目录进行复制,得到复制的数据目录,其中,数据目录用于存储数据的数据类型与智能指针的对应关系;
[0119]其中,对于数据目录中的任一个智能指针,该智能指针内包括一个引用次数,该引用次数用于表示当前正在使用该智能指针的使用者的个数。当对读智能指针指向的数据目录进行复制得到复制的数据目录时,此时读智能指针指向的数据目录中包括的每个智能指针都增加了一个使用者,该使用者为复制的数据目录,且读智能指针指向的数据目录中包括的每个智能指针分别增加自身包括的引用次数。
[0120]步骤207:数据管理器在复制的数据目录中将该数据更新请求消息携带的数据类型对应的智能指针更新为指向第一数据的智能指针,并设置读智能指针指向复制的数据目录,如此实现更新该数据类型对应的数据;
[0121]具体地,根据该数据更新请求消息携带的数据类型从复制的数据目录中获取对应的智能指针,将获取的智能指针更新为指向第一数据的智能指针。
[0122]其中,将获取的智能指针更新为第一数据对应的智能指针后,复制的数据目录为第一数据对应的智能指针的一个使用者,且指向第一数据的智能指针增加自身包括的引用次数。
[0123]其中,将获取的智能指针更新为拽向第一数据的智能指针后,获取的智能指针就少了一个使用者,所以获取的智能指针会自动地减少自身包括的引用次数,且获取的智能指针判断减少的引用次数是否为零,如果零,则从内存中将自身指向的数据删除。
[0124]其中,数据管理器设置读智能指针指向复制的数据目录后,会将该读智能指针指向的原数据目录删除;此时原数据目录包括的智能指针都少了一个使用者,所以原数据目录中包括的每个智能指针分别减少自身包括的引用次数,且原数据目录中包括的智能指针判断减少的引用次数,如果为零,从内存中将自身指向的数据删除。
[0125]其中,需要说明的是:当数据管理器接收到数据产生源发送的数据更新失败消息,该数据更新失败消息携带数据类型和该数据类型对应的第二文件的存储地址,数据管理器根据第二文件的存储地址从文件系统中获取第二文件,将第二文件包括的第二数据加载到内存中,创建智能指针指向第二数据,对读智能指针指向的数据目录进行复制,得到复制的数据目录,根据该数据类型从复制的数据目录中查找对应的智能指针,将查找的智能指针更新为指向第二数据的智能指针,设置读智能指针指向复制的数据目录。
[0126]其中,当数据使用方需要使用数据时,数据使用方可以通过如下流程来向数据管理器请求待请求的数据,包括:
[0127]步骤208:数据管理器接收数据使用方发送的数据请求消息,该数据请求消息携带待请求的数据的数据类型;
[0128]其中,当数据使用方需要使用数据时,数据使用方发送数据请求消息给数据管理器,该数据请求消息携带待请求的数据的数据类型。
[0129]步骤209:数据管理器根据待请求的数据的数据类型从数据目录中获取指向待请求的数据的智能指针;
[0130]具体地,数据管理器查找已存储的读智能指针指向的数据目录,根据待请求的数据的数据类型,从查找的数据目录中获取指向待请求的数据的智能指针。
[0131]步骤210:数据管理器将指向待请求的数据的智能指针发送的给数据使用方。
[0132]其中,数据使用方接收数据管理器发送的指向待请求的数据的智能指针,根据指向待请求的数据的智能指针从数据管理器中获取待请求的数据;数据使用方当获取到待请求的数据后可以释放指向待请求的数据的智能指针。
[0133]其中,当数据使用方接收到指向待请求的数据的智能指针后,指向待请求的数据的智能指针增加自身包括的引用次数;当数据使用方释放指向待请求的数据的智能指针后,指向待请求的数据的智能指针减少自身包括的引用次数。
[0134]在本发明实施例中,接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括数据产生源产生所述数据类型对应的第一数据,根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向第一数据,将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,如此,只需要在内存中存储一份数据,而数据目录中的智能指针的容量都较小,从而减少对内存的消耗;数据产生源将该数据类型对应的第一文件存储文件系统后,发送数据更新请求消息请求数据管理器进行数据更新;可以减少数据产生源产生数据到数据管理器进行数据更新之间的时间差,提高了数据更新的实时性。
[0135]实施例3
[0136]如图4所示,本发明实施例提供了一种更新数据的方法,包括:
[0137]步骤301:产生某数据类型对应的第一数据并封装成第一文件;
[0138]步骤302:将第一文件存储在文件系统中并获取第一文件的存储地址;
[0139]步骤303:发送数据更新请求消息给数据管理器,该数据更新请求消息携带该数据类型和第一文件的存储地址,以请求数据管理器更新数据。
[0140]在本发明实施例中,将产生某数据类型对应的第一数据并封装成第一文件,该数据类型对应的第一文件存储文件系统后,发送数据更新请求消息请求数据管理器进行数据更新,可以减少产生数据到数据管理器进行数据更新之间的时间差,提高了数据更新的实时性。
[0141]实施例4
[0142]如图5所示,本发明实施例提供了一种更新数据的装置,包括:
[0143]第一接收模块401,用于接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括所述数据产生源产生该数据类型对应的第一数据;
[0144]第一创建模块402,用于根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据;
[0145]第一更新模块403,用于将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,数据目录用于存储数据类型与智能指针的对应关系。
[0146]其中,第一创建模块402包括:
[0147]获取单元,用于根据第一文件的存储地址,从文件系统中获取第一文件,文件系统用于存储数据产生源产生的文件;
[0148]创建单元,用于将第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,仓Il建智能指针指向所述第一数据。
[0149]其中,创建单元包括:
[0150]获取子单元,用于根据该数据类型,从已存储的数据类型与加载函数的对应关系中获取对应的加载函数;
[0151]加载子单元,用于通过获取的加载函数将第一文件包括的第一数据加载到数据管理器的内存中;
[0152]创建子单元,用于如果加载成功,则创建智能指针指向第一数据。
[0153]其中,更新模块403包括:
[0154]复制单元,用于对读智能指针指向的数据目录进行复制,得到复制的数据目录;
[0155]查找单元,用于根据该数据类型,从复制的数据目录中查找该数据类型对应的智能指针;
[0156]更新单元,用于将该数据类型对应的智能指针更新为指向第一数据的智能指针;
[0157]设置单元,用于设置读智能指针指向复制的数据目录。
[0158]进一步地,该装置还包括:[0159]第一发送模块,用于如果加载成功,则发送加载成功通知消息给数据产生源,使数据产生源发送数据更新请求消息给未请求更新数据的数据管理器;
[0160]第二发送模块,用于如果加载失败,则发送加载失败通知消息给数据产生源,使数据产生源重新产生该数据类型对应的第一数据并封装成第一文件。
[0161]地一步地,该装置还包括:
[0162]第二接收模块,用于接收数据产生源发送的数据更新失败消息,数据更新失败消息携带该数据类型和该数据类型对应的第二文件的存储地址,第二文件包括该数据类型对应的第二数据,第二数据为数据产生源在产生第一数据之前最近一次产生数据类型对应的数据;
[0163]第二创建模块,用于根据第二文件的存储地址将第二数据加载到数据管理器的内存中,创建智能指针指向第~数据;
[0164]第二更新模块,用于将数据目录中存储的该数据类型对应的智能指针更新为指向第二数据的智能指针。
[0165]进一步地,该装置还包括:
[0166]第三接收模块,用于接收数据使用方发送的数据请求消息,该数据请求消息携带待请求的数据的数据类型;
[0167]第一获取模块,用于根据待请求的数据的数据类型从数据目录中获取指向待请求的数据的智能指针;
[0168]第三发送模块, 用于发送指向待请求的数据的智能指针给数据使用方,使数据使用方根据指向待请求的数据的智能指针获取待请求的数据。
[0169]在本发明实施例中,接收数据产生源发送的数据更新请求消息,该数据更新请求消息携带某数据类型和该数据类型对应的第一文件的存储地址,第一文件包括数据产生源产生所述数据类型对应的第一数据,根据第一文件的存储地址将第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向第一数据,将数据目录中存储的该数据类型对应的智能指针更新为指向第一数据的智能指针,如此,只需要在内存中存储一份数据,而数据目录中的智能指针的容量都较小,从而减少对内存的消耗。
[0170]实施例5
[0171]如图6所示,本发明实施例提供了一种更新数据的装置,包括:
[0172]第一产生模块501,用于产生某数据类型对应的第一数据并封装成第一文件;
[0173]第二获取模块502,用于将第一文件存储在文件系统中并获取第一文件的存储地址;
[0174]第四发送模块503,用于发送数据更新请求消息给数据管理器,该数据更新请求消息携带该数据类型和第一文件的存储地址,以请求数据管理器更新数据。
[0175]进一步地,该装置还包括:
[0176]第四接收模块,用于接收数据管理器发送的加载成功通知消息,发送该数据更新请求消息给未请求更新数据的数据管理器。
[0177]进一步地,该装置还包括:
[0178]第二产生模块,用于接收数据管理器发送的加载失败通知消息,重新产生该数据类型对应的第一数据并封装成第一文件。[0179]进一步地,该装置还包括:
[0180]第五发送模块,用于发送数据更新失败消息给已请求更新数据的数据管理器,该数据更新失败消息携带该数据类型和该数据类型对应的第二文件,第二文件包括该数据类型对应的第二数据,第二数据为数据产生源在产生第一数据之前最近一次产生数据类型对应的数据。
[0181]在本发明实施例中,将产生某数据类型对应的第一数据并封装成第一文件,该数据类型对应的第一文件存储文件系统后,发送数据更新请求消息请求数据管理器进行数据更新,可以减少产生数据到数据管理器进行数据更新之间的时间差,提高了数据更新的实时性。
[0182]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0183]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种更新数据的方法,其特征在于,所述方法包括: 接收数据产生源发送的数据更新请求消息,所述数据更新请求消息携带某数据类型和所述数据类型对应的第一文件的存储地址,所述第一文件包括所述数据产生源产生所述数据类型对应的第一数据; 根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则仓Il建智能指针指向所述第一数据; 将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,所述数据目录用于存储数据类型与智能指针的对应关系。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据,包括: 根据所述第一文件的存储地址,从文件系统中获取所述第一文件,所述文件系统用于存储所述数据产生源产生的文件; 将所述第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,创建智能指针指向所述第一数据。
3.如权利要求2所述的方法,其特征在于,所述将所述第一文件包括的第一数据加载至擞据管理器的内存,如果加载成功,创建智能指针指向所述第一数据,包括: 根据所述数据类型,从已存储的数据类型与加载函数的对应关系中获取对应的加载函数; 通过所述获取的加载函数将所述第一文件包括的第一数据加载到数据管理器的内存中; 如果加载成功,则创建智能指针指向所述第一数据。
4.如权利要求1所述的方法,其特征在于,所述将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,包括: 对读智能指针指向的数据目录进行复制,得到复制的数据目录; 根据所述数据类型,从所述复制的数据目录中查找所述数据类型对应的智能指针; 将所述数据类型对应的智能指针更新为指向所述第一数据的智能指针; 设置所述读智能指针指向所述复制的数据目录。
5.如权利要求1所述的方法,其特征在于,所述根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存之后,还包括: 如果加载成功,则发送加载成功通知消息给所述数据产生源,使所述数据产生源发送所述数据更新请求消息给未请求更新数据的数据管理器; 如果加载失败,则发送加载失败通知消息给所述数据产生源,使所述数据产生源重新产生所述数据类型对应的第一数据并封装成第一文件。
6.如权利要求5所述的方法,其特征在于,所述发送加载失败通知消息给所述数据产生源之后,还包括: 接收所述数据产生源发送的数据更新失败消息,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据; 根据所述第二文件的存储地址将所述第二数据加载到所述数据管理器的内存中,创建智能指针指向所述第二数据; 将所述数据目录中存储的所述数据类型对应的智能指针更新为指向所述第二数据的智能指针。
7.如权利要求1至6任一项权利要求所述的方法,其特征在于,所述方法还包括: 接收数据使用方发送的数据请求消息,所述数据请求消息携带待请求的数据的数据类型; 根据所述待请求的数据的数据类型从所述数据目录中获取指向所述待请求的数据的智能指针; 发送指向所述待请求的数据的智能指针给所述数据使用方,使所述数据使用方根据指向所述待请求的数据的智能指针获取所述待请求的数据。
8.一种更新数据的方法,其特征在于,所述方法包括: 产生某数据类型对应的第一数据并封装成第一文件; 将所述第一文件存储在文件系统中并获取所述第一文件的存储地址; 发送数据更新请求消息给 数据管理器,所述数据更新请求消息携带所述数据类型和所述第一文件的存储地址,以请求所述数据管理器更新数据。
9.如权利要求8所述的方法,其特征在于,所述发送数据更新请求消息给数据管理器之后,还包括: 接收所述数据管理器发送的加载成功通知消息,发送所述数据更新请求消息给未请求更新数据的数据管理器。
10.如权利要求8所述的方法,其特征在于,所述发送数据更新请求消息给数据管理器之后,还包括: 接收所述数据管理器发送的加载失败通知消息,重新产生所述数据类型对应的第一数据并封装成第一文件。
11.如权利要求10所述的方法,其特征在于,所述接收所述数据管理器发送的加载失败通知消息之后,还包括: 发送数据更新失败消息给已请求更新数据的数据管理器,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据。
12.一种更新数据的装置,其特征在于,所述装置包括: 第一接收模块,用于接收数据产生源发送的数据更新请求消息,所述数据更新请求消息携带某数据类型和所述数据类型对应的第一文件的存储地址,所述第一文件包括所述数据产生源产生所述数据类型对应的第一数据; 第一创建模块,用于根据所述第一文件的存储地址将所述第一数据加载到数据管理器的内存,如果加载成功,则创建智能指针指向所述第一数据; 第一更新模块,用于将数据目录中存储的所述数据类型对应的智能指针更新为指向所述第一数据的智能指针,所述数据目录用于存储数据类型与智能指针的对应关系。
13.如权利要求12所述的装置,其特征在于,所述第一创建模块包括: 获取单元,用于根据所述第一文件的存储地址,从文件系统中获取所述第一文件,所述文件系统用于存储所述数据产生源产生的文件; 创建单元,用于将所述第一文件包括的第一数据加载到数据管理器的内存,如果加载成功,仓Il建智能指针指向所述第一数据。
14.如权利要求13所述的装置,其特征在于,所述创建单元包括: 获取子单元,用于根据所述数据类型,从已存储的数据类型与加载函数的对应关系中获取对应的加载函数; 加载子单元,用于通过所述获取的加载函数将所述第一文件包括的第一数据加载到数据管理器的内存中; 创建子单元,用于如果加载成功,则创建智能指针指向所述第一数据。
15.如权利要求12所述的装置,其特征在于,所述更新模块包括: 复制单元,用于对读智能指针指向的数据目录进行复制,得到复制的数据目录; 查找单元,用于根据所述数据类型,从所述复制的数据目录中查找所述数据类型对应的智能指针; 更新单元,用于将所述数据类型对应的智能指针更新为指向所述第一数据的智能指针; 设置单元,用于设置所述读智能指针指向所述复制的数据目录。
16.如权利要求12所述的装置,其特征在于,所述装置还包括: 第一发送模块,用于如果加载成功,则发送加载成功通知消息给所述数据产生源,使所述数据产生源发送所述数据更新请求消息给未请求更新数据的数据管理器; 第二发送模块,用于如果加载失败,则发送加载失败通知消息给所述数据产生源,使所述数据产生源重新产生所述数据类型对应的第一数据并封装成第一文件。
17.如权利要求16所述的装置,其特征在于,所述装置还包括: 第二接收模块,用于接收所述数据产生源发送的数据更新失败消息,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据; 第二创建模块,用于根据所述第二文件的存储地址将所述第二数据加载到所述数据管理器的内存中,创建智能指针指向所述第二数据; 第二更新模块,用于将所述数据目录中存储的所述数据类型对应的智能指针更新为指向所述第二数据的智能指针。
18.如权利要求12至17任一项权利要求所述的装置,其特征在于,所述装置还包括: 第三接收模块,用于接收数据使用方发送的数据请求消息,所述数据请求消息携带待请求的数据的数据类型; 第一获取模块,用于根据所述待请求的数据的数据类型从所述数据目录中获取指向所述待请求的数据的智能指针; 第三发送模块,用于发送指向所述待请求的数据的智能指针给所述数据使用方,使所述数据使用方根据指向所述待请求的数据的智能指针获取所述待请求的数据。
19.一种更新数据的装置,其特征在于,所述装置包括: 第一产生模块,用于产生某数据类型对应的第一数据并封装成第一文件; 第二获取模块,用于将所述第一文件存储在文件系统中并获取所述第一文件的存储地址; 第四发送模块,用于发送数据更新请求消息给数据管理器,所述数据更新请求消息携带所述数据类型和所述第一文件的存储地址,以请求所述数据管理器更新数据。
20.如权利要求19所述的装置,其特征在于,所述装置还包括: 第四接收模块,用于接收所述数据管理器发送的加载成功通知消息,发送所述数据更新请求消息给未请求更新数据的数据管理器。
21.如权利要求19所述的装置,其特征在于,所述装置还包括: 第二产生模块,用于接收所述数据管理器发送的加载失败通知消息,重新产生所述数据类型对应的第一数据并封装成第一文件。
22.如权利要求2 1所述的装置,其特征在于,所述装置还包括: 第五发送模块,用于发送数据更新失败消息给已请求更新数据的数据管理器,所述数据更新失败消息携带所述数据类型和所述数据类型对应的第二文件的存储地址,所述第二文件包括所述数据类型对应的第二数据,所述第二数据为所述数据产生源在产生所述第一数据之前最近一次产生所述数据类型对应的数据。
【文档编号】G06F17/30GK103714059SQ201210370367
【公开日】2014年4月9日 申请日期:2012年9月28日 优先权日:2012年9月28日
【发明者】樊华, 俞欢, 王益 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1