一种海量数据下可靠索引更新系统及方法

xiaoxiao2020-10-23  17

一种海量数据下可靠索引更新系统及方法
【技术领域】
[0001]本发明涉及物联网搜索技术领域,尤其涉及一种海量数据下可靠索引更新系统及方法。
【背景技术】
[0002]物联网实体资源指一切能够接入网络的设备资源和物理实体。在物联网中,大量的实体资源互连互通,很多具备自动化控制的物理设备等实体都能连接到网络中,成为物联网实体资源海洋的一部分,这些物联网实体资源有的是传统的路由器、打印机、摄像头、手机等传感器设备,有的是新型的可接入车载网网络的汽车、可接入智能家居系统的电冰箱、甚至你桌子上的台灯等智能生活用品。这些接入网络中的实体资源越来越多,直接造成了物联网实体信息的海量性。另一方面,单个实体资源的属性也是动态变化的,其位置会随着时间而变化,状态也会随着时间和空间的变化而变化,数以百万千万计的实体资源合起来产生的信息是海量的动态变化的信息。
[0003]为了提高对这些海量动态变化的信息建立索引的速度,实时索引构建技术一直是物联网搜索技术研宄的重点。现在,关键字检索技术中Apache Lucene (GospodneticO, Hatcher E.Lucene[Μ].Manning, 2005.)较好地提供了实时索引构建技术的一种实现。它是通过建立硬盘主索引、内存索引和合并中索引的三级索引结构来实现实时索引构建(Hatcher E, Gospodnetic 0.Lucene in act1n[J].2004.)的。该方案有如下特点:
[0004](I)搜索服务是在硬盘主索引Ful 1-1ndex和内存索引Ram-1ndex中同时进行。
[0005](2)内存索引Ram-1ndex是索引数据更新的入口。
[0006](3)当内存索引Ram-1ndex达到一定量时,需要与硬盘索引Ful 1-1ndex进行合并,合并的过程如下:首先将Ram-1ndex转变为Merging-1ndex,同时开辟一块新的内存索引空间Ram-1ndex接收新的文档索引,这时假如有查询请求,则同时查询Ram_Index,Ful1-1ndex 和 Merging-1ndex,直到 Merging-1ndex 完全合并到 Ful 1-1ndex 中。
[0007](4)当 Merging-1ndex 完全合并到 Ful Ι-1ndex 中以后,这时 Merging-1ndex 不会立即删除,而是会等待新的IndexReader打开。因为用IndexReader重新打开Ful 1-1ndex的速度是很慢的,如果这时有搜索请求过来,仍然检索以上三个索引,保证了实时性。等到新的IndexReader打开以后,将其替代老的IndexReader,完成一次索引合并过程。
[0008]上述内存索引与硬盘索引适时合并的方式保证了索引、搜索的实时性,但是如果索引更新速度过快,内存索引的合并速度跟不上原始数据的推送速度,当合并中索引还没有完成与硬盘索引的合并操作,这时内存索引达到了阈值;或者硬盘上的索引已经很大,合并操作和重新打开IndexReader的操作要花费太长的时间,使得内存索引已经达到阈值的情况下,合并中索引与硬盘索引还没有完成合并;又如在内存索引尚未完成与硬盘索引合并的过程中发生服务器宕机事故,此时内存索引的数据就会丢失,导致索引文件的不完整甚至索引文件损坏情况发生。

【发明内容】

