CN1936864A - 不定长记录的数据组织方法 - Google Patents
不定长记录的数据组织方法 Download PDFInfo
- Publication number
- CN1936864A CN1936864A CN 200510037534 CN200510037534A CN1936864A CN 1936864 A CN1936864 A CN 1936864A CN 200510037534 CN200510037534 CN 200510037534 CN 200510037534 A CN200510037534 A CN 200510037534A CN 1936864 A CN1936864 A CN 1936864A
- Authority
- CN
- China
- Prior art keywords
- data
- record
- data block
- write
- structural information
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 13
- 238000012217 deletion Methods 0.000 claims description 18
- 230000037430 deletion Effects 0.000 claims description 18
- 230000008520 organization Effects 0.000 claims description 11
- 238000000151 deposition Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种不定长记录的数据组织方法,其包括以下步骤:a.应用程序将记录的存储空间划分为固定大小的数据块,每个数据块包括数据区和结构信息两部分;b.应用程序按步骤a所划分的数据块的大小将记录数据切分成若干个数据块,并将每块数据块附加上结构信息;c.长度不大于一个数据块的记录占用一个数据块,大于一个数据块的记录占用多个数据块,应用程序将同一记录的数据块采用链表形式组织前后关系。本发明可对记录的存储空间进行有效的管理,提高记录的读写效率和存储空间的利用率。
Description
技术领域
本发明涉及一种不定长记录的数据组织方法。
背景技术
记录是指同类信息中独立的一部分数据,例如,电子邮箱中的一封信件,手机中的一条短信息等,都属于一条记录。应用程序在接收输入信息时通常会将这些信息组织成为一条条的记录的形式存放在存储设备中。应用程序对这些生成的记录需要采用一定的存储方式存放在非易失类存储设备中,以便于长期保存记录。应用程序产生的记录长度通常是不确定的,如一封信件,少则几十个字节,多则几百万字节,如果采用统一大小的格式存储,不仅存储小记录时浪费存储空间,而且对大记录也有长度限制,如果采用连续存储的方式,则删除的记录所占用的存储空间无法被有效的再次利用,例如无法再存储比删除的记录长度长的大记录,因此执行删除、修改等操作效率极低,不易管理而且浪费空间。
发明内容
本发明所要解决的技术问题在于提供一种不定长记录的数据组织方法,其可对记录的存储空间进行有效的管理,提高记录的读写效率和存储空间的利用率。
为解决上述技术问题,本发明所采用的技术方案是:提供一种不定长记录的数据组织方法,其包括以下步骤:
a.应用程序将记录的存储空间划分为固定大小的数据块,每个数据块包括数据区和结构信息两部分;
b.应用程序按步骤a所划分的数据块的大小将记录数据切分成若干个数据块,并将每块数据块附加上结构信息;
c.长度不大于一个数据块的记录占用一个数据块,大于一个数据块的记录占用多个数据块,应用程序将同一记录的数据块采用链表形式组织前后关系。
本发明的有益效果是: 由于本发明将长度任意的记录切分为固定大小的数据块,同一记录的数据块以链表的形式组织,因此对存储空间的重复利用效率很高,不需要移动有效记录,删除后的数据块可以被再次写入,从而避免了存储碎片。
附图说明
图1是记录存储空间划分的示意图。
图2是数据块结构信息的示意图。
图3是写入3条记录A、B、C的存储空间示意图。
图4是删除记录B后的存储空间示意图。
图5是增加记录D后的存储空间示意图。
具体实施方式
本发明的不定长记录的数据组织方法包括以下步骤:
a.应用程序将记录的存储空间划分为固定大小的数据块,每个数据块包括数据区和结构信息两部分,数据块的结构信息中包含有记录ID、记录长度、节点号、下一块地址、数据块状态标记等信息;
b.应用程序按步骤a所划分的数据块的大小将记录数据切分成若干个数据块,并将每块数据块附加上结构信息;
c.长度不大于一个数据块的记录占用一个数据块,大于一个数据块的记录占用多个数据块,应用程序将同一记录的数据块采用链表形式组织前后关系,将同一记录的数据块的记录ID号定为相同,在其结构信息中存放前后节点关系;
d.当删除一条记录时,应用程序将该记录所属的全部数据块的状态标记改写为删除;当写记录数据时,则从存储空间最前面的删除状态的数据块开始写起,依次寻找下一个删除状态的数据块,如无删除状态的数据块,则写入第一个空闲数据块,写数据块时先写入数据,最后将数据块标记改写为有效标记。
数据块的大小可取任意值,但为了提高运算速度,通常取2的整数次幂,如64、128、256、512等,根据应用程序的特点可自行确定。
数据块包括数据区和结构信息,结构信息放在数据区后面,示意图如图1所示。这样设计是为了能够一次写完一个数据块,而且保证先写数据区,后写结构信息,当结构信息完整时数据区内容也一定完成。结构信息包含记录ID、记录长度、节点号、下一块地址、数据块状态标记等信息,这些数据有些是必需的,有些是可以以其它形式获得的,本发明的其中一个特点就是同一记录的数据块用链表形式组织。
一种具体的数据块结构信息组织形式如图2所示,记录总长度或数据块序号,用4字节无符号长整型变量表示,DWORD LenOrNo,如果是首块该变量表示记录的总长度,否则表示数据块的序号,首块的下一块序号为1,后续节点依次加1。下一个数据块的地址,用4字节无符号长整型变量表示,DWORD Next,如果该数据块是最后一块,这个变量设为Oxffffffff。记录的ID号,用2字节无符号整型变量表示,WORD ID,用来标明数据块属于哪个记录,共可管理65536条记录,如记录条数大于这个数字,也可将ID号扩充为4字节无符号长整型变量表示。首块标记,用1字节无符号整型变量表示,BYTE IsHead,若该数据块是记录的首块,这个变量为1,否则为0;当然,也可定义为其它值。数据块状态标记,用1字节无符号整型变量表示,BYTEFlag,用来注明数据块当前状态,比如删除、有效、空闲等。需要说明的是,数据块状态标记必须要放在最后,这样写完一个数据块时,如果数据块状态标记为有效,那么数据块一定是完整有效的。
下面举一个典型实例,将数据块大小指定为64字节,结构信息如上述占12字节,则数据块的数据区大小为52字节。我们要写入3条记录A、B、C,A长度为105字节,B长度为50字节,C长度为100字节。最初记录的存储空间都是空闲的,数据块可以连续往后写。记录A要占用3个数据块,因为2个数据块最多存放104字节的数据,剩下的一个字节也要占用一个数据块。记录A的3个数据块A1、A2、A3形成一个链表,A1是首块,A3是尾块。同样,记录B占用一个数据块B1,记录C占用2个数据块B1、B2。写入3条记录后,存储空间示意图如图3所示。
接下来执行删除记录B的操作,找到记录B的首块B1,将数据块状态标记改写为删除,B1没有下一块,删除操作完成。此时存储空间有一个删除块,存储空间示意图如图4所示。
这时再写入记录D,长度150字节,D要占用3个数据块D1、D2、D3。
先找到第一个删除块的位置,写入D1;往后搜索没有删除块,则D2写入第一个空闲块的位置,D3连续往后写,存储空间示意图如图5所示。
上述描述只是一个实现本发明目的的具体实施方法,本发明的核心在于将长度任意的记录切分为固定大小的数据块,同一记录的数据块以链表的形式组织,以此提高存储设备的利用率,避免存储碎片。
Claims (5)
1.一种不定长记录的数据组织方法,其特征在于包括以下步骤:
a.应用程序将记录的存储空间划分为固定大小的数据块,每个数据块包括数据区和结构信息两部分;
b.应用程序按步骤a所划分的数据块的大小将记录数据切分成若干个数据块,并将每块数据块附加上结构信息;
c.长度不大于一个数据块的记录占用一个数据块,大于一个数据块的记录占用多个数据块,应用程序将同一记录的数据块采用链表形式组织前后关系。
2.如权利要求1所述的不定长记录的数据组织方法,其特征在于:所述数据块的结构信息中包含有记录ID和节点号。
3.如权利要求2所述的不定长记录的数据组织方法,其特征在于:步骤b所述的将每块数据块附加上结构信息是指将同一记录的数据块的记录ID号定为相同,并在其结构信息中存放前后节点关系。
4.如权利要求2所述的不定长记录的数据组织方法,其特征在于:所述数据块的结构信息中还包含记录长度、下一块地址和数据块状态标记。
5.如权利要求4所述的不定长记录的数据组织方法,其特征在于:当删除一条记录时,应用程序将该记录所属的全部数据块的状态标记改写为删除,当写记录数据时,则从存储空间最前面的删除状态的数据块开始写起,依次寻找下一个删除状态的数据块,如无删除状态的数据块,则写入第一个空闲数据块,写数据块时先写入数据,最后将数据块标记改写为有效标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100375342A CN1936864B (zh) | 2005-09-22 | 2005-09-22 | 不定长记录的数据组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100375342A CN1936864B (zh) | 2005-09-22 | 2005-09-22 | 不定长记录的数据组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1936864A true CN1936864A (zh) | 2007-03-28 |
CN1936864B CN1936864B (zh) | 2010-09-08 |
Family
ID=37954375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100375342A Expired - Fee Related CN1936864B (zh) | 2005-09-22 | 2005-09-22 | 不定长记录的数据组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1936864B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281491B (zh) * | 2008-05-12 | 2010-04-14 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
CN102236648A (zh) * | 2010-04-21 | 2011-11-09 | 中国银联股份有限公司 | 信息存储系统及方法 |
CN102929789A (zh) * | 2012-09-21 | 2013-02-13 | 曙光信息产业(北京)有限公司 | 记录组织方法和记录组织结构 |
CN103488710A (zh) * | 2013-09-10 | 2014-01-01 | 广州巨杉软件开发有限公司 | 大数据页中高效存储非定常数据结构 |
WO2014015828A1 (zh) * | 2012-07-27 | 2014-01-30 | 腾讯科技(深圳)有限公司 | 数据存储空间的处理方法、处理系统及数据存储服务器 |
CN103902228A (zh) * | 2012-12-27 | 2014-07-02 | 航天信息股份有限公司 | 一种变长数据存取方法 |
CN105630879A (zh) * | 2015-12-17 | 2016-06-01 | 深圳市华讯方舟软件技术有限公司 | 一种PostgreSQL块存储设备读写模块 |
CN107132993A (zh) * | 2016-02-26 | 2017-09-05 | 高德软件有限公司 | 一种将数据写入内存的方法及装置 |
CN107918612A (zh) * | 2016-10-08 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 键值存储系统数据结构的实现方法和装置 |
CN109800230A (zh) * | 2018-12-29 | 2019-05-24 | 亚信科技(中国)有限公司 | 一种内存数据库varchar字段的存储方法及装置 |
CN110059087A (zh) * | 2019-03-26 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种块链式账本中的数据属性标识方法、装置及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MY122279A (en) * | 1999-03-03 | 2006-04-29 | Sony Corp | Nonvolatile memory and nonvolatile memory reproducing apparatus |
-
2005
- 2005-09-22 CN CN2005100375342A patent/CN1936864B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281491B (zh) * | 2008-05-12 | 2010-04-14 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
CN102236648A (zh) * | 2010-04-21 | 2011-11-09 | 中国银联股份有限公司 | 信息存储系统及方法 |
CN103577339B (zh) * | 2012-07-27 | 2018-01-30 | 深圳市腾讯计算机系统有限公司 | 一种数据存储方法及系统 |
WO2014015828A1 (zh) * | 2012-07-27 | 2014-01-30 | 腾讯科技(深圳)有限公司 | 数据存储空间的处理方法、处理系统及数据存储服务器 |
CN103577339A (zh) * | 2012-07-27 | 2014-02-12 | 深圳市腾讯计算机系统有限公司 | 一种数据存储方法及系统 |
US9323685B2 (en) | 2012-07-27 | 2016-04-26 | Tencent Technology (Shenzhen) Company Limited | Data storage space processing method and processing system, and data storage server |
CN102929789A (zh) * | 2012-09-21 | 2013-02-13 | 曙光信息产业(北京)有限公司 | 记录组织方法和记录组织结构 |
CN103902228A (zh) * | 2012-12-27 | 2014-07-02 | 航天信息股份有限公司 | 一种变长数据存取方法 |
CN103488710B (zh) * | 2013-09-10 | 2018-04-24 | 广州巨杉软件开发有限公司 | 大数据页中高效存储非定长数据方法 |
CN103488710A (zh) * | 2013-09-10 | 2014-01-01 | 广州巨杉软件开发有限公司 | 大数据页中高效存储非定常数据结构 |
CN105630879A (zh) * | 2015-12-17 | 2016-06-01 | 深圳市华讯方舟软件技术有限公司 | 一种PostgreSQL块存储设备读写模块 |
CN105630879B (zh) * | 2015-12-17 | 2019-03-26 | 深圳市华讯方舟软件技术有限公司 | 一种PostgreSQL块存储设备读写模块 |
CN107132993A (zh) * | 2016-02-26 | 2017-09-05 | 高德软件有限公司 | 一种将数据写入内存的方法及装置 |
CN107918612A (zh) * | 2016-10-08 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 键值存储系统数据结构的实现方法和装置 |
CN107918612B (zh) * | 2016-10-08 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 键值存储系统数据结构的实现方法和装置 |
US10642515B2 (en) | 2016-10-08 | 2020-05-05 | Tencent Technology (Shenzhen) Company Limited | Data storage method, electronic device, and computer non-volatile storage medium |
CN109800230A (zh) * | 2018-12-29 | 2019-05-24 | 亚信科技(中国)有限公司 | 一种内存数据库varchar字段的存储方法及装置 |
CN110059087A (zh) * | 2019-03-26 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种块链式账本中的数据属性标识方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1936864B (zh) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642515B2 (en) | Data storage method, electronic device, and computer non-volatile storage medium | |
CN101968795B (zh) | 一种数据块长度可变的文件系统缓存方法 | |
CN1936864B (zh) | 不定长记录的数据组织方法 | |
CN107045531A (zh) | 一种优化hdfs小文件存取的系统及方法 | |
CN113821171B (zh) | 一种基于哈希表与lsm树的键值存储方法 | |
CN109445713A (zh) | 一种元数据卷的存储状态记录方法、系统及相关组件 | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN102508913A (zh) | 一种带有数据立方存储索引结构的云计算系统 | |
CN101783740B (zh) | 消息文件管理方法及装置 | |
US6952696B1 (en) | Data structure and method for sorting using heap-supernodes | |
WO2013062562A1 (en) | Shiftable memory supporting in-memory data structures | |
CN102622434A (zh) | 数据存储方法、查找方法及装置 | |
CN102024060B (zh) | 存储文件及恢复误删除文件的方法 | |
WO2024212594A1 (zh) | 一种存储文件管理方法、装置、ai平台和存储介质 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
WO2024055571A1 (zh) | 一种namespace设置方法、装置及可读存储介质 | |
CN115391609A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
US7007021B1 (en) | Data structure and method for pipeline heap-sorting | |
CN117235313B (zh) | 一种存储目录统计方法、装置及电子设备和存储介质 | |
CN109521957A (zh) | 一种数据处理方法和装置 | |
CN102270179B (zh) | 用于cad系统的基于片元的数据存储和处理方法及其系统 | |
CN111427854B (zh) | 支持存储批量数据的栈结构实现方法及装置、设备、介质 | |
JP2001331353A (ja) | データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体 | |
CN111008195A (zh) | 一种数据库空闲空间管理方法、系统、终端及存储介质 | |
CN101566992A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100908 Termination date: 20180922 |
|
CF01 | Termination of patent right due to non-payment of annual fee |