CN103902228A - 一种变长数据存取方法 - Google Patents
一种变长数据存取方法 Download PDFInfo
- 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
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所述的一种变长数据存取方法,其特征在于,采用顺序读取或随机读取的方式读取数据。
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)
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)
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 | 航天信息股份有限公司 | 变长数据管理方法及装置 |
-
2012
- 2012-12-27 CN CN201210581148.XA patent/CN103902228A/zh active Pending
Patent Citations (3)
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)
Title |
---|
徐甲同 等: "《计算机操作***教程》", 28 February 2001, 西安电子科技大学出版社 * |
蔡开裕 等: "《计算机网络》", 31 March 2001, 机械工业出版社 * |
Cited By (9)
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 |