一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据存储方法、系统、终端设备及存储介质与流程

2021-12-18 01:31:00 来源:中国专利 TAG:


1.本发明涉及文件技术领域,尤其涉及一种数据存储方法、系统、终端设备及存储介质。


背景技术:

2.web应用系统现广泛应用于社交、购物、银行和邮件等重要业务线上,在网络资产中占有非常重要的地位,系统的受攻击面广和攻击技术多,导致系统易被入侵。
3.网络攻击者通常会利用被攻击网站中存在的漏洞,通过在网页中植入非法暗链对网页内容进行篡改等方式,进行非法牟利或者恶意商业攻击等活动。网页被恶意篡改会影响用户正常访问网页内容,还可能会导致严重的经济损失、品牌损失甚至是政治风险。
4.网页防篡改常见的模式有外挂轮询技术、核心内嵌技术、事件触发技术等,但都有一个核心就是预先把每个网页文件计算出哈希并存储起来,防篡改软件工作时根据需要,计算出当前网页文件的实际哈希与记录的哈希进行比较,判断文件是否被篡改。这里就需要一个存储方式可对哈希等信息进行快速可靠的存储。传统存储方式为选择数据库来存储数据,而网页防篡改因工作环境的各种因素不适宜使用mysql、mssql等网络数据库,多数使用sqlite文件数据库。虽然sqlite性能上能满足需求,但实际运用中还是存在以下两个问题。
5.1.sqlite是以表形式进行存储,虽然会以路径建立索引,但实际使用的时候还是表结构,这样在对所有数据进行遍历处理时并不能按实际文件目录结构进行,这无形中增加了多次查询,io操作。
6.2.网页防篡改中哈希数据的都是在安全的环境中计算生成出来,然后同步给在一线工作的网页防篡改程序。这里会有两种同步的方式a.增量同步:每次仅把有变化信息同步过去,这种方式需要复杂且精细的日志管理机制,否则太容易出错;b.全量同步:把所有的哈希数据完整的进行同步,而这种方式运用在大型站点中数量会很大,常常仅更新一条数据就需要同步几百兆的数据。


技术实现要素:

7.为了解决上述问题,本发明提出了一种数据存储方法、系统、终端设备及存储介质。
8.具体方案如下:
9.一种数据存储系统,包括:文件列表文件、目录结构文件和数据存储文件;
10.文件列表文件用于存储目录结构文件和数据存储文件的文件信息和目录根节点地址,文件信息包括文件编码、文件类型和文件校验码;
11.目录结构文件和数据存储文件均包括文件头、数据区和摘要区,其中:
12.目录结构文件的文件头用于存储目录结构文件的文件信息和结构信息;数据存储文件的文件头用于存储数据存储文件的文件信息和结构信息;其中,结构信息包括数据区
有效簇总数;
13.目录结构文件的数据区用于存储各文件节点的地址信息,地址信息由目录地址信息和文件地址信息组成,其中:目录地址信息包括目录名的长度、目录包含的子节点的数量、目录的上级目录节点的地址、目录包含的各子节点的地址和目录名;文件地址信息包括文件名的长度、文件节点对应的父节点的地址、文件名和文件节点在数据存储文件中对应文件节点的地址;
14.数据存储文件的数据区用于存储各文件节点的数据信息,数据信息包括文件的校验码和文件存储路径信息;
15.目录结构文件和数据存储文件的摘要区均用于存储对应数据区中每个簇的使用状态、每个块的数据区中已使用的有效簇数量和每个块的数据区对应的校验码。
16.进一步的,目录结构文件的摘要区中存储的每个簇的使用状态包括四种,分别为:未使用、目录信息、文件信息、文件名或目录名。
17.进一步的,数据存储文件的摘要区中存储的每个簇的使用状态包括三种,分别为:未使用、文件的校验码、文件存储路径信息。
18.一种数据存储方法,基于本发明实施例一所述数据存储系统,包括:当需要新增文件节点时,根据新增文件节点对应的文件获取其数据信息,将该新增文件节点对应的数据信息存入数据存储文件的数据区内;根据新增文件节点对应的数据信息在数据存储文件中存储的地址和文件存储路径信息,获取该新增文件节点对应的目录地址信息和文件地址信息,并在目录结构文件的数据区中新增该文件地址信息,同时更新或新增目录地址信息。
19.进一步的,当在数据存储文件或目录结构文件的数据区中新增信息时,需要从对应的摘要区中查找是否存在连续n个的簇的使用状态为未使用,n为新增信息所需簇的数目,如果存在,则将新增信息存入查找到的数据区的连续的n个簇内;否则,在数据存储文件或目录结构文件中新增一个块的空间,在新增空间的数据区内的连续的n个簇内存入新增信息;新增信息存入数据区后更新摘要区中对应的存储的连续n个的簇的使用状态。
20.一种数据存储方法,基于本发明实施例一所述数据存储系统,包括:当需要删除文件节点时,仅将数据存储文件和目录结构文件的摘要区中存储的该文件节点对应的簇的使用状态设置为未使用,不删除数据区中存储的实际信息。
21.进一步的,当需要删除文件节点时,还包括:检查数据存储文件和目录结构文件的文件头中存储的数据区有效簇总数与数据区所有簇总数的比值是否小于比值阈值,如果是,则将小于比值阈值的数据存储文件和目录结构文件的数据区进行碎片整理,并按块删除多余的簇。
22.一种数据存储方法,基于本发明实施例一所述数据存储系统,包括:当需要判断文件是否被篡改时,按照以下步骤进行:
23.s101:根据目录结构文件和数据存储文件计算其文件校验码,将计算的文件校验码与文件头中存储的文件校验码进行比较,当两者相同时,判断文件没有被篡改:否则,进入s102;
24.s102:根据目录结构文件和数据存储文件的数据区计算每个块的数据区对应的校验码,将计算的校验码与摘要区中存储的对应块的校验码进行比较,将两者不相同的块的数据区进行按字节逐一比较,得到有变化的簇,进而得到被篡改的文件。
25.一种数据存储终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例二所述数据存储方法的步骤。
26.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例二所述数据存储方法的步骤。
27.本发明采用如上技术方案,并具有有益效果:
28.1.采用以目录树形结构分文件进行存储,大大优化了查询遍历速度、缩减了存储文件大小,支持灵活全量同步。
29.2.本发明为一种同时结合sqlite与fat32文件系统的特点的专为存储文件目录数据设计的文件结构。
30.3.本发明与目前市面上使用sqlite数据库存储方式相比,查询写入速度相当,但支持分文件存储、支持快速比较差异、支持按目录结构遍历数据、数据更精简,有效的提高了网页防篡改的工作效率。
附图说明
31.图1所示为本发明实施例一中文件列表文件的结构示意图。
32.图2所示为本发明实施例一中目录结构文件的结构示意图。
33.图3所示为本发明实施例一中节点地址的存储结构示意图。
34.图4所示为本发明实施例一中数据存储文件的结构示意图。
具体实施方式
35.为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
36.现结合附图和具体实施方式对本发明进一步说明。
37.实施例一:
38.本发明实施例提供了一种数据存储系统,包括三种类型的文件,分别为:文件列表文件、目录结构文件和数据存储文件。
39.(1)文件列表文件用于存储目录结构文件和数据存储文件的文件信息和目录根节点地址。
40.该实施例中文件信息包括文件编码(文件id)、文件类型和文件校验码,如图1所示,文件校验码为每个文件对应一个校验码,如文件id1和文件id2分别对应各自的文件校验码,该实施例中文件校验码采用crc32校验码,在其他实施例中也可以根据需要采用其他形式的校验码,在此不做限定。
41.文件类型包括目录结构文件和数据存储文件两种类型,分别用1和2表示。
42.(2)目录结构文件用于将根节点下的整个目录下的文件结构采用对应的树形结构进行存储,并做相应的排序。
43.参考图2所示,目录结构文件包括文件头、数据区和摘要区。
44.目录结构文件的文件头用于存储目录结构文件的文件信息和结构信息。文件信息
与文件列表文件中的文件信息相同,包括文件编码、文件类型和文件校验码。需要说明的是,此处的文件校验码是整个目录结构文件包含的所有块的数据区的整体校验码。该实施例中设定结构信息包括摘要起始簇编号和数据区有效簇总数,即数据区包含的总的簇数据减去未使用的空白的簇的数量。
45.目录结构文件的数据区用于存储各文件节点的地址信息,地址信息由目录地址信息和文件地址信息组成,其中:目录地址信息包括目录名的长度、目录包含的子节点的数量、目录中父节点的地址、目录包含的各子节点的地址和目录名;文件地址信息包括文件名的长度、文件节点对应的父节点的地址、文件名和文件节点在数据存储文件中对应文件节点的地址。
46.文件节点表示以节点为单位来存储文件的信息,一个文件对应一个文件节点。
47.该实施例中目录名从每一个簇的0字节处还是记录,目录名的长度用于判断目录名存储时是否超过了一个簇,如果超过时将超过部分在下一个簇继续进行存储。文件名的长度和文件名与目录名的长度和目录名的用法和存储方式相同。
48.文件节点在数据存储文件中对应节点的地址为:与文件节点相同的文件节点在数据存储文件中的所在的簇的序号,如文件节点为文件1时,其在数据存储文件中的所在的簇的序号为1~4,如图4所示。该实施例中设定节点地址为一个4字节的数据,如图3所示,第一个字节用于记录文件id,后三个字节用于记录在所在簇的序号。
49.目录结构文件的摘要区用于存储目录结构文件的数据区中每个簇的使用状态、每个块的数据区中已使用的有效簇数量和每个块的数据区对应的校验码。
50.该实施例中设定每个簇的使用状态包括四种,分别为:0表示未使用、1表示目录信息、2表示文件信息、3表示文件名或目录名、
51.该实施例中设定16字节为1簇,128簇为1块,每块中包括120簇的数据区和8簇的摘要区。
52.(3)数据存储文件用于记录每个文件节点对应的文件(如网页文件)的信息。数据存储文件的结构与目录结构文件的结构类似,如图4所示,数据存储文件也包括文件头、数据区和摘要区。
53.数据存储文件的文件头用于存储数据存储文件的文件信息和结构信息。其中文件信息与文件列表文件中的文件信息相同,包括文件编码、文件类型和文件校验码。需要说明的是,此处的文件校验码是整个数据存储文件包含的所有块的数据区的整体校验码。该实施例中设定结构信息包括摘要起始簇编号和数据区有效簇总数。
54.数据存储文件的数据区用于存储各文件节点的数据信息,该实施例中设定数据信息包括文件的校验码和文件存储路径信息。此处的文件的校验码为每个文件节点对应的文件的校验码,如网页文件的md5值,与文件头中的文件校验码不同。文件存储路径信息为全路径信息,如果一个簇不够存储则往后增加簇。
55.数据存储文件的摘要区用于存储对应数据区中每个簇的使用状态、每个块的数据区中已使用的有效簇数量和每个块的数据区对应的校验码。数据存储文件的摘要区中存储的每个簇的使用状态包括三种,分别为:0表示未使用、1表示文件的校验码、2表示文件存储路径信息。
56.实施例二:本发明还提供一种数据存储方法,基于本发明实施例一的数据存储系
统,包括:
57.(1)初始阶段,创建文件列表文件、目录结构文件和数据存储文件,并未目录结构文件和数据存储文件分别预先分配一个块的空间。
58.(2)当需要新增文件节点时,根据新增文件节点对应的文件获取其数据信息和数据信息所占的簇数n,根据数据信息所占的簇数从数据存储文件的摘要区中查找是否存在连续n个簇的使用状态为未使用,如果存在,将该文件的数据信息存入查找到的数据存储文件的数据区的连续n个簇内,并更新数据存储文件的摘要区该连续n个簇的使用状态;如果不存在,则在数据存储文件中新增一个块的空间,其中新增的块空间包括数据区和摘要区。该实施例中优选设定不同块之间的所有数据区相连,所有摘要区相连,即当新增一个块空间时,在原数据区与摘要区之间增加120字节的数据区,在原摘要区下方增加8字节的摘要区。需要说明的是,不同摘要区的内容是相互独立的,每个块均有其对应的摘要区,即每个摘要区均包括其对应块的数据区中已使用的有效簇数量和其对应块的数据区对应的校验码。
59.当包含的块太多时,单个文件变的太大,此时可以重新建立新的数据存储文件来进行分段存储。
60.根据新增文件节点的文件存储路径信息获取其目录地址信息和文件地址信息,根据目录地址信息在目录结构文件的数据区中更新或新增对应的目录地址信息,同时新增对应的文件地址信息。当在数据区中新增目录地址信息或文件地址信息时,需要按照与数据存储文件相同的方式,从目录结构文件的摘要区中查找是否存在连续新增信息所需簇数目的簇的使用状态为未使用。
61.(3)当需要删除文件节点时,仅将数据存储文件和目录结构文件的摘要区中存储的该文件节点对应的簇的使用状态设置为未使用,并不需要删除数据区中存储的实际信息。
62.进一步的,该实施例中还包括检查数据存储文件和目录结构文件的文件头中存储的数据区有效簇总数与数据区所有簇总数的比值是否小于比值阈值(该实施例中设定比值阈值为1/3),如果是,则将小于比值阈值的数据存储文件和目录结构文件的数据区进行碎片整理,并按块删除多余的簇。该实施例中碎片整理为将数据区中的有效簇在物理空间上进行连续,并更新目录结构文件中存储的对应文件节点的地址。
63.数据区所有簇总数为根据块数与每块包含的数据区的簇数的乘积。
64.(4)当需要修改文件节点时,分为两种情况,1.当修改后的信息所占的簇数据不变或减少时,直接在原地址进行覆盖,2.当修改后的信息所占的簇数据增加时,则按照先删除旧文件节点,之后新增修改后的文件节点的方式进行。
65.(5)在对文件节点进行查询时,将文件节点对应的文件存储路径信息按照目录层级进行拆分后,从第一个目录结构文件开始,从根目录节点开始查询。
66.(6)当需要判断目录结构文件和数据存储文件中数据是否被改变时,按照以下步骤进行:
67.s101:根据目录结构文件和数据存储文件计算其文件校验码,将计算的文件校验码与文件头中存储的文件校验码进行比较,当两者相同时,判断数据无变化:否则,进入s102;
68.s102:根据目录结构文件和数据存储文件的数据区计算每个块的数据区对应的校验码,将计算的校验码与摘要区中存储的对应块的校验码进行比较,将两者不相同的块的数据区进行按字节逐一比较,得到有变化的簇。
69.实施例三:
70.本发明还提供一种数据存储终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
71.进一步地,作为一个可执行方案,所述数据存储终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述数据存储终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述数据存储终端设备的组成结构仅仅是数据存储终端设备的示例,并不构成对数据存储终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述数据存储终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
72.进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述数据存储终端设备的控制中心,利用各种接口和线路连接整个数据存储终端设备的各个部分。
73.所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述数据存储终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
74.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
75.所述数据存储终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)以及软件分发介质等。
76.尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献