[0009]本发明所要解决的技术问题是提供一种海量数据下可靠索引更新系统及方法,加入了日志预写、断点检查机制和资源缓存机制,资源更新和索引构建之间添加了一级“缓存”,既解决了索引更新速度和原始数据推送速度不匹配的问题,又保证了索引更新的可靠性,且大大提升了海量资源属性索引的重复更新速度。
[0010]本发明解决上述技术问题的技术方案如下:一种海量数据下可靠索引更新系统,包括日志预写模块、日志数据库、断点控制模块、断点设置模块、资源缓存模块和内存索引存储区;
[0011]所述日志预写模块,用于实时接收从物联网实体资源数据中心推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格式写入日志数据库中;
[0012]所述日志数据库,用于保存各条“资源ID+属性参数”的资源更新记录;
[0013]所述断点控制模块,用于根据所述日志数据库中保存的资源更新记录的增长情况判断是否达到阈值,如果达到阈值,将断点信号发送至所述断点设置模块后,再发送更新信号至所述资源缓存模块进行处理;
[0014]所述断点设置模块,用于记录各组资源更新记录的断点信息,当接收到所述断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中;
[0015]所述资源缓存模块,用于当接收到更新信号后,在建立的更新记录缓存区或所述内存索引存储区中逐一对本组的资源更新记录的内容进行更新处理;
[0016]所述内存索引存储区,用于当资源缓存模块处理完成后,将在更新记录缓存区处理的资源更新记录的内容导入,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。
[0017]本发明的有益效果是:针对物联网实体资源海量性、动态性的特点,提出了一种保证索引更新速度和可靠性的方法,
[0018](I)针对索引构建速度和资源数据更新速度不匹配以及宕机时内存索引易丢失的情况,本发明加入了日志预写与断点检查机制解决了以上问题,保证了索引更新的可靠性。
[0019](2)针对物联网实体资源数据动态变化速度快的特点,本发明在传统的实时索引更新方法中的内存索引更新操作之前加入了资源缓存,在10000个资源的属性重复更新100次的情况下将索引更新速度提升了 10倍以上。
[0020]在上述技术方案的基础上,本发明还可以做如下改进。
[0021 ] 进一步,所述断点控制模块包括阈值设定单元、更新点判断单元和断点信息读取单元;
[0022]所述阈值设定单元,用于设定每组资源更新记录的数目的阈值;
[0023]所述更新点判断单元,用于从所述断点信息读取单元读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测所述日志数据库中本组资源更新记录的增长情况,并判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,将本组资源更新记录的断点信号发送至所述断点设置模块后,再发送更新信号至所述资源缓存模块进行处理,否则,继续监测所述日志数据库中资源更新记录的增长情况;
[0024]所述断点信息读取单元,用于从所述断点设置模块中读取资源更新记录的断点信息。
[0025]进一步,所述资源缓存模块包括表单创建单元和记录处理单元和更新记录缓存区;
[0026]所述表单创建单元,用于从所述日志数据库中获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单;
[0027]所述记录处理单元,用于逐一判断表单中的资源ID是否已存在于所述更新记录缓存区中,如果存在,则调出原属性内容将其更新为表单中 该资源ID对应的属性内容,否贝1J,在所述内存索引存储区中查找,如果存在,则调出原属性内容将其更新为表单中该资源ID对应的属性内容,如果均不存在于两者中,则将该条资源更新记录的资源ID和属性内容保存至所述更新记录缓存区中;
[0028]所述更新记录缓存区,用于存储资源ID和属性内容,并将经过处理后的属性内容进行存储。
[0029]进一步,所述记录处理单元还用于当处理的资源更新记录为删除操作时,在所述更新记录缓存区和所述内存索引存储区中将该资源ID和其所对应的属性内容进行删除;在所述更新记录缓存区和内存索引存储区中先分别查找该资源ID,再将其对应的属性内容分别删除。
[0030]进一步,所述断点控制模块还用于当更新过程中断时,从所述断点设置模块中获取上一组和本组的资源更新记录的断点信息,再发送更新信号至所述资源缓存模块,从断点处重新对本组资源更新记录所对应的索引数据进行更新处理。中断后,读取断点信息,获得资源ID和断点时间,从断点处再次更新,有效保证了内存索引构建的可靠性。
[0031]所述断点信息包括资源ID和断点时间。
[0032]所述“资源ID+属性参数”的格式为:〈资源ID,资源操作类型,资源属性>。
[0033]本发明解决上述技术问题的另一技术方案如下:一种海量数据下可靠索引更新方法,包括如下步骤:
[0034]步骤A:实时接收从物联网实体资源数据中心推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格式进行编写;
[0035]步骤B:保存各条“资源ID+属性参数”的资源更新记录;
[0036]步骤C:根据资源更新记录的增长情况判断是否达到阈值,如果达到阈值,则发送断点信号,并执行步骤D,再发送更新信号,并执行步骤E ;
[0037]步骤D:当接收到断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中;
[0038]步骤E:当接收到更新信号后,在建立的更新记录缓存区或内存索引存储区中逐一对本组的资源更新记录的内容进行更新处理;
[0039]步骤F:将更新记录缓存区处理的资源更新记录的内容导入内存索引存储区中,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。
[0040]在上述技术方案的基础上,本发明还可以做如下改进。
[0041 ] 进一步,实现步骤C的具体方法为:
[0042]步骤Cl:设定每组资源更新记录的数目的阈值;
[0043]步骤C2:读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测本组资源更新记录的增长情况;
[0044]步骤C3:判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,发送本组资源更新记录的断点信号,并执行步骤D,再发送更新信号,并执行步骤E ;否则,继续监测资源更新记录的增长情况。
[0045]进一步,实现步骤E的具体方法为:
[0046]步骤El:获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单;
[0047]步骤E2:逐一判断表单中的资源ID是否已存在于更新记录缓存区中,如果存在,则执行步骤E3,否则,在内存索引存储区中查找,如果存在,则执行步骤E4 ;如果均不存在于两者中,则执行步骤E5;
[0048]步骤E3:在更新记录缓存区中调出原属性内容将其更新为表单中该资源ID对应的属性内容;
[0049]步骤E4:在内存索引存储区调出原属性内容将其更新为表单中该资源ID对应的属性内容;
[0050]步骤E5:将该条资源更新记录的资源ID和属性内容保存至更新记录缓存区中。
[0051]进一步,还包括当处理的资源更新记录为删除操作时,在所述更新记录缓存区和内存索引存储区中将该资源ID和其所对应的属性内容进行删除的步骤;执行该步骤时,在所述更新记录缓存区和内存索引存储区中先分别查找该资源ID,再将其对应的属性内容分别删除。
[0052]进一步,还包括当更新过程中断时,获取上一组和本组的资源更新记录的断点信息,再发送更新信号,从断点处重新对本组资源更新记录所对应的索引数据进行更新处理的步骤。
[0053]进一步,所述断点信息包括资源ID和断点时间。
[0054]进一步,所述“资源ID+属性参数”的格式为:〈资源ID,资源操作类型,资源属性
[0055]中断后,读取断点信息,获得资源ID和断点时间,从断点处再次更新,有效保证了内存索引构建的可靠性。
[0056]当索引更新时发生服务器宕机事故,这时索引数据会丢失,此时尚未更新到最新日期的记录,断点记录表刚好保存着最后一次的断点记录,而最后一个断点和倒数第二个断点之间的资源更新记录即为内存索引中丢失的数据。待系统恢复正常后,系统可重新读取这部分记录来恢复数据。
【附图说明】
[0057]图1为本发明海量数据下可靠索引更新系统的模块框图;
[0058]图2为本发明海量数据下可靠索引更新方法的方法流程图;
[0059]图3为本发明实现步骤E的方法流程图;
[0060]图4为本发明断点构建时序图。
[0061]附图中,各标记所代表的部件名称如下:
[0062]1、日志预写模块,2、日志数据库,3、断点控制模块,4、断点设置模块,5、资源缓存模块,6、内存索引存储区,7、物联网实体资源数据中心,301、阈值设定单元,302、更新点判断单元,303、断点信息读取单元,501、表单创建单元,502、记录处理单元,503、更新记录缓存区。
【具体实施方式】
[0063]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0064]如图1所示,一种海量数据下可靠索引更新系统,包括日志预写模块、日志数据库、断点控制模块、断点设置模块、资源缓存模块和内存索引存储区;
[0065]所述日志预写模块1,用于实时接收从物联网实体资源数据中心7推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格式写入日志数据库中;
[0066]所述日志数据库2,用于保存各条“资源ID+属性参数”的资源更新记录;
[0067]所述断点控制模块3,用于根据所述日志数据库2中保存的资源更新记录的增长情况判断是否达到阈值,如果达到阈值,将断点信号发送至所述断点设置模块4后,再发送更新信号至所述资源缓存模块5进行处理;
[0068]所述断点设置模块4,用于记录各组资源更新记录的断点信息,当接收到所述断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中;
[0069]所述资源缓存模块5,用于当接收到更新信号后,在建立的更新记录缓存区或所述内存索引存储区6中逐一对本组的资源更新记录的内容进行更新处理;
[0 070]所述内存索引存储区6,用于当资源缓存模块5处理完成后,将在更新记录缓存区处理的资源更新记录的内容导入,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。
[0071 ] 所述断点控制模块3包括阈值设定单元301、更新点判断单元302和断点信息读取单元303 ;
[0072]所述阈值设定单元301,用于设定每组资源更新记录的数目的阈值;
[0073]所述更新点判断单元302,用于从所述断点信息读取单元303读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测所述日志数据库2中本组资源更新记录的增长情况,并判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,将本组资源更新记录的断点信号发送至所述断点设置模块4后,再发送更新信号至所述资源缓存模块5进行处理,否则,继续监测所述日志数据库2中资源更新记录的增长情况;
[0074]所述断点信息读取单元303,用于从所述断点设置模块4中读取资源更新记录的断点信息。
[0075]所述资源缓存模块5包括表单创建单元501和记录处理单元502和更新记录缓存区 503 ;
[0076]所述表单创建单元501,用于从所述日志数据库2中获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单;
[0077]所述记录处理单元502,用于逐一判断表单中的资源ID是否已存在于所述更新记录缓存区503中,如果存在,则调出原属性内容将其更新为表单中该资源ID对应的属性内容,否则,在所述内存索引存储区6中查找,如果存在,则调出原属性内容将其更新为表单中该资源ID对应的属性内容,如果均不存在于两者中,则将该条资源更新记录的资源ID和属性内容保存至所述更新记录缓存区503中;
[0078]所述更新记录缓存区503,用于存储资源ID和属性内容,并将经过处理后的属性内容进行存储。
[0079]所述记录处理单元503还用于当处理的资源更新记录为删除操作时,在所述更新记录缓存区502和所述内存索引存储区6中将该资源ID和其所对应的属性内容进行删除;在所述更新记录缓存区502和内存索引存储区6中先分别查找该资源ID,再将其对应的属性内容分别删除。
[0080]所述断点控制模块3还用于当更新过程中断时,从所述断点设置模块4中获取上一组和本组的资源更新记录的断点信息,再发送更新信号至所述资源缓存模块5,从断点处重新对本组资源更新记录所对应的索引数据进行更新处理。中断后,读取断点信息,获得资源ID和断点时间,从断点处再次更新,有效保证了内存索引构建的可靠性。
[0081]所述断点信息包括资源ID和断点时间。
[0082]所述“资源ID+属性参数”的格式为:〈资源ID,资源操作类型,资源属性>。
[0083]如图2所示,一种海量数据下可靠索引更新方法,包括如下步骤:
[0084]步骤A:实时接收从物联网实体资源数据中心推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格式进行编写;
[0085]步骤B:保存各条“资源ID+属性参数”的资源更新记录;
[0086]步骤C:根据资源更新记录的增长情况判断是否达到阈值,如果达到阈值,则发送断点信号,并执行步骤D,再发送更新信号,并执行步骤E ;
[0087]步骤D:当接收到断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中;
[0088]步骤E:当接收到更新信号后,在建立的更新记录缓存区或内存索引存储区中逐一对本组的资源更新记录的内容进行更新处理;
[0089]步骤F:将更新记录缓存区处理的资源更新记录的内容导入内存索引存储区中,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。
[0090]实现步骤C的具体方法为:
[0091]步骤Cl:设定每组资源更新记录的数目的阈值;
[0092]步骤C2:读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测本组资源更新记录的增长情况;
[0093]步骤C3:判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,发送本组资源更新记录的断点信号,并执行步骤D,再发送更新信号,并执行步骤E ;否则,继续监测资源更新记录的增长情况。
[0094]如图3所示,实现步骤E的具体方法为:
[0095]步骤El:获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单;
[0096]步骤E2:逐一判断表单中的资源ID是否已存在于更新记录缓存区中,如果存在,则执行步骤E3,否则,在内存索引存储区中查找,如果存在,则执行步骤E4 ;如果均不存在于两者中,则执行步骤E5;
[0097]步骤E3:在更新记录缓存区中调出原属性内容将其更新为表单中该资源ID对应的属性内容;
[0098]步骤E4:在内存索引存储区调出原属性内容将其更新为表单中该资源ID对应的属性内容;
[0099]步骤E5:将该条资源更新记录的资源ID和属性内容保存至更新记录缓存区中。
[0100]所述断点信息包括资源ID和断点时间。
[0101]所述“资源ID+属性参数”的格式为:〈资源ID,资源操作类型,资源属性>。
[0102]还包括当处理的资源更新记录为删除操作时,在所述更新记录缓存区和内存索引存储区中将该资源ID和其所对应的属性内容进行删除的步骤;执行该步骤时,在所述更新记录缓存区和内存索引存储区中先分别查找该资源ID,再将其对应的属性内容分别删除。
[0103]还包括当更新过程中断时,获取上一组和本组的资源更新记录的断点信息,再发送更新信号,从断点处重新对本组资源更新记录所对应的索引数据进行更新处理的步骤。
[0104]中断后,读取断点信息,获得资源ID和断点时间,从断点处再次更新,有效保证了内存索引构建的可靠性。
[0105]如图4所示,当索引更新时发生服务器宕机事故,这时索引数据会丢失,此时尚未更新到最新日期的记录,断点记录表刚好保存着最后一次的断点记录,而最后一个断点和倒数第二个断点之间的资源更新记录即为内存索引中丢失的数据。待系统恢复正常后,系统可重新读取这部分记录来恢复数据。
[0106]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种海量数据下可靠索引更新系统,其特征在于,包括日志预写模块(I)、日志数据库(2)、断点控制模块(3)、断点设置模块(4)、资源缓存模块(5)和内存索引存储区(6); 所述日志预写模块(I),用于实时接收从物联网实体资源数据中心(7)推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格 式写入日志数据库中; 所述日志数据库(2),用于保存各条“资源ID+属性参数”的资源更新记录; 所述断点控制模块(3),用于根据所述日志数据库(2)中保存的资源更新记录的增长情况判断是否达到阈值,如果达到阈值,将断点信号发送至所述断点设置模块⑷后,再发送更新信号至所述资源缓存模块(5)进行处理; 所述断点设置模块(4),用于记录各组资源更新记录的断点信息,当接收到所述断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中; 所述资源缓存模块(5),用于当接收到更新信号后,在建立的更新记录缓存区或所述内存索引存储区¢)中逐一对本组的资源更新记录的内容进行更新处理; 所述内存索引存储区(6),用于当资源缓存模块(5)处理完成后,将在更新记录缓存区处理的资源更新记录的内容导入,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。2.根据权利要求1所述的海量数据下可靠索引更新系统,其特征在于,所述断点控制模块(3)包括阈值设定单元(301)、更新点判断单元(302)和断点信息读取单元(303); 所述阈值设定单元(301),用于设定每组资源更新记录的数目的阈值; 所述更新点判断单元(302),用于从所述断点信息读取单元(303)读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测所述日志数据库(2)中本组资源更新记录的增长情况,并判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,将本组资源更新记录的断点信号发送至所述断点设置模块(4)后,再发送更新信号至所述资源缓存模块(5)进行处理,否则,继续监测所述日志数据库(2)中资源更新记录的增长情况; 所述断点信息读取单元(303),用于从所述断点设置模块(4)中读取资源更新记录的断点信息。3.根据权利要求1所述的海量数据下可靠索引更新系统,其特征在于,所述资源缓存模块(5)包括表单创建单元(501)和记录处理单元(502)和更新记录缓存区(503); 所述表单创建单元(501),用于从所述日志数据库(2)中获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单; 所述记录处理单元(502),用于逐一判断表单中的资源ID是否已存在于所述更新记录缓存区(503)中,如果存在,则调出原属性内容将其更新为表单中该资源ID对应的属性内容,否则,在所述内存索引存储区(6)中查找,如果存在,则调出原属性内容将其更新为表单中该资源ID对应的属性内容,如果均不存在于两者中,则将该条资源更新记录的资源ID和属性内容保存至所述更新记录缓存区(503)中; 所述更新记录缓存区(503),用于存储资源ID和属性内容,并将经过处理后的属性内容进行存储。4.根据权利要求3所述的海量数据下可靠索引更新系统,其特征在于,所述记录处理单元(503)还用于当处理的资源更新记录为删除操作时,在所述更新记录缓存区(502)和所述内存索引存储区(6)中同时将该资源ID和其所对应的属性内容进行删除。5.根据权利要求1所述的海量数据下可靠索引更新系统,其特征在于,所述断点控制模块(3)还用于当更新过程中断时,从所述断点设置模块(4)中获取上一组和本组的资源更新记录的断点信息,再发送更新信号至所述资源缓存模块(5),从断点处重新对本组资源更新记录所对应的索引数据进行更新处理。6.一种海量数据下可靠索引更新方法,其特征在于,包括如下步骤: 步骤A:实时接收从物联网实体资源数据中心推送来的资源更新信息,并将资源更新信息以“资源ID+属性参数”的格式进行编写; 步骤B:保存各条“资源ID+属性参数”的资源更新记录; 步骤C:根据资源更新记录的增长情况判断是否达到阈值,如果达到阈值,则发送断点信号,并执行步骤D,再发送更新信号,并执行步骤E ; 步骤D:当接收到断点信号后,以本组资源更新记录中更新的最后一条资源更新记录作为断点来建立断点信息,并将断点信息写入断点记录表中; 步骤E:当接收到更新信号后,在建立的更新记录缓存区或内存索引存储区中逐一对本组的资源更新记录的内容进行更新处理; 步骤F:将更新记录缓存区处理的资源更新记录的内容导入内存索引存储区中,并根据经过更新处理后的资源更新记录的内容对内存索引文件进行更新。7.根据权利要求6所述的海量数据下可靠索引更新方法,其特征在于,实现步骤C的具体方法为: 步骤Cl:设定每组资源更新记录的数目的阈值; 步骤C2:读取上一组资源更新记录的断点信息后,以该断点信息所记录的断点时间为监测点,实时监测本组资源更新记录的增长情况; 步骤C3:判断本组资源更新记录的数目是否达到设定的阈值,如果达到阈值,发送本组资源更新记录的断点信号,并执行步骤D,再发送更新信号,并执行步骤E ;否则,继续监测资源更新记录的增长情况。8.根据权利要求6所述的海量数据下可靠索引更新方法,其特征在于,实现步骤E的具体方法为: 步骤El:获取本组“资源ID+属性参数”的资源更新记录,并根据属性参数获取对应的属性内容,并建立〈资源ID+属性内容 > 信息的表单; 步骤E2:逐一判断表单中的资源ID是否已存在于更新记录缓存区中,如果存在,则执行步骤E3,否则,在内存索引存储区中查找,如果存在,则执行步骤E4 ;如果均不存在于两者中,则执行步骤E5 ; 步骤E3:在更新记录缓存区中调出原属性内容将其更新为表单中该资源ID对应的属性内容; 步骤E4:在内存索引存储区调出原属性内容将其更新为表单中该资源ID对应的属性内容; 步骤E5:将该条资源更新记录的资源ID和属性内容保存至更新记录缓存区中。9.根据权利要求8所述的海量数据下可靠索引更新方法,其特征在于,还包括当处理的资源更新记录为删除操作时,在所述更新记录缓存区和内存索引存储区中将该资源ID和其所对应的属性内容进行删除的步骤。10.根据权利要求6所述的海量数据下可靠索引更新方法,其特征在于,还包括当更新过程中断时,获取上一组和本组的资源更新记录的断点信息,再发送更新信号,从断点处重新对本组资源更新记录所对应的索引数据进行更新处理的步骤。
【专利摘要】本发明涉及一种海量数据下可靠索引更新系统,包括日志预写模块、日志数据库、断点控制模块、断点设置模块、资源缓存模块和内存索引存储区;本发明还涉及一种海量数据下可靠索引更新方法;本发明针对索引构建速度和资源数据更新速度不匹配以及宕机时内存索引易丢失的情况,加入了日志预写、断点设置的机制解决了以上问题,保证了索引更新的可靠性;其次,针对物联网实体资源数据动态变化速度快的特点,在传统的实时索引更新方法中的内存索引更新操作之前加入了资源缓存的机制,在10000个资源的属性重复更新100次的情况下将索引更新速度提升了10倍以上。
【IPC分类】G06F17/30
【公开号】CN104899249
【申请号】CN201510221611
【发明人】朱红松, 陈磊, 孙利民, 于楠, 闫兆腾, 黄伟武
【申请人】中国科学院信息工程研究所
【公开日】2015年9月9日
【申请日】2015年5月4日

最新回复(0)