CN103902228A - 一种变长数据存取方法 - Google Patents

一种变长数据存取方法 Download PDF

Info

Publication number
CN103902228A
CN103902228A CN201210581148.XA CN201210581148A CN103902228A CN 103902228 A CN103902228 A CN 103902228A CN 201210581148 A CN201210581148 A CN 201210581148A CN 103902228 A CN103902228 A CN 103902228A
Authority
CN
China
Prior art keywords
data
elongated
length
packet
storage block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201210581148.XA
Other languages
English (en)
Inventor
黄和石
甘景全
李利
吴岩
洒西涛
宋颖
李少维
魏贺生
张巍
单国军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN201210581148.XA priority Critical patent/CN103902228A/zh
Publication of CN103902228A publication Critical patent/CN103902228A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种变长数据存取方法,在数据存储阶段,将变长数据分割为多个含固定字节的数据段,并对所述多个数据段进行封装得到多个包含固定字节的数据包;依次将多个数据包存入确定好的存储块中,且保证同一条变长数据存储在同一个存储块内。在数据读取阶段,首先获取所述变长数据的起始地址和终止地址,接下来去除所述存储块块尾的冗余数据,计算实际已用存储空间,并按照固定长度读取所述存储块中的数据,直至读取至终止地址时结束。本发明采用变长存储、定长读取的方式,既满足数据发展的需求,又节约硬件成本,无需改装旧有的定长数据读取设备,从而延长了已有设备的使用期限,有利于节约成本、提高效率。

Description

