一种离散文件记录索引搜索更新方法
技术领域
本发明涉及计算机数据搜索及存储技术领域,尤其涉及一种离散文件记录索引搜索更新方法。
背景技术
在云存储环境下,用户端(前端)系统读写文件时要经网络与存储服务器端(后端)通讯传输数据,传统的方式是以文件为基本单位,从后端将数据取回到前端系统缓存,但受限于文件大小、网络带宽等诸多情况,用户与后端的数据交互体验往往差强人意:一方面用户操作文件时即使有很小的修改也需要在前端存有文件的完整副本。如果没有则需从后端取,文件较大时不仅耗时而且占用大量带宽及服务器资源,用户等候时间延长,对于某些实时性较强的场景更亟需提高效率。另一方面前端也未必有足够的存储空间存放所有的数据,尤其针对移动设备的前端系统。
另一种存取数据方式是以读写操作为单位设计前端系统,每次操作数据量小,高效、节省缓存空间,会有较好的用户体验。利用用户态文件系统来实现对系统调用的重定向,以捕获前端系统的读写操作。对数据的操作以一次系统调用为单位而不是以文件为单位,这些调用的数据不能构成一个完整连续的文件,而是很多离散的文件片段,如果还是用普通的文件作为内容缓存,那么就会浪费很多存储空间,所以利用离散文件记录这些数据来尽量减少浪费的存储空间。
由于操作系统在读取离散文件时,并不会区分没有数据的空洞和实际存储的全零数据,在返回读取到的数据时都会以零数据表示,所以需要建立这些文件内容的索引来获取前端实际存储的数据。操作系统在对文件进行读写操作时,向用户态文件系统提供偏移O以及长度L等参数,然后用离散文件的索引进行搜索查找。如果根据离散文件内容的索引查找记录失败了,那么需要从后端获取数据,存入前端的离散文件,同时更新其内容索引。
由于缓存数据的逐步增多,索引记录也随之膨大,传统索引记录数据查询效率低,占用存储空间大。
发明内容
本发明解决的技术问题在于如何提高数据查询效率,节省存储空间。
为了解决以上问题,本发明提供一种离散文件记录索引搜索更新方法,包括以下步骤:
利用关系数据库建立离散文件记录索引步骤;
前端缓存查找记录数据块步骤;
依据读写操作的偏移、长度以及查询的结果更新索引步骤。
进一步,作为优选方案,所述利用关系数据库建立离散文件记录索引步骤具体构成如下:每一条记录都对应了离散文件中一段存有数据的段,记录中的文件标示用于判定内容隶属于哪个文件;块标示用于避免块冲突;块偏移O记录了一段实际内容的起始地址;内容长度L记录了一段实际内容的长度。
进一步,作为优选方案,所述前端缓存查找记录数据块步骤和依据读写操作的偏移、长度以及查询的结果更新索引步骤具体如下:
将读写请求数据块记为Rrw(Orw,Lrw),
3.1没有≤Orw块的记录,MF=-1,意味着读写请求数据块偏移之前没有同一文件的其他记录,获取新数据,记为R’(O’,L’),更新索引;
3.2有≤Orw块的记录,取块偏移最大者,记为R(O,L),比较三种情况:
3.2.1 O+L<Orw,说明R与Rrw不相交,MF=O,意味着读写请求数据块偏移之前有同一文件的其他记录,但并不与之相交,获取新数据,记为R’(O’,L’),更新索引;
3.2.2 Orw≤O+L<Orw+Lrw,说明R与Rrw相交但未覆盖,MF=1,意味着读写请求数据块偏移之前有同一文件的其他记录,并且与之相交,但并未覆盖读写请求数据块,获取新数据,记为R’(O’,L’),更新索引;
3.2.3 O+L≥Orw+Lrw,说明R与Rrw相交且覆盖,包含了需要的数据,不必再读取新数据并更新索引。
进一步,作为优选方案,所述3.2.1和3.2.2中获取新数据,更新索引步骤如下:
4.1没有(Orw,Orw+Lrw]之间的块,依据MF值更新R’(O’,L’):
4.1.1 MF=-1,R’(O’,L’)不变;
4.1.2 MF=O,R’(O’,L’)不变;
4.1.3 MF=1,R’(O’,L’)更新为R’(O,O’+L’-O),删除R(O,L)记录;
4.2有(Orw,Orw+Lrw]之间的块,取块偏移最大者,记为Rtemp(Otemp,Ltemp),比较两种情况:
4.2.1 Otemp+Ltemp≤Orw+Lrw,依据MF值更新R’(O’,L’):
4.2.1.1 MF=-1,R’(O’,L’)不变,删除所有≤Otemp的同一文件记录;
4.2.1.2 MF=O,R’(O’,L’)不变,删除所有≤Otemp且>O的同一文件记录;
4.2.1.3 MF=1,R’(O’,L’)更新为R’(O,O’+L’-O),删除所有≤Otemp且≥O的同一文件记录;
4.2.2 Otemp+Ltemp>Orw+Lrw,依据MF值更新R’(O’,L’):
4.2.2.1 MF=-1,R’(O’,L’)更新为R’(O’,Otemp+Ltemp-O’),删除所有≤Otemp的同一文件记录;
4.2.2.2 MF=O,R’(O’,L’)更新为R’(O’,Otemp+Ltemp-O’),删除所有≤Otemp且>O的同一文件记录;
4.2.2.3 MF=1,R’(O’,L’)更新为R’(O,Otemp+Ltemp-O),删除所有≤Otemp且≥O的同一文件记录。
由于采用“水滴融合”式离散文件记录索引搜索更新机制,提高了数据查询效率,节省存储空间。
附图说明
当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,其中:
图1为本发明实施例流程图。
具体实施方式
以下参照图对本发明的实施例进行说明。
本发明实施例提出一种“水滴融合”式离散文件记录索引搜索更新机制:当离散文件中的内容产生交叠时,离散的数据块连成连续的数据块,索引也会进行相应修改,将连续的记录合并为一条记录,可以形象地比喻成多个水滴接触后融合成一个大的水滴,减少索引记录数,同时提高查询效率。最终的结果是:对于同一个文件,其中所有索引表示的内容都是互相不重叠的。该机制初始时每次读写的是离散的小数据块,通过长时间运行后,小块会汇聚成连续的大块。理想情况下,文件中所有内容都有意义,即不存在空洞,那么对该文件的内容索引最终像“水滴融合”一样变成一条,其偏移是O,长度是文件的内容长度。
实施例1
如图1所示,一种离散文件记录索引搜索更新方法,包括以下步骤:
S1、利用关系数据库建立离散文件记录索引步骤;
S2、前端缓存查找记录数据块步骤;
S3、依据读写操作的偏移、长度以及查询的结果更新索引步骤。
实施例2
一种离散文件记录索引搜索更新方法,具体实施步骤如下:
(1-1)首先利用关系数据库建立这一索引,构成如下:每一条记录都对应了离散文件中一段存有数据的段,记录中的文件唯一标示是为判定内容隶属于哪个文件;块唯一标示是为避免块冲突;块偏移(Offset,简称O)记录了一段实际内容的起始地址;内容长度(Length,简称L)则记录了它的长度。
(1-2)由于更新之前必然做过查询操作,所以利用读写操作的偏移、长度以及查询的结果帮助更新索引。
(1-3)引入合并标志MF(Merge Flag)概念,定义如下:
(2-1)MF=-1,意味着读写请求数据块偏移之前没有同一文件的其他记录。
(2-2)MF=O,意味着读写请求数据块偏移之前有同一文件的其他记录,但并不与之相交。
(2-3)MF=1,意味着读写请求数据块偏移之前有同一文件的其他记录,并且与之相交,但并未覆盖读写请求数据块。
(1-4)具体的搜索查找、索引更新方法如下(前提是根据文件唯一标示确定需要的文件):
(1-5)首先将读写请求数据块记为Rrw(Orw,Lrw)。
(1-6)前端缓存查找记录数据块过程如下:
(3-1)没有≤Orw块的记录,MF=-1,获取新数据,记为R’(O‘,L’),更新索引。
(3-2)有≤Orw块的记录,取块偏移最大者,记为R(O,L),比较三种情况:
(4-1)O+L <Orw,说明R与Rrw不相交,MF=O,获取新数据,记为R’(O‘,L’),更新索引。
(4-2)Orw≤O+L<Orw+Lrw,说明R与Rrw相交但未覆盖,MF=1,获取新数据,记为R’(O‘,L’),更新索引。
(4-3)O+L≥Orw+Lrw,说明R与Rrw相交且覆盖,包含了需要的数据,不必再读取新数据并更新索引。
(1-7)从以上叙述中可以看到,R’(O‘,L’)实际上就是Rrw(Orw,Lrw)。
(1-8)后端取新数据后索引更新过程如下:
(5-1)没有(Orw,Orw+Lrw]之间的块,依据MF值更新R’(O‘,L’):
(6-1)MF=-1,R’(O‘,L’)不变。
(6-2)MF=O,R’(O‘,L’)不变。
(6-3)MF=1,R’(O‘,L’)更新为R’(O,O‘+L’-O),删除R(O,L)记录。
(5-2)有(Orw,Orw+Lrw]之间的块,取块偏移最大者,记为Rtemp(Otemp,Ltemp),比较两种情况:
(7-1)Otemp+Ltemp≤Orw+Lrw,依据MF值更新R’(O‘,L’):
(8-1)MF=-1,R’(O‘,L’)不变,删除所有≤Otemp的同一文件记录。
(8-2)MF=O,R’(O‘,L’)不变,删除所有≤Otemp且>O的同一文件记录。
(8-3)MF=1,R’(O‘,L’)更新为R’(O,O‘+L’-O),删除所有≤Otemp且≥O的同一文件记录。
(7-2)Otemp+Ltemp>Orw+Lrw,依据MF值更新R’(O‘,L’):
(9-1)MF=-1,R’(O‘,L’)更新为R’(O‘,Otemp+Ltemp-O’),删除所有≤Otemp的同一文件记录。
(9-2)MF=O,R’(O‘,L’)更新为R’(O‘,Otemp+Ltemp-O’),删除所有≤Otemp且>O的同一文件记录。
(9-3)MF=1,R’(O‘,L’)更新为R’(O,Otemp+Ltemp-O),删除所有≤Otemp且≥O的同一文件记录。
如上所述,对本发明的实施例进行了详细地说明,但是只要实质上没有脱离本发明的发明点及效果可以有很多的变形,这对本领域的技术人员来说是显而易见的。因此,这样的变形例也全部包含在本发明的保护范围之内。