变长数据管理方法及装置的制作方法

文档序号:5106035阅读:115来源:国知局
专利名称:变长数据管理方法及装置的制作方法
技术领域
本发明涉及嵌入式系统的数据管理,特别涉及一种可变长度数据管理的实现方法和装置。
背景技术
目前,随着嵌入式设备的发展,其应用的环境越来越复杂,随之产生的需求是对大量存储数据高效的存储和管理。由于嵌入式终端硬件资源受限,其内存容量往往比较小。为了在嵌入式设备中存储数据,现有技术中提出了一种文件系统。通常情况下,将数据存储在数据库的字段中,是利用嵌入式数据库对存储器中的数据进行管理,根据数据库原理,将需要管理的数据归类细分为数据表、索引和数据;利用文件系统创建表文件、索引文件和数据文件,分别用来管理数据表信息、索引信息和数据信息。通常,文件系统为上层应用提供API函数,用于实现数据的添加、修改和删除操作。嵌入式数据库以表为单位保存在存储器上,字段是数据库记录中的一个数据单元,变长数据即表示字段的数据长度是不固定的,会动态变化。嵌入式设备中的变长数据存储,通常是为变长数据准备固定大小的内存,为了满足变长数据的需要,所述固定长度通常比较大,不论该字段实际使用了多少内存,该字段始终会占据一块较大的内存区,造成内存利用率低,浪费严重。例如,现有税控设备在存储发票数据时,普遍采用固定长度的数据记录方法,即上述的第一种处理方法。随着税收征管的发展需要,税控设备需要记录长度不固定的发票数据,如何在资源有限的硬件条件下实现尽可能高的变长数据存储能力,存储尽可能多的明细信息,为发票防伪提供尽可能多的依据成为目前税控设备急需解决的技术问题。

发明内容
本发明的目的在于,解决现有变长数据存储技术中存储空间利用率低的技术问题。为达到上述目的,本发明提供一种一种变长数据管理方法,所述方法包括变长数据存储方法,步骤为步骤al,将存储模块的存储空间依次划分为多个相同大小的存储单元,所述存储单元的容量定义为单元块;步骤a2,构造数据记录,所述数据记录包括记录信息和数据部分,所述数据部分为需要存储的变长数据,所述的记录信息中指明本条数据记录的长度;所述数据记录由多个数据块构成;以所述单元块为单位依次分割所述数据记录, 形成所述多个数据块;步骤a3,存储所述数据记录,根据指针模块提供的地址指针将所述数据记录依次写入所述存储模块的存储单元;所述地址指针指向所述存储模块的第一空地址;步骤a4,更新所述地址指针;写完所述数据记录的最后一块数据块后,所述地址指针增加当前存储的数据记录占用存储空间的长度,指向所述存储模块中的第二空地址, 将所述第二空地址写入指针模块。本发明还提供一种变长数据管理装置,由控制模块和存储体构成;所述存储体由存储模块和指针模块组成;所述控制模块分别与所述存储模块和所述指针模块连接;所述存储模块存储数据记录;所述指针模块中存放一地址指针,所述地址指针指向所述存储模块的空地址;所述控制模块运行存取程序,所述存取程序存取变长数据记录,提供其它程序访问的接口,并初始化所述存储体,读取或者擦除所述存储体;所述控制模块读取或者写入所述指针模块中的地址指针,根据所述地址指针指向的地址对所述存储模块中的数据记录进行查询、读写和删除操作。本发明的有益效果在于,存储器中存储的变长数据记录首尾相接,连续存储。可以在有限的存储空间中存储尽量多的变长数据,并且能方便进行增加、删除、查询记录,不借助任何文件系统和数据库,既节省了存储资源,又节省了处理器资源。