一种变长数据存取方法
技术领域
本发明涉及数据读写方法技术领域,特别涉及一种利用定长设备对变长数据进行读写操作的方法。
背景技术
随着国税业务的拓展,大量服务于企业端的旧款税控设备无法满足开具变长***的存储要求,若全部更换为新设备,会给企业用户造成沉重的负担,同时大规模升级设备也涉及人力、物力等资源的极大耗费。受限于设备硬件NandFlash存储容量过小,以及兼容现有税控******明细定长报税方式,因此,如何提供一种利用旧有税控***存取变长数据***的方法,实为本领域技术人员亟待解决的问题。
发明内容
本发明的目的是为了兼容目前变长数据***的发展趋势以及税控***定长报税的方式,提供一种可靠性好且不需改造旧有设备的变长数据存取方法。
为达上述目的,本发明提供一种变长数据存取方法,包括数据存储阶段和数据读取阶段两部分,所述数据存储阶段包括以下步骤:
C1:将存储介质划分为多个容量相等的存储块;
C2:将所述变长数据按照字节数分割为多个含固定字节的数据段,对所述多个数据段进行封装,得到多个包含固定字节的数据包;所述多个数据包根据剩余长度分为首包、中间包和尾包,其中剩余长度是指位于当前数据包之后的所有数据包的大小;
C3:计算所述存储块的剩余空间,根据剩余空间大小确定安放所述变长数据的存储块,以保证同一条变长数据存储在同一个存储块内;
C4:将所述多个数据包依次存入确定好的存储块内;
所述数据读取阶段包括以下步骤:
D1:获取所述变长数据的起始地址和终止地址;
D2:去除所述存储块块尾的冗余数据,计算实际已用存储空间;
D3:按照固定长度读取所述存储块中的数据;
D4:读取至终止地址,数据读取过程结束。
本发明提出的一种变长数据存取方法,其中,步骤C2中对所述数据包的格式为:
标志位+数据总长度+剩余长度+数据段+校验和
其中标志位用于表示一个数据包的开始,数据总长度用于表示一条变长数据的总体长度,校验和用于进行数据校验。
本发明提出的一种变长数据存取方法,其中,所述步骤C3中确定存储块的方法为,比较存储块的剩余空间和要存储的变长数据的大小,若剩余空间大于所述变长数据大小,则将所述变长数据存储在所述存储块内;若剩余空间不足以存储该变长数据的,该剩余空间将被舍弃,所述变长数据从下一个存储块的首部开始存储;同时记录被舍弃的剩余空间数。
本发明提出的一种变长数据存取方法,其中,所述步骤C4中还包括:判断当前数据包是否为首包,若是,重复步骤C3;若不是,直接存储当前数据包。
本发明提出的一种变长数据存取方法,其中,当步骤C2中分割后的数据段长度不足预设的固定字节的,不足部分用0填补。
本发明提出的一种变长数据存取方法,其中,所述步骤D3中包括:读取数据包中的标志位,重新组装原变长数据。
本发明提出的一种变长数据存取方法,其中,采用顺序读取或随机读取的方式读取数据。
与现有技术相比,本发明的有益效果在于:
通过本发明,使旧款税控设备能够支持变长***存储并兼容定长报税方式,延长了已有设备的使用期限,满足新需求的同时,也节省了硬件成本。本发明不需要存储报税临时文件,节省空间,是一种高效的变长数据存取解决方案。
附图说明
图1为本发明的数据存储过程流程图;
图2为本发明的数据读取过程流程图;
图3为本发明数据存储阶段的一具体实施例的示意图;
图4为本发明数据读取阶段的一具体实施例的示意图。
具体实施方式
以下结合附图,就本发明上述的和另外的技术特征和优点做进一步地说明。
根据本发明的技术方案,开具***时,按照一定规则将变长***明细数据裁切成固定大小的数据段,并将数据段封装为数据包。数据包尺寸由接口软件与固件程序约定,可设置为任何有意义的数值。在本发明的实施例中,该固定大小选择为512字节,即数据包的尺寸为512字节。
变长***数据包格式如下:
***标志+***数据总长度+剩余长度+***数据(一个分数据包,512字节)+校验和
写入时根据剩余长度不同,将分割并封装好的数据包又分为首包、中间包和尾包。剩余长度是指包括当前数据包及其之后的所有数据包的大小。
所谓首包是指剩余长度等于变长***数据的总长度,也即一条变长***数据的第一个数据包;中间包是指剩余长度大于一个分数据包的大小(512字节);尾包是指剩余长度小于或等于一个分数据包的大小(512字节)。
上述分割方法可适用于任意长度的变长***明细数据,不需对***明细数据进行修改,能够保证数据的完整性和一致性;同时通过“剩余长度”字段标示裁切下的每一个分片,可用于计算它与首包的偏移,也便于存取寻址,若拓展为网络传输,也可用于数据包的排序和重传。
整张***明细数据在NandFlash存储介质上是连续存储的,先寻找可用空间存储***明细数据的首包,存储***标志,再通过“剩余长度”字段计算与首包的偏移,存储获取的剩余数据包。
值得一提的是,并非所有的变长***数据都具有首包、中间包和尾包,当变长***数据长度不足时,可能会只包含首包或者只包含首包和尾包。如下所述:
只有首包的情况:写入一张长度为436字节的***明细数据时,只需要使用一个***数据包(512字节)。
首包和尾包的情况:写入一张长度在513字节-1024字节的***明细数据时,需要使用两个数据包,首包512字节,尾包1-512字节真实数据,不足512字节的,空的位置填补0数据,固件程序可以只存储实际长度的数据,也可以存储填充过0的数据,本文采用后一种方式,方便数据处理。
首包、中间包、尾包的情况:写入一张长度在1024字节(512*2)以上的***明细数据时,例如明细数据为4.9k,裁切为如下格式:首包0.5k字节,8个0.5k字节的中间包,含有0.4k真实数据+0.1k填充0数据的尾包。
NandFlash存储介质容量为128M字节,分为1024个BLOCK(块),每个BLOCK128K字节。要求单张变长***明细数据不能跨块。当某一BLOCK中剩余存储空间不足以存储本张***时,剩余存储空间将被舍弃,从下一BLOCK首部开始存储。同时记录块内被舍弃的剩余空间数(除以512字节),例如剩余4K字节,记录4K/512=8,便于报税时组装定长报税数据。
图1详细描述了上述数据存储过程的流程。开具完***之后,首先对变长***数据进行裁切,存储时,先判断要写入的当前数据包是否为首包,如是则需要计算块内剩余空间,以确定该变长数据存储在那个存储块上,以保证一条变长***数据位于同一个存储块内;如不是首包,则不需计算剩余空间,只需计算出存储地址,直接将数据写入指定的存储块中。
图2给出了计算剩余空间、确定存储块的一个具体实施例。该实施例中,起始地址为某一块首部,此块中已存储***明细数据如下:0.5k字节、1k字节、24.5k、60k、35k字节大小的***,剩余7k字节。当需要开具一张大小为8k字节的***时,当前BLOCK(块)剩余空间不足,记录7k的舍弃空间(7K/512=14),使用紧挨着的下一块存储8k字节的***,即8k***明细数据首包存储在下一BLOCK(块)首部,中间包及尾包的存储地址根据该包与首包的偏移计算得出,依次存储。
本发明的数据读取过程与数据存储过程类似,具体可见图2所示的数据读取流程图。首先获取需要读取的数据的起始地址,从起始地址起扫描数据,去除掉补零的冗余数据,计算实际已用存储空间;当确认报税数据位于当前存储块内时,读取标志字段,针对实际数据采用逐段发送定长2k字节的方式访问,即开票时按照单张变长(长度0-64k)***存储,报税时按照固定长度(2k)读取。
现有***的报税阶段,仍采用定长方式接收报税数据。报税时重新读取标志信息,生成变长***明细报税数据。***明细数据应连续组织,重新编号(每2K数据分配一个编号),允许随机读取指定编号的报税数据。报税数据直接发送给接口函数,不使用额外存储空间。
还以图2所述的存储块为例,块中已存储***明细数据如下:0.5k字节、1k字节、24.5k、60k、35k字节大小的***。图4给出了该实施例的数据读取示意图。
当报税时需要读取编号为1的1K报税数据时,应取0.5k字节***,加上1k字节***,加上24.5k字节***的前0.5k,组合成2k的报税数据。
当报税时需要读取编号为2的1K报税数据时,应取24.5k字节***紧挨着前0.5k的2k作为报税数据。
当报税时需要读取编号为61的2K报税数据时,应取35k字节***的最后1k,跳过7k的舍弃空间,加上8k字节***的前1k,组合成2k的报税数据。
另外,本发明提出的方法用于擦除旧数据时,应尽量保持有最多的剩余***明细数据可用,如:***明细数据均为指定长度时(512字节的偶数倍),可充分利用存储空间;***明细数据均为比较小的票时(小于或等于512字节),可充分利用存储空间;***明细数据大小随机分布时,大数据量长期统计,平均每块会浪费(***最大允许长度/2)字节的空间。
以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离以下所附权利要求所限定的精神和范围的情况下,可做出许多修改,变化,或等效,但都将落入本发明的保护范围内。

Claims (7)

1.一种变长数据存取方法,包括数据存储阶段和数据读取阶段两部分,其特征在于,所述数据存储阶段包括以下步骤:
C1:将存储介质划分为多个容量相等的存储块;
C2:将所述变长数据按照字节数分割为多个含固定字节的数据段,对所述多个数据段进行封装,得到多个包含固定字节的数据包;所述多个数据包根据剩余长度分为首包、中间包和尾包,其中剩余长度是指包括当前数据包及其之后的所有数据包的大小;
C3:计算所述存储块的剩余空间,根据剩余空间大小确定安放所述变长数据的存储块,以保证同一条变长数据存储在同一个存储块内;
C4:将所述多个数据包依次存入确定好的存储块内;
所述数据读取阶段包括以下步骤:
D1:获取所述变长数据的起始地址和终止地址;
D2:去除所述存储块块尾的冗余数据,计算实际已用存储空间;
D3:按照固定长度读取所述存储块中的数据;
D4:读取至终止地址,数据读取过程结束。
2.根据权利要求1所述的一种变长数据存取方法,其特征在于,步骤C2中对所述数据包的格式为:
标志位+数据总长度+剩余长度+数据段+校验和
其中标志位用于表示一个数据包的开始,数据总长度用于表示一条变长数据的总体长度,校验和用于进行数据校验。
3.根据权利要求1所述的一种变长数据存取方法,其特征在于,所述步骤C3中确定存储块的方法为,比较存储块的剩余空间和要存储的变长数据的大小,若剩余空间大于所述变长数据大小,则将所述变长数据存储在所述存储块内;若剩余空间不足以存储该变长数据的,该剩余空间将被舍弃,所述变长数据从下一个存储块的首部开始存储;同时记录被舍弃的剩余空间数。
4.根据权利要求1所述的一种变长数据存取方法,其特征在于,所述步骤C4中还包括:判断当前数据包是否为首包,若是,重复步骤C3;若不是,直接存储当前数据包。
5.根据权利要求1所述的一种变长数据存取方法,其特征在于,当步骤C2中分割后的数据段长度不足预设的固定字节的,不足部分用0填补。
6.根据权利要求1所述的一种变长数据存取方法,其特征在于,所述步骤D3中包括:读取数据包中的标志位,重新组装原变长数据。
7.根据权利要求6所述的一种变长数据存取方法,其特征在于,采用顺序读取或随机读取的方式读取数据。
CN201210581148.XA 2012-12-27 2012-12-27 一种变长数据存取方法 Pending CN103902228A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210581148.XA CN103902228A (zh) 2012-12-27 2012-12-27 一种变长数据存取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210581148.XA CN103902228A (zh) 2012-12-27 2012-12-27 一种变长数据存取方法

Publications (1)

Publication Number Publication Date
CN103902228A true CN103902228A (zh) 2014-07-02

Family

ID=50993578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210581148.XA Pending CN103902228A (zh) 2012-12-27 2012-12-27 一种变长数据存取方法

Country Status (1)

Country Link
CN (1) CN103902228A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107395565A (zh) * 2017-06-15 2017-11-24 北京机械设备研究所 一种定长单字节格式报文协议下串口接收预处理方法
CN108108376A (zh) * 2016-11-25 2018-06-01 中标软件有限公司 一种线性自适应文件名长度调度***及方法
CN108268218A (zh) * 2018-01-10 2018-07-10 北京思特奇信息技术股份有限公司 一种基于网络编码的变长数据段的写入方法及读取方法
CN109117417A (zh) * 2018-09-29 2019-01-01 深圳比特微电子科技有限公司 计算芯片及其操作方法
CN112527754A (zh) * 2020-12-23 2021-03-19 山东鲁能软件技术有限公司 基于按位变长存储的数值型数据压缩方法及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174708A1 (en) * 2002-03-12 2003-09-18 Van Asten Kizito Gysbertus Antonius High-speed memory having a modular structure
CN1936864A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 不定长记录的数据组织方法
CN102169460A (zh) * 2010-02-26 2011-08-31 航天信息股份有限公司 变长数据管理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030174708A1 (en) * 2002-03-12 2003-09-18 Van Asten Kizito Gysbertus Antonius High-speed memory having a modular structure
CN1936864A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 不定长记录的数据组织方法
CN102169460A (zh) * 2010-02-26 2011-08-31 航天信息股份有限公司 变长数据管理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
徐甲同 等: "《计算机操作***教程》", 28 February 2001, 西安电子科技大学出版社 *
蔡开裕 等: "《计算机网络》", 31 March 2001, 机械工业出版社 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108376A (zh) * 2016-11-25 2018-06-01 中标软件有限公司 一种线性自适应文件名长度调度***及方法
CN108108376B (zh) * 2016-11-25 2021-07-09 中标软件有限公司 一种线性自适应文件名长度调度***及方法
CN107395565A (zh) * 2017-06-15 2017-11-24 北京机械设备研究所 一种定长单字节格式报文协议下串口接收预处理方法
CN107395565B (zh) * 2017-06-15 2020-03-17 北京机械设备研究所 一种定长单字节格式报文协议下串口接收预处理方法
CN108268218A (zh) * 2018-01-10 2018-07-10 北京思特奇信息技术股份有限公司 一种基于网络编码的变长数据段的写入方法及读取方法
CN108268218B (zh) * 2018-01-10 2021-02-02 北京思特奇信息技术股份有限公司 一种基于网络编码的变长数据段的写入方法及读取方法
CN109117417A (zh) * 2018-09-29 2019-01-01 深圳比特微电子科技有限公司 计算芯片及其操作方法
CN109117417B (zh) * 2018-09-29 2023-02-17 深圳比特微电子科技有限公司 计算芯片及其操作方法
CN112527754A (zh) * 2020-12-23 2021-03-19 山东鲁能软件技术有限公司 基于按位变长存储的数值型数据压缩方法及***

Similar Documents

Publication Publication Date Title
CN102508784B (zh) 视频监控设备中闪存卡的数据存储方法及其***
CN104462141B (zh) 一种数据存储与查询的方法、***及存储引擎装置
CN103902228A (zh) 一种变长数据存取方法
CN104220991B (zh) 用于允许数据在nand闪存上的有效存储的架构
CN102377246B (zh) 基于iec61850故障分析***的图形实例化方法
CN103294615B (zh) 一种存储机顶盒用户信息的方法
CN100561386C (zh) 一种数据保存方法和装置
CN103370691A (zh) 管理缓冲器溢出状况
CN103037344B (zh) 一种话单去重方法及装置
CN102867071A (zh) 一种网管海量历史数据管理方法
CN102158349A (zh) 一种日志管理装置及方法
CN101963912A (zh) 一种实现保存和校验***硬件配置信息的方法
CN105791178B (zh) 报文组装方法及装置
JP2012074026A5 (zh)
CN110908707A (zh) 一种资源打包方法、装置、服务器及存储介质
CN103500206A (zh) 基于文件存储数据的存储方法及装置
CN107463506B (zh) 一种电能表的数据存储管理方法
CN108664482A (zh) Flash存储器及存储文件管理方法
CN102957629A (zh) 队列管理的方法和装置
CN103309621A (zh) 读取分段压缩包中数据的方法
CN107608624A (zh) 一种提升固态硬盘性能的方法
CN101303667A (zh) 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN110019347A (zh) 一种区块链的数据处理方法、装置及终端设备
CN110286859B (zh) 基于fat文件***的数据存储方法及装置
CN101207705A (zh) 图形文件管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140702

RJ01 Rejection of invention patent application after publication