图1为变长数据管理装置的结构示意图;图2为变长数据存储方法的流程图;图3为存储模块划分和数据记录存储的示意图;图4为变长数据记录查询方法的流程图;图5为变长数据记录删除方法的流程图;图6为本发明实施例一的变长数据存储装置的结构图;图7为本发明实施例一的存储模块的物理存储结构示意图;图8为本发明实施例一的变长数据存储方法的流程图;图9为本发明实施例一的存储模块划分和数据记录存储的示意图;图10为本发明实施例一的变长数据查询方法的流程图;图11为本发明实施例二的变长数据存储装置的结构图;图12为本发明实施例二的变长数据存储方法的流程图;图13为本发明实施例二的存储模块划分和数据记录存储的示意图;图14为本发明实施例二的变长数据查询方法的流程图。附图标记说明10-变长数据管理装置;11-控制模块;12-存储体;121-存储模块;122-指针模块。
具体实施例方式以下结合附图,对本发明技术方案作进一步的详细说明,使本发明的优点和特点能更加清楚地呈现。但是本发明的方法和装置不受下述实施例的限制,可用各种类似的方式实现。本发明的思想是提供一种微型、高效的存储变长数据的解决方案,预先定义变长数据记录的格式,将存储的变长数据整理为特定的数据记录结构,使数据记录的长度与存储器的物理存储空间相对应,从而存储器中存储的变长数据记录首尾相接,连续存储。可以在有限的存储空间中存储尽量多的变长数据,并且能方便进行增加、删除、查询记录,不借助任何文件系统和数据库,既节省了存储资源,又节省了处理器资源。图1所示为本发明变长数据管理装置的结构示意图。变长数据管理装置10包括控制模块11和存储体12。存储体12由存储模块121和指针模块122构成。控制模块11 分别与存储模块121和指针模块122连接。存储体12为存储数据的载体,例如半导体存储体FLASH芯片,磁盘等。其中,存储模块121用于存储数据记录。指针模块122中存放一地址指针,所述地址指针指向存储模块 121的某个空地址,当存入数据记录时,可从该空地址开始向后写入,存储完成后,该地址指针向后延续到新的空地址。初始状态下该地址指针指向存储模块121的起始地址。控制模块11中运行存取程序,所述存取程序用于存取变长数据记录,对外提供其它程序访问的接口,对内对存储体12初始化、读取或者擦除。控制模块11读取或者写入指针模块122中的地址指针,根据所述地址指针指向的地址对存储模块121中的数据记录进行查询、读写和删除操作。本发明的变长数据管理方法,包括变长数据的存储、查询和删除方法。图2所示为变长数据存储方法的流程图,包括步骤201,将存储模块121的存储空间依次划分为多个相同大小的存储单元,所述每个存储单元的容量定义为单元块;如图3所示,存储模块121的存储空间依次划分为多个存储单元1、存储单元2、存储单元3.......步骤202,初始化存储体12 ;控制模块11执行存取程序,将存储模块121全部擦除,将存储模块121的起始地址写入指针模块122。步骤203,构造数据记录;控制模块11执行存取程序,将需要存储的变长数据构造成为一条数据记录;所述数据记录包括记录信息和数据部分,所述数据部分为需要存储的变长数据, 所述的记录信息中指明本条数据记录的长度;所述数据记录由多个数据块构成;以所述单元块为单位依次分割所述数据记录, 形成所述多个数据块;在第一块数据块中指定一固定位置为所述记录信息;所述数据记录的长度为所述数据记录以所述单元块为单位依次分割产生的数据块的块数;当最后一块数据块中的数据部分不足整个单元块时,记为一块单元块;较佳地,可在最后一块数据块的尾部增加填充信息,构成一块完整的单元块。如图3所示,数据记录A包括第一块数据块Al、第二块数据块A2和第三块数据块 A3,指定第一块数据块Al的一固定位置为记录信息All,记录信息All指明数据记录A的长度为3块单元块;数据记录A中除记录信息All之外的部分为需要存储的变长数据;数据记录B包括第一块数据块Bl、第二块数据块B2、第三块数据块B3和第四块数据块B4,指定第一块数据块Bl的一固定位置为记录信息B11,记录信息Bll指明数据记录B 的长度为4块单元块;其中第四块数据块B4中的数据部分不足整个单元块,在第四数据块 B4尾部增加填充信息B41,构成整个单元块;数据记录B中除记录信息Bll和填充信息B41 之外的部分为需要存储的变长数据。步骤204,控制模块11的存取程序从本条数据记录的第一块数据块的记录信息中读取本条数据记录的长度;步骤205,控制模块11根据指针模块122提供的地址指针,将本条数据记录依次写入存储模块121的存储单元;如图3所示,数据记录A的数据块Al、A2和A3依次写入存储单元1至存储单元3 ; 数据记录B的数据块Bl、B2、B3和B4依次写入存储单元4至存储单元7。步骤206,更新地址指针;写完本条数据记录的最后一块数据块后,地址指针增加当前存储的数据记录占用存储空间的长度,指向存储模块121中的一个空地址,存取程序将该地址写入指针模块122作为新的地址指针;步骤207,控制模块11判断是否还需要继续存储;如果是,则执行步骤203,如果不是,则执行步骤208,结束。图4为查询变长数据记录的方法的流程图,包括步骤401,控制模块11定义一检索地址指针,所述检索地址指针的初始值为存储模块121的起始地址;步骤402,控制模块11根据检索地址指针查询存储模块121,根据当前数据记录的第一块数据块的记录信息获取本条数据记录的长度;步骤403,控制模块11根据本条数据记录的长度,依次检索存储模块121中本条数据记录占用的存储单元,判断是否符合检索条件;如果符合条件则读取本条数据记录,得到查询结果;如果不符合条件则执行步骤 404 ;步骤404,检索完本条数据记录的最后一块数据块后,检索地址指针增加当前检索的数据记录占用存储空间的长度;步骤405,判断检索地址指针与指针模块122中当前的地址指针是否相同,如果不同,则执行步骤402 ;如果相同则结束,返回无匹配记录的信息,表示已存储的变长数据记录已经全部遍历,但无查询结果。图5为变长数据记录删除方法的流程图,包括步骤501,控制模块11调用存取程序进行查询,获取存储模块121中将要删除的数据记录的存储地址和数据记录的长度;步骤502,控制模块11调用存取程序,将存储模块121中将要删除的数据记录占用的存储单元擦除;步骤503,存取程序将指针模块122中的地址指针改写为已删除的数据记录的起始地址。根据本发明的变长数据管理方法,将可变长度的数据构造为具有一定数据结构的数据记录,存储时连续占用存储模块的存储空间,使不同长度的数据记录首尾相接,连续存储,可以提高存储空间的使用率,同时提供便捷的查询和删除操作。下面结合具体的实施方式对本发明的内容详细描述。实施例一如图6所示,为本发明实施例一的变长数据存储装置的结构图。本实施例中的存储体包括三星NAND FLASH芯片,型号为K9F1G08U0M以及存储芯片ATMCOl。其中K9F1G08U0M作为存储模块,存储数据记录;AT24C01作为指针模块,存储地址指针。K9F1G08U0M的1/00 1/07、RE、TO、ALE、CLE管脚分别与控制模块连接。其中I/ 00 1/07为8个输入输出管脚,RE为读操作控制管脚,WE为写操作控制管脚,ALE为地址锁存控制管脚,CLE为命令锁存控制管脚。控制模块分别通过控制CLE、ALE、TO、RE管脚的电平,对K9F1G08U0M进行控制字操作、地址操作、写操作或者读操作。1/00 1/07为数据、 地址、命令的复用端口。向K9F1G08U0M内部写数据是基于页的,K9F1G08U0M的命令字、地址和数据都是通过并行口线1/00 1/07在控制信号的作用下分时操作。AT24C01的串行数据管脚SDA和串行时钟管脚SCL分别与控制模块连接。SDA 可双向传送数据,SCL提供串行时钟。控制模块通过SDA读取或者写入地址指针,指向 K9F1G08U0M存储空间的一个空地址。控制模块中运行存取程序,所述存取程序用于存取变长数据记录,对外提供其它程序访问的接口,对内对K9F1G08U0M和ATMCOl初始化、读取或者擦除。控制模块读取或者写入AT24C01中的地址指针,根据所述地址指针指向的地址对K9F1G08U0M中的数据记录进行查询、读写和删除操作。K9F1G08U0M容量为U8M字节,分为1024个BLOCK,如图7所示,每个BLOCK又分为64页,每页包含Q048+64)byte。其中每页的前2048bytes是数据区,用于存储数据;后 64bytes是空闲区。K9F1G08U0M的数据位为8位。根据K9F1G08U0M的物理存储结构,将K9F1G08U0M的每页划分为4个存储单元,定义单元块长为512字节,则K9F1G08U0M的每页可以存储4块数据。相应地,以“512字节” 为单位依次分割数据记录,将数据记录的长度记为以所述“512字节”为单位依次分割产生的数据块的块数;当最后一块数据块中的数据部分不足整个单元块时,在最后一块数据块的尾部增加0,构成一块完整的单元块。并在每条数据记录的第一块的第3字节规定为表示本条数据记录长度的标识,单位为块。控制模块中运行存取程序,将接收到的变长数据整理为预先定义的数据记录格式,长度都是512字节的整数倍。对于原数据记录不足512字节的,按512字节处理,后面空的位置填补0。贝Ij当数据记录比较长时,可以占用多个页。将ATMCOl的0x00 0x03空间用作存放指向K9F1G08U0M数据区的地址指针, 地址指针定义为4个字节长度,例如0地址为0x00000000,“Ox”表示十六进制表示法。当 K9F1G08U0M数据区为空时,地址指针指向K9F1G08U0M数据区的起始位置。在每保存一条数据记录后,地址指针都要根据记录的实际长度而向后移动。图8所示为根据本发明实施例一的变长数据存储方法的流程图。包括步骤步骤801,将K9F1G08U0M的存储空间依次划分为大小为512字节的存储单元,定义为单元块的大小为512字节;如图9所示,即将K9F1G08U0M的每页划分为4个存储单元。步骤802,初始化;先调用NAND FLASH擦除程序将K9F1G08U0M的全部BLOCK都擦除,再调用ATMCOl的擦除程序将其全部空间擦除,向ATMCOl的0x00 0x03地址写入 0x00000000,作为存储数据的初始地址。步骤803,构造记录;控制模块执行存取程序,将需要存储的变长数据构造成为一条数据记录,数据记录的长度为512字节的整数倍;如图9所示,数据记录C包括第一块数据块Cl和第二块数据块C2,指定第一块数据块Cl的第3字节为记录信息C11,记录信息Cll指明数据记录C的长度为2块单元块; 数据记录C中除记录信息Cll之外的部分为需要存储的变长数据;数据记录D包括第一块数据块Dl、第二块数据块D2、第三块数据块D3和第四块数据块D4,指定第一块数据块Dl的第3字节为记录信息D11,记录信息Dll指明数据记录D 的长度为4块单元块;其中第四块数据块D4中的数据部分不足整个单元块,在第四数据块 D4尾部增加填充信息D41 (00000),构成整个单元块;数据记录D中除记录信息Dll和填充信息D41之外的部分为需要存储的变长数据。步骤804,从本条数据记录的记录信息中读取本条数据记录的长度,判断 K9F1G08U0M当前BLOCK的页的剩余空间是否可以容纳本条数据记录;根据数据记录的块数与NAND FLASH当前BLOCK的页的剩余空间折算后的块数进行比较,判断数据记录的块数是否小于当前BLOCK的页的空闲存储单元的块数,如果是,则执行步骤805,存储数据;如果否,即当NAND FLASH的一个BLOCK剩余的页折算后的块数不足以存放本条记录时,则执行步骤806。如图9所示,数据记录C存储在BLOCKl的pagel的存储单元1和存储单元2。如果当前需要存储的记录为数据记录D,数据记录D中的记录信息Dll中指示本记录长度为4 个单元块。BLOCKl剩余页折算后的块数可以存储数据记录D,执行步骤805。如图9所示,数据记录E存储在BLOCKl的page4的存储单元1和存储单元2。如果当前需要存储的记录为数据记录F,数据记录F中的记录信息Fl 1中指示本记录长度为3 个单元块。BLOCKl的page4仅空闲2个存储单元,则BLOCKl剩余页折算后的块数不足以存储数据记录F,执行步骤806。步骤805,存储数据;将数据记录以追加的方式写入地址指针指向的位置。从ATMCOl中读出地址指针,然后从地址指针指向的地址开始依次向K9F1G08U0M 中写入数据记录。步骤806,将地址指针指向下一 BLOCK的起始位置,将本条数据记录存储到下一个 BLOCK中,保证任何一条数据记录不跨越两个BLOCK存储,这样做是为了删除数据操作和查询数据操作的方便执行。步骤807,将地址指针后移,后移的大小为当前存储的数据记录的长度;将(本条记录的起始地址+512X本条记录块数)的结果作为新的空地址,写回到 AT24C01的地址指针存储区。步骤808,控制模块判断是否继续存储,如果是,则执行步骤803,如果不是,则执行步骤809,结束。根据实施例一的变长数据查询方法,是从K9F1G08U0M的0地址开始,按照变长记录的每一条首地址依次跳跃,逐一检索每条数据记录,直到找到符合条件的数据,当检索地址跳跃到了与当前地址指针记录的地址相等时,表示已有变长记录数据已经全遍历但没结^ ο图10为根据实施例一的查询变长数据记录的方法的流程图,包括步骤1001,控制模块定义一检索地址指针,所述检索地址指针的初始值为 K9F1G08U0M存储空间的起始地址;步骤1002,控制模块根据检索地址指针查询K9F1G08U0M,判断当前的存储空间是否为空闲,如果否,则执行步骤1003,如果是,则执行步骤1004 ;步骤1003,根据当前数据记录的第一块数据块的记录信息获取本条数据记录的长度;步骤1004,将检索地址指针指向下一 BLOCK的起始位置;步骤1005,控制模块根据本条数据记录的长度,依次检索K9F1G08U0M中本条数据记录占用的存储单元,判断是否符合检索条件;如果符合条件则读取本条数据记录,得到查询结果;如果不符合条件则执行步骤 1006 ;步骤1006,检索完本条数据记录的最后一块数据块后,检索地址指针增加当前检索的数据记录占用存储空间的长度,将(本条记录的起始地址+512X本条记录块数)作为新的检索地址指针;步骤1007,判断检索地址指针与ATMCOl中当前的地址指针是否相同,如果不同, 则执行步骤1002 ;如果相同则结束,返回无匹配记录的信息,表示已存储的变长数据记录已经全部遍历,但无查询结果。根据实施例一的变长数据删除方法,是按照NAND FLASH K9F1G08U0M的BLOCK执行,将要删除的变长数据记录所在的BLOCK擦除,然后将该BLOCK的首地址写入ATMCOl的 0x00 0x03。实施例二与实施例一不同的是,实施例二中的存储模块为电可擦可编程只读存储器 EEPROM(ElectricalIy Erasable Programmable Read-Only Memory)。本实施例中的存储体包括ATMC10M和ATMC01。其中ATMC10M作为存储模块, 存储数据记录;AT24C01作为指针模块,存储地址指针。如图11所示,为本发明实施例二的变长数据存储装置的结构图。AT24C10M和AT24C01都是基于IIC总线协议,控制模块通过IIC总线挂接 AT24C1024和ATMCO1。AT24C1024的串行数据管脚SDA和串行时钟管脚SCL分别与控制模块连接,同样,AT24C01的串行数据管脚SDA和串行时钟管脚SCL分别与控制模块连接。控制模块中运行存取程序,根据时序分别选通ATMC1024和ATMC01。对于指针模块ATMCO1,控制模块通过SDA读取或者写入地址指针,指向AT24C10M存储空间的一个空地址。对于存储模块ATMC1024,控制模块通过SDA读取或者写入数据记录,根据ATMC01 中的地址指针,对ATMC1024中的数据记录进行查询、存储和删除的操作。AT24C10M可以进行“块”擦写、编程,也可以进行单字节擦写、编程操作。在本实施例中,设置为按字节擦写。AT24C10M为串行EEPR0M,存储容量为U8Kbits,存储区由512个page构成,每个 page包含有256个byte。根据ATMC10M的物理存储结构,将ATMC10M的每页视为1个存储单元,定义单元块长为256字节,则ATMC1024的每页可以存储1块数据。相应地,以“256字节”为单位依次分割数据记录,将数据记录的长度记为以所述“256字节”为单位依次分割产生的数据块的块数;当最后一块数据块中的数据部分不足整个单元块时,在最后一块数据块的尾部增加0,构成一块完整的单元块。并在每条数据记录的第一块的第3字节规定为表示本条数据记录长度的标识,单位为块。控制模块中运行存取程序,将接收到的变长数据整理为预先定义的数据记录格式,长度都是256字节的整数倍。对于原数据记录不足256字节的,按256字节处理,后面空的位置填补0。贝Ij当数据记录比较长时,可以占用多个页。将ATMCOl的0x00 0x03空间用作存放指向AT24C10M数据区的地址指针,地址指针定义为4个字节长度,例如0地址为0x00000000,“Ox”表示十六进制表示法。当 AT24C10M数据区为空时,地址指针指向ATMC10M数据区的起始位置。在每保存一条数据记录后,地址指针都要根据记录的实际长度而向后移动。图12所示为根据本发明实施例一的变长数据存储方法的流程图。包括步骤步骤1201,将ATMC10M的存储空间依次划分为大小为256字节的存储单元,定义为单元块的大小为256字节;如图12所示,即将ATMC1024的每页视为1个存储单元。步骤1202,初始化;先调用擦除程序将AT24C10M和AT24C01的全部空间擦除,向 AT24C01的0x00 0x03地址写入0x00000000,作为存储数据的初始地址。步骤1203,构造记录;控制模块执行存取程序,将需要存储的变长数据构造成为一条数据记录,数据记录的长度为256字节的整数倍;如图13所示,数据记录G包括第一块数据块Gl和第二块数据块G2,指定第一块数据块Gl的第3字节为记录信息G11,记录信息Gll指明数据记录G的长度为2块单元块; 数据记录G中除记录信息Gll之外的部分为需要存储的变长数据;数据记录H包括第一块数据块Hl、第二块数据块H2、第三块数据块H3和第四块数据块H4,指定第一块数据块Hl的第3字节为记录信息H11,记录信息Hll指明数据记录H 的长度为4块单元块;其中第四块数据块H4中的数据部分不足整个单元块,在第四数据块 H4尾部增加填充信息H41 (00000),构成整个单元块;数据记录H中除记录信息Hll和填充信息H41之外的部分为需要存储的变长数据。步骤1204,存储数据;将数据记录以追加的方式写入地址指针指向的位置。从ATMCOl中读出地址指针,然后从地址指针指向的地址开始依次向AT24C10M 中写入数据记录。步骤1205,将地址指针后移,后移的大小为当前存储的数据记录的长度;将(本条记录的起始地址+256X本条记录块数)的结果作为新的空地址,写回到 AT24C01的地址指针存储区。步骤1206,控制模块判断是否继续存储,如果是,则执行步骤1203,如果不是,则执行步骤1207,结束。根据实施例二的变长数据查询方法,是从ATMC10M存储空间的0地址开始,按照变长记录的每一条首地址依次跳跃,逐一检索每条数据记录,直到找到符合条件的数据,当检索地址跳跃到了与当前地址指针记录的地址相等时,表示已有变长记录数据已经全遍历但没结果。图14为根据实施例二的查询变长数据记录的方法的流程图,包括步骤1401,控制模块定义一检索地址指针,所述检索地址指针的初始值为 AT24C1024存储空间的起始地址;步骤1402,根据当前数据记录的第一块数据块的记录信息获取本条数据记录的长
步骤1403,控制模块根据本条数据记录的长度,依次检索AT24C10M存储空间中本条数据记录占用的存储单元,判断是否符合检索条件;如果符合条件则读取本条数据记录,得到查询结果;如果不符合条件则执行步骤 1404 ;步骤1404,检索完本条数据记录的最后一块数据块后,检索地址指针增加当前检索的数据记录占用存储空间的长度,将(本条记录的起始地址+256X本条记录块数)作为新的检索地址指针;步骤1405,判断检索地址指针与ATMCOl中当前的地址指针是否相同,如果不同, 则执行步骤1402 ;如果相同则结束,返回无匹配记录的信息,表示已存储的变长数据记录已经全部遍历,但无查询结果。根据实施例二的变长数据删除方法,是按照ATMC1024的字节执行擦除,将要删除的变长数据记录所在的页擦除,然后将该页的首地址写入ATMCOl的0x00 0x03。优选地,本发明可应用于税控收款机中。税控收款机要求能够可靠存储大量发票数据,因此发票存储管理是关键功能。变长是指发票长度因各发票头部和发票所含信息明细的不同,占用的存储空间的大小也不相同。例如,每张发票所占用的存储空间为几百字节或几千字节。使用本发明的变长数据管理方法和装置,每张发票构成一条数据记录,可变长度的发票数据在存储器中存储的位置是首尾相连的,存储器没有冗余空间,或者将冗余空间尽可能减少。税控收款机不需安装嵌入式数据库和文件系统,并且能方便的进行增加、删除、查询发票记录。虽然本发明的具体实施中的存储模块是以NAND flash和EEPROM为例描述的,但是本发明变长数据存储方法和装置的技术方案也可用于其它有类似操作特性的存储设备上。在具体实现时,需根据本发明的思想作适应性修改。以上所述仅为本发明的较佳实施例,对本发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在本发明权利要求所限定的精神和范围内可对其进行许多改变, 修改,甚至等效,但都将落入本发明的保护范围内。
权利要求
1.一种变长数据管理方法,其特征在于,所述方法包括变长数据存储方法,步骤为 步骤al,将存储模块的存储空间依次划分为多个相同大小的存储单元,所述存储单元的容量定义为单元块;步骤a2,构造数据记录,所述数据记录包括记录信息和数据部分,所述数据部分为需要存储的变长数据,所述的记录信息中指明本条数据记录的长度;所述数据记录由多个数据块构成;以所述单元块为单位依次分割所述数据记录,形成所述多个数据块;步骤a3,存储所述数据记录,根据指针模块提供的地址指针将所述数据记录依次写入所述存储模块的存储单元;所述地址指针指向所述存储模块的第一空地址;步骤a4,更新所述地址指针;写完所述数据记录的最后一块数据块后,所述地址指针增加当前存储的数据记录占用存储空间的长度,指向所述存储模块中的第二空地址,将所述第二空地址写入指针模块。
2.根据权利要求1所述的变长数据管理方法,其特征在于,所述变长数据存储方法的步骤a2中,所述数据记录的长度为以所述单元块为单位依次分割所述数据记录产生的数据块的块数。
3.根据权利要求1所述的变长数据管理方法,其特征在于,所述变长数据存储方法的步骤a2中,当最后一块数据块中的数据部分不足整个单元块时,记为一块单元块。
4.根据权利要求1所述的变长数据管理方法,其特征在于,所述变长数据存储方法的步骤a2中,在第一块数据块中指定一固定位置为所述记录信息。
5.根据权利要求1至4任一项所述的变长数据管理方法,其特征在于,还包括变长数据查询方法,步骤为步骤bl,根据一检索地址指针查询所述存储模块,根据所述数据记录的记录信息获取所述数据记录的长度;所述检索地址指针初始值为所述存储模块的起始地址;步骤1^2,根据所述数据记录的长度,依次检索所述存储模块中所述数据记录占用的存储单元,判断是否符合检索条件;步骤b3,检索完所述数据记录的最后一块数据块后,所述检索地址指针增加当前检索的数据记录占用存储空间的长度;步骤b4,判断所述检索地址指针与所述指针模块中当前的地址指针是否相同,如果不同,则执行步骤b2 ;如果相同则结束。
6.根据权利要求1至4任一项所述的变长数据管理方法,其特征在于,还包括变长数据删除方法,步骤为步骤cl,读取所述存储模块中将要删除的数据记录的存储地址和数据记录的长度;步骤c2,将所述将要删除的数据记录占用的存储单元擦除;步骤c3,将所述指针模块中的地址指针改写为已删除的数据记录的起始地址。
7.一种变长数据管理装置,其特征在于,由控制模块和存储体构成;所述存储体由存储模块和指针模块组成;所述控制模块分别与所述存储模块和所述指针模块连接;所述存储模块存储数据记录;所述指针模块中存放一地址指针,所述地址指针指向所述存储模块的空地址;所述控制模块运行存取程序,所述存取程序存取变长数据记录,提供其它程序访问的接口,并初始化所述存储体,读取或者擦除所述存储体;所述控制模块读取或者写入所述指针模块中的地址指针,根据所述地址指针指向的地址对所述存储模块中的数据记录进行查询、读写和删除操作。
8.根据权利要求7所述的变长数据管理装置,其特征在于,所述存储模块的存储空间依次划分为多个相同大小的存储单元,所述存储单元的容量定义为单元块。
9.根据权利要求8所述的变长数据管理装置,其特征在于,所述数据记录包括记录信息和数据部分,所述数据部分为需要存储的变长数据,所述的记录信息中指明本条数据记录的长度;所述数据记录由多个数据块构成;以所述单元块为单位依次分割所述数据记录,形成所述多个数据块。
10.根据权利要求9所述的变长数据管理装置,其特征在于,所述数据记录的最后一块数据块中的数据部分不足整个单元块时,记为一块单元块。
全文摘要
一种变长数据管理方法,包括变长数据存储方法,步骤为将存储模块的存储空间依次划分为多个相同大小的存储单元;构造数据记录,所述数据记录包括记录信息和数据部分,所述数据部分为需要存储的变长数据,所述的记录信息中指明本条数据记录的长度;存储所述数据记录,根据指针模块提供的地址指针将所述数据记录依次写入所述存储模块的存储单元;更新所述地址指针,写完所述数据记录的最后一块数据块后,所述地址指针指向所述存储模块中的第二空地址,将所述第二空地址写入指针模块。一种变长数据管理装置,由控制模块和存储体构成;所述存储体由存储模块和指针模块组成;所述控制模决分别与所述存储模块和所述指针模块连接。
文档编号G06F12/06GK102169460SQ20101011554
公开日2011年8月31日 申请日期2010年2月26日 优先权日2010年2月26日
发明者张平, 李利, 杨大勇, 甘景全, 贺毅 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1