CN103488710B - 大数据页中高效存储非定长数据方法 - Google Patents

大数据页中高效存储非定长数据方法 Download PDF

Info

Publication number
CN103488710B
CN103488710B CN201310406735.XA CN201310406735A CN103488710B CN 103488710 B CN103488710 B CN 103488710B CN 201310406735 A CN201310406735 A CN 201310406735A CN 103488710 B CN103488710 B CN 103488710B
Authority
CN
China
Prior art keywords
data
record
data block
length
page
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.)
Active
Application number
CN201310406735.XA
Other languages
English (en)
Other versions
CN103488710A (zh
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.)
Guangzhou Jushan Database Software Co ltd
Original Assignee
Guangzhou Big Tree Software Development Co Ltd
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 Guangzhou Big Tree Software Development Co Ltd filed Critical Guangzhou Big Tree Software Development Co Ltd
Priority to CN201310406735.XA priority Critical patent/CN103488710B/zh
Publication of CN103488710A publication Critical patent/CN103488710A/zh
Application granted granted Critical
Publication of CN103488710B publication Critical patent/CN103488710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种大数据页中高效存储非定长数据方法,包括存储结构和记录内容两部分,存储结构的数据页包括存储文件头、空间管理段、元数据管理段和数据块四种类型,记录内容包含有数据记录头和数据记录两部分,记录内容用于存储记录的相关信息。其结构能够对使用非定长数据页的非关系型数据库,在使用常数个IO开销(O(1))的前提下找到一个空闲空间进行数据插入,以适应非定长数据页中快速检索与变更数据的需求,可持续对复杂程度与大小日益增长的数据进行快速,灵活的检索和更新。

Description

大数据页中高效存储非定长数据方法
技术领域
本发明涉及一种数据存储结构,特别涉及一种关于大数据页的高效存储非定长数据方法,属于信息管理系统领域。
背景技术
在数据库领域中,高效存储、检索数据是数据库性能的一个重要指标。经过30年的发展,传统的关系型数据库在这一领域已经有了近乎统一的磁盘存储模式,传统的关系型数据库的每个数据页长度固定,起始为一个数据页头,之后使用若干定长的槽位作为‘指针’,分别指向数据页内的某一偏移,该偏移即为数据的起始偏移。使用中,槽位的增长从前向后,数据的增加从后向前,两者之间的空间即为该数据页的剩余空间。当查询一条记录时,对于顺序查询可以从头至尾遍历槽位,然后对每一个槽位指向的偏移进行访问即可;当指定查询时,首先跳转至该数据页的槽位,读取其偏移,然后访问该偏移所指向的数据即可;当删除记录时,将被删除记录的槽位置为一个无效值即可;当插入记录时,需要从槽位的起始开始扫描,直至槽位的结束或者遇到一个无效值,然后将新插入记录的偏移记录到该槽位中,从而完成记录插入。
这种数据结构对于传统关系型数据库的小数据页(4KB,8KB,16KB等占用磁盘空间较小的数据页)比较合适,但是在非关系型数据库的领域,一条数据记录可能远远大于这种小数据页的长度,因此在非关系型数据库的实现中,数据页的大小往往是非定长的,并且可能增长到相当大的地步(如32MB、64MB等)。这种大数据页的情况下,传统数据库的磁盘页形式会对性能造成极大的影响。试想一个16MB的数据页存取了很多100字节的数据,也就是说一个数据页可以容纳大约16万条记录。如果存储数据时从前向后扫描槽位,最坏情况下需要扫描16万次,也就是大约160个4KB大小的磁盘页。这样会造成任何插入操作都要执行160个I/O,而不像传统数据库那样每个数据页仅占一个或者很少个磁盘页,同样,对于越大的数据页,需要越多的磁盘访问数量才能找到相应的位置插入数据,其关系为O(n)的开销。因此,关系型数据库磁盘格式的局限性,已不适用于新型的非关系型数据库,在非关系型数据库中,我们亟需一种新的磁盘存取方式,以取代传统关系型数据库的数据模型。
发明内容
鉴于上述现有技术的不足,本发明旨在提供一种适合非定长大数据页的高效数据访问与存取数据结构,使磁盘访问量能维持在O(1)的水平上,以满足非关系型数据库的存储和使用需要。
本发明是通过以下技术方案来实现的:
一种大数据页中高效存储非定长数据方法,包括存储结构和记录内容两部分,存储结构的数据页包括存储文件头、空间管理段、元数据管理段和数据块四种类型。
所述存储文件头,用于记录存储文件的基本信息,存储文件头位于数据页的开始端。
所述空间管理段,用于维护和管理整个存储文件的空闲数据页信息,并以0代表数据页未分配,1代表数据页已分配但未被占用,2代表数据页被占用。
所述元数据管理段,存储和管理存储文件中所包含的全部集合信息。
所述数据块,用于存储用户数据的空间,数据块包含有数据块头信息及用户数据信息,一个数据块由一个或多个数据页构成。
所述记录内容包含有数据记录头和数据记录两部分,记录内容用于存储记录的相关信息。
所述存储文件头内记录的基本信息包括:文件标示串、数据页长度、存储文件长度、存储文件名和序列号。文件标示串用于标识数据存储文件的格式;数据页长度为数据块中每个数据页的大小,所有数据页以该大小为标准;存储文件长度表示存储文件头、空间管理段以及全部数据块文件所占据的数据页的数量,并以数据页的个数为单位;存储文件名代表了存储文件的名称;序列号代表存储文件在当前数据库中所属的编号。
所述元数据管理段包括一个以上的元数据单元,每个数据单元包含的信息有:集合名、标示、集合ID、起始数据块ID、终结数据块ID、删除列表和逻辑ID。集合名代表了该集合的名称;标示采用标示符代表该集合的状态;集合ID表示该集合在元数据管理段中所占据的地址;起始数据块ID表示该集合中包含的第一个数据块所在的数据页;终结数据块ID表示该集合中包含的最后一个数据块所在的数据页;删除列表中记录了该集合中不同长度记录被删除的第一条记录的位置;逻辑ID代表了该集合创建时的逻辑位置。
所述数据块头信息及用户数据信息包含有:字符标示串、数据块长度、所属集合ID、数据块标示、数据块版本、数据块逻辑ID、前一个数据块ID、后一个数据块ID、记录数、第一条记录偏移、最后一条记录偏移、空闲空间。字符标示串代表一个数据块起始的信息,并以字符标示数据块是否为非法数据块;数据块长度代表了该数据块所占数据页的数量,数据页在文件中必须连续,并且不能被别的集合所使用;所属集合ID代表了该数据块所属于的集合ID;数据块标示代表该数据块的状态;数据块版本代表该数据块的格式信息;数据块逻辑ID是以逻辑递增方式标示出在每个集合中创建的新的数据块;前一个数据块ID标示了该数据块的前块ID;后一个数据块ID标示了该数据块的后块ID;记录数代表着该数据块内包含的用户记录个数;第一条记录偏移代表了该数据块内第一条记录的偏移地址;最后一条记录偏移代表了该数据块内最后一条记录的偏移地址;空闲空间代表了该数据块内的可用空间大小。
所述数据记录头包含的信息有:记录标示、记录长度、记录在数据块中偏移、前一条记录偏移、后一条记录偏移。记录标示代表了该数据记录的状态;记录长度代表了该数据记录的长度;记录在数据块中偏移代表了该数据记录在当前数据块内的偏移地址;前一条记录偏移标示了该数据记录的前一条记录的偏移指针;后一条记录偏移标示了该数据记录的后一条记录的偏移指针。
本发明所述的大数据页中高效存储非定长数据方法,其有益效果在于:能够对使用非定长数据页的非关系型数据库,在使用常数个IO开销(O(1))的前提下找到一个空闲空间进行数据插入,以适应非定长数据页中快速检索与变更数据的需求,可持续对复杂程度与大小日益增长的数据进行快速,灵活的检索和更新。克服了传统数据库结构在非定长数据页中,其空闲空间查找效率为O(n)的弊端。查找效率和使用灵活性明显提高,方便了大数据页非定长数据的存储需要。
具体实施方式
下面对本发明所述的大数据页中高效存储非定长数据方法在实际应用中的具体结构做进一步的详细描述:
本发明所述的一种大数据页中高效存储非定长数据方法,包括存储结构和记录内容两部分。记录内容用于存储记录的相关信息,存储结构用于反映和指示存储的相关状态。
一、存储结构的数据页包括存储文件头、空间管理段、元数据管理段和数据块四种类型,各类型数据页包含的具体信息内容如下:
1、存储文件头
存储文件头用于记录存储文件的基本信息,存储文件头位于数据页的开始端,并且占据了65536个字节,其余部分以0补位。存储文件头内记录的基本信息包括:文件标示串、数据页长度、存储文件长度、存储文件名和序列号。如下表:
名称 长度(字节) 描述
文件标示串 8 字符串“SDBSUINT”,作为数据文件的标示串
数据页长度 4 数据页大小,字节为单位
存储文件长度 4 存储文件中包含的数据页数量
存储文件名 128 存储文件的名称
序列号 4 存储文件序号
a\文件标示串用于标识数据存储文件的格式,本例中,文件标示串为固定字符串“SDBSUINT”,凡是起始字符串不为该字符串的文件不可被识别。
b\数据页长度为数据块中每个数据页的大小,单位为字节,可以选择的数据页长度为4096、8192、16384、32768或65536字节,每个存储文件中所有的数据页均以该长度为准。
c\存储文件长度表示存储文件头、空间管理段以及全部数据块文件所占据的数据页的数量,并以数据页的个数为单位。
d\存储文件名代表了存储文件的名称,最多为128个字节,包括以零为结尾的结束符。
e\序列号代表存储文件在当前数据库中所属的编号,由1起始,占据4个字节。
2、空间管理段
空间管理段用于维护和管理整个存储文件的空闲数据页信息,并以0代表数据页未分配,1代表数据页已分配但未被占用,2代表数据页被占用。空间管理段占据16777216个字节,每个字节描述一个数据页的特征,从而可以很容易地发现是否有一个或多个可用的数据页,实现空间管理。
3、元数据管理段
元数据管理段用于存储和管理存储文件中所包含的全部集合信息。元数据管理段占据4194304个字节,每1024个字节作为一个单位,总共可以存放4096个单位。每个单位作为一个元数据单元,每个数据单元包含的信息有:集合名、标示、集合ID、起始数据块ID、终结数据块ID、删除列表和逻辑ID。如下表:
名称 长度(字节) 描述
集合名 128 集合的名称,最多为128字节UTF-8字符串,包括以零结尾的终结符
标示 2 集合标示,每个比特位代表集合的特定状态
集合ID 2 集合ID,与该元数据在元数据段中所处的单位保持一致
起始数据块ID 4 该集合包含的第一个数据块所在的数据页
终结数据块ID 4 该集合包含的最后一个数据块所在的数据页
删除列表 160 包含20种不同长度类型的被删除记录ID
逻辑ID 4 该集合的逻辑ID标示
a\集合名代表了该集合的名称,集合名为128个字节,采用UTF-8格式的集合名称,包含以零为结尾的终结符。
b\标示为2字节的标示符,标示每个集合的状态,具体状态信息如下:
状态 描述
0x0000 空闲
0x0001 被占用
0x0002 被删除
c\集合ID表示该集合在元数据管理段中所占据的地址。本例中,集合ID为2字节,由0开始,最高4095个字节,通过集合ID就可以迅速地锁定该集合的元数据信息所在的位置。
d\起始数据块ID表示该集合中包含的第一个数据块所在的数据页。起始数据块ID为4字节,如果该集合为空则指向-1。
e\终结数据块ID表示该集合中包含的最后一个数据块所在的数据页。终结数据块ID也为4字节,如果该集合为空则指向-1。
f\删除列表中记录了该集合中不同长度记录被删除的第一条记录的位置。本例中,删除列表为160字节,包含20个8字节的记录ID。每一个记录ID的格式如下表:
名称 长度(字节) 描述
数据块ID 4 该记录所在的数据块所在的数据页
偏移ID 4 该记录所在数据块内的偏移地址
20个记录ID中的每一个分别代表一种记录长度类型,如下表:
位置 记录长度范围(字节)
0 0-31
1 32-63
2 64-127
3 128-255
4 256-511
5 512-1023
6 1024-2047
7 2048-4095
8 4096-8191
9 8192-16383
10 16384-32767
11 32768-65535
12 65536-131071
13 131072-262143
14 262144-524287
15 524288-1048575
16 1048576-2097151
17 2097152-4194303
18 4194304-8388607
19 8388608-16777216
删除列表中的每一个元素为8字节记录ID,20个槽位中从0开始代表0-31字节记录,至19槽位代表的8MB-16MB字节记录,分别指向该集合中此类型被删除的第一条记录。
g\逻辑ID代表了该集合创建时的逻辑位置。与物理集合ID不同,每一个逻辑集合ID在创建集合时递增,因此不会出现重复情况。
4、数据块
数据块用于存储用户数据的空间,数据块包含有数据块头信息及用户数据信息,一个数据块由一个或多个数据页构成。空闲空间代表了该数据块内可用的空间大小,其单位为字节。数据块头信息及用户数据信息包含有:字符标示串、数据块长度、所属集合ID、数据块标示、数据块版本、数据块逻辑ID、前一个数据块ID、后一个数据块ID、记录数、第一条记录偏移、最后一条记录偏移和空闲空间,如下表:
名称 长度(字节) 描述
字符标示串 2 以字符”DE”标示数据块的起始
数据块长度 2 该数据块所占据的数据页数量,单位为数据页个数
所属集合ID 2 该数据块所属的集合ID
数据块标示 1 该数据块的状态标示
数据块版本 1 该数据块格式的版本信息
数据块逻辑ID 4 数据块逻辑ID
前一个数据块ID 4 上一个数据块ID
后一个数据块ID 4 下一个数据块ID
记录数 4 该数据块内包含的记录数量
第一条记录偏移 4 该数据块内第一条记录的起始偏移
最后一条记录偏移 4 该数据块内最后一条记录的起始偏移
空闲空间 4 该数据块内包含的空闲可用空间
a\字符标示串代表一个数据块起始的信息,本例中,以ASCII字符D与E来标示,凡是不包含该两个字符的数据块为非法数据块。
b\数据块长度代表了该数据块所占数据页的数量,数据块长度包含2个字节的长度,每个数据块的内容必须连续,因此假设一个数据块包含N个数据页,这N个数据页在文件中必须连续,并且不能被别的集合所使用。
c\所属集合ID代表了该数据块所属于的集合ID。
d\数据块标示代表该数据块的状态。本例中,以‘1’标示该数据块被占用,以‘2’标示该数据块空闲。
e\数据块版本代表该数据块的格式信息。当系统升级时,有可能数据块的格式发生变化,该标示代表本数据块的格式版本需要用相应版本的处理函数进行解析,从而保证了数据的延续性。
f\数据块逻辑ID是以逻辑递增方式标示出在每个集合中创建的新的数据块。数据块逻辑ID不同于数据块ID,数据块ID为该数据块的第一个数据页所处的位置,而数据块逻辑ID在每个集合创建新的数据块时递增,与其文件中的物理位置无关。
g\前一个数据块ID标示了该数据块的前块ID。
h\后一个数据块ID标示了该数据块的后块ID。
前一个数据块ID和后一个数据块ID分别指向了该数据块的前后块。由于一个存储文件中可能包含多个集合,每个集合所占用的数据块互相交织在一起,因此,必须通过每个数据块的前后ID将整个集合中所包含的数据块以链表的形式进行串联,以方便数据读取。
i\记录数代表着该数据块内包含的用户记录个数。
j\第一条记录偏移代表了该数据块内第一条记录的偏移地址,空数据块中为-1。
k\最后一条记录偏移代表了该数据块内最后一条记录的偏移地址,空数据块中为-1。
l\空闲空间代表了该数据块内的可用空间大小。
二、记录内容包含有数据记录头和数据记录两部分,数据记录头之后为用户数据记录,记录格式使用标准BSON格式。其中,数据记录头包含的基本信息包括:记录标示、记录长度、记录在数据块中偏移、前一条记录偏移、后一条记录偏移。每条数据记录共16个字节,具体结构如下表:
名称 长度(字节) 描述
记录标示 1 该记录的状态
记录长度 3 该记录的长度,单位为字节
记录在数据块中偏移 4 该记录在当前数据块中的偏移地址
前一条记录偏移 4 前一条记录在当前数据块内的偏移地址
后一条记录偏移 4 后一条记录在当前数据块内的偏移地址
a\记录标示代表了该数据记录的状态。其中,以数值‘0’标示正常记录;以数值‘1’标示溢出源;以数值‘2’标示溢出目标;以数值‘3’标示被删除。
b\记录长度代表了该数据记录的长度,该长度为3个字节,因此,一条数据记录的最大长度为16MB。
c\记录在数据块中偏移代表了该数据记录在当前数据块内的偏移地址。
d\前一条记录偏移标示了该数据记录的前一条记录的偏移指针。
e\后一条记录偏移标示了该数据记录的后一条记录的偏移指针。
对上述非定长数据结构进行操作时,具体存储流程分为:数据块分配与回收、数据的增删改查,以及集合的创建和删除。
1、数据块分配
数据页分配时,首先从空间管理段中取得指定数据页长度的连续空间。如果空间不足则在文件末尾添加128MB字节的空间,同时,将空间管理段中相应位置的数据页标示置为1。当寻找到连续的可用空间时,即指定连续数据页的状态均为1时,将这些状态位置为2,代表空间已经分配。修改空间管理段之后,需要将寻找到的起始数据页初始化其数据块头,代表由该数据页开始,之后的若干个数据页均属于该数据块。
数据块分配后,需要将其中包含的空闲空间做成若干个空记录,放置入集合元数据的删除列表。第一步判断剩余空间的大小,然后模最大记录长度16MB,得到余数,代表最后一条不到16MB长度的数据大小,再将剩余空间除以最大记录长度,得到结果,作为最大被删除记录的数量。通过循环最大被删除记录的数量,将数据块中相应偏移的记录初始化记录头,并将其记录ID作为链表链入集合元数据中相应记录长度类型的链表中,最后,将之前取模的大小作为最后一条记录链入相应长度的集合元数据删除链表中。
此时,新的数据块被切分为一个或多个被删除记录,分别作为链表存放在集合元数据的头中。
2、数据块回收
数据页回收刚好与数据页分配相反。首先通过指定的数据块ID寻找到该块的头,校验该数据块是否与集合ID一致,并且其头是否完整;校验结束后,将数据块状态设置为2,代表其可用;最后,到空间管理段中,由数据页所对应的标示起,将其后的若干个字节状态置为1即可。
3、数据的增删改查
A、新增数据
新增数据需由用户指定集合ID与数据记录。当请求被接收后,首先需要判断记录长度是否小于16MB。如果满足要求,则将其长度加上数据记录头的长度作为总长度,从删除列表的相应槽位中取得第一条被删除记录。如果该被删除记录的长度不足以容纳新的记录,则继续循环。当循环次数超过特定上限时,则跳出循环,将比指定槽位大的槽位作为当前搜索槽,继续搜索。如果搜索槽已经为19,且无法找到合适的被删除记录,则需要创建新的数据块,在新的数据块所产生的被删除记录中放置。插入场景中,需要将新数据的前指针设置为数据块最后记录的偏移,同时修改原先最后记录,将其后指针设置为新记录,最后修改数据块头,将数据块的终结记录指针设置为新记录。
B、删除记录
删除记录时,首先找到给定记录ID,校验其所在数据块的合法性。通过记录ID,可以构建出记录头,通过头跳转到前一条记录和后一条记录。如果前后记录存在,则按照双指针元素删除的算法将前后元素链接起来,并且将被删除记录头状态置为4,并将其记录ID放入删除列表。
删除遍历记录的方式参见后续查找数据部分。
C、更新数据
更新数据需要涉及两种情况:1、新的数据小于等于原先数据的大小;2、新的数据大于原先数据的大小。
对于第一种情况,更新数据时将原本记录所占据的位置替换成新的数据即可。节省出来的空间如果能够容纳超过一条空记录,则将其切割出来作为一条空记录放入删除列表。
对于第二种情况,新的记录需要以插入的形式(但是不需更新数据块头信息)放入新的位置,并将其记录ID存放入原先记录的位置,然后对原先记录的标示修改为1,新记录位置的标示修改为2。这样,所有需要查询这条记录的请求,都可以通过原先记录位置中存放的指针,直接跳转到新记录的位置,这种类型的数据叫做溢出数据。如果原先数据被大小减去记录ID的长度超过了一条空记录,则将其截断,后续部分作为空记录放入删除列表。
搜索遍历记录的方式参见后续查找数据部分。
D、查找数据
查找数据需要指定条件与集合ID。通过集合ID,搜索程序首先根据集合ID找到元数据段中所在元数据,并得到其起始数据块ID。根据其起始数据块ID,程序首先读取其数据块头进行校验,然后在数据块内依靠初始记录偏移找到第一条记录,以链表方式从前向后读取。当当前数据块读取结束后,则依照链表方式跳转到下一个数据块继续读取。读取的判定结果存放入缓存中以发送给请求客户端。对于更新和删除数据请求,则将匹配的记录ID发送给相应函数进行特定记录的更新和删除。
4、集合的创建
集合创建时,需要在元数据段内寻找到第一个空闲槽位,将集合名复制入相应位置,并将集合状态改为1,同时,将集合的第一与最后一个数据块ID置为-1,代表该集合为空。
5、集合的删除
删除集合时,首先要找到指定集合ID所在元数据段内的位置,并校验其状态必须为1,之后由第一个数据块ID起始,依照链表遍历的方式回收各个数据块。数据块回收后,将该元数据所在槽位的状态置为2。
上述内容只是列举了部分操作的过程,其并不代表本发明大数据页中高效存储非定长数据方法操作的全部。而本发明的保护范围,应以权利要求书为准。

Claims (4)

1.一种大数据页中高效存储非定长数据方法,其特征在于,具体步骤包括:
步骤1、建立非定长数据结构,包括存储结构和记录内容两部分;所述存储结构的数据页包括存储文件头、空间管理段、元数据管理段和数据块四种类型;所述记录内容包含有数据记录头和数据记录两部分;
步骤2、利用存储文件头存储记录文件的基本信息,存储文件头位于数据页的开始端;所述存储文件头内记录的基本信息包括:文件标示串、数据页长度、存储文件长度、存储文件名和序列号;所述文件标示串用于标识数据存储文件的格式;所述数据页长度为数据块中每个数据页的大小,所有数据页以该大小为标准;所述存储文件长度表示存储文件头、空间管理段以及全部数据块文件所占据的数据页的数量,并以数据页的个数为单位;所述存储文件名代表了存储文件的名称;所述序列号代表存储文件在当前数据库中所属的编号;
步骤3、利用空间管理段对整个存储文件的空闲数据页信息进行维护和管理,并以0代表数据页未分配,1代表数据页已分配但未被占用,2代表数据页被占用;
步骤4、通过元数据管理段对存储文件中所包含的全部集合信息进行存储和管理;
步骤5、通过数据块存储用户数据空间,数据块包含有数据块头信息及用户数据信息,一个数据块由一个或多个数据页构成;
步骤6、通过数据记录头和数据记录存储记录的相关信息,完成非定长数据高效存储。
2.根据权利要求1所述的大数据页中高效存储非定长数据方法,其特征在于,所述元数据管理段包括一个以上的元数据单元,每个数据单元包含的信息有:集合名、标示、集合ID、起始数据块ID、终结数据块ID、删除列表和逻辑ID;
所述集合名代表了该集合的名称;
所述标示采用标示符代表该集合的状态;
所述集合ID表示该集合在元数据管理段中所占据的地址;
所述起始数据块ID表示该集合中包含的第一个数据块所在的数据页;
所述终结数据块ID表示该集合中包含的最后一个数据块所在的数据页;
所述删除列表中记录了该集合中不同长度记录被删除的第一条记录的位置;
所述逻辑ID代表了该集合创建时的逻辑位置。
3.根据权利要求1所述的大数据页中高效存储非定长数据方法,其特征在于,所述数据块头信息及用户数据信息包含有:字符标示串、数据块长度、所属集合ID、数据块标示、数据块版本、数据块逻辑ID、前一个数据块ID、后一个数据块ID、记录数、第一条记录偏移、最后一条记录偏移、空闲空间;
所述字符标示串代表一个数据块起始的信息,并以字符标示数据块是否为非法数据块;
所述数据块长度代表了该数据块所占数据页的数量,数据页在文件中必须连续,并且不能被别的集合所使用;
所述所属集合ID代表了该数据块所属于的集合ID;
所述数据块标示代表该数据块的状态;
所述数据块版本代表该数据块的格式信息;
所述数据块逻辑ID是以逻辑递增方式标示出在每个集合中创建的新的数据块;
所述前一个数据块ID标示了该数据块的前块ID;
所述后一个数据块ID标示了该数据块的后块ID;
所述记录数代表着该数据块内包含的用户记录个数;
所述第一条记录偏移代表了该数据块内第一条记录的偏移地址;
所述最后一条记录偏移代表了该数据块内最后一条记录的偏移地址;
所述空闲空间代表了该数据块内的可用空间大小。
4.根据权利要求1所述的大数据页中高效存储非定长数据方法,其特征在于,所述数据记录头包含的信息有:记录标示、记录长度、记录在数据块中偏移、前一条记录偏移、后一条记录偏移;
所述记录标示代表了该数据记录的状态;
所述记录长度代表了该数据记录的长度;
所述记录在数据块中偏移代表了该数据记录在当前数据块内的偏移地址;
所述前一条记录偏移标示了该数据记录的前一条记录的偏移指针;
所述后一条记录偏移标示了该数据记录的后一条记录的偏移指针。
CN201310406735.XA 2013-09-10 2013-09-10 大数据页中高效存储非定长数据方法 Active CN103488710B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310406735.XA CN103488710B (zh) 2013-09-10 2013-09-10 大数据页中高效存储非定长数据方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310406735.XA CN103488710B (zh) 2013-09-10 2013-09-10 大数据页中高效存储非定长数据方法

Publications (2)

Publication Number Publication Date
CN103488710A CN103488710A (zh) 2014-01-01
CN103488710B true CN103488710B (zh) 2018-04-24

Family

ID=49828936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310406735.XA Active CN103488710B (zh) 2013-09-10 2013-09-10 大数据页中高效存储非定长数据方法

Country Status (1)

Country Link
CN (1) CN103488710B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106503084A (zh) * 2016-10-10 2017-03-15 中国科学院软件研究所 一种面向云数据库的非结构化数据的存储与管理方法
CN106570129A (zh) * 2016-10-27 2017-04-19 南京邮电大学 一种对实时数据进行快速分析的存储系统及其存储方法
CN108984626B (zh) * 2018-06-20 2021-08-17 腾讯科技(深圳)有限公司 一种数据处理方法、装置及服务器
CN109684293A (zh) * 2018-12-14 2019-04-26 中国人民银行清算总中心 混合文件存储方法及装置
CN109977121B (zh) * 2019-03-27 2022-10-14 上海鸣鸾互联网科技有限公司 一种大数据快速存储系统
CN110263057B (zh) * 2019-06-12 2020-04-17 上海英方软件股份有限公司 一种rowid映射表的存储和查询方法及装置
CN113377709B (zh) * 2021-06-08 2022-07-19 北京计算机技术及应用研究所 一种基于哈希的hdfs后端存储系统
CN113254273A (zh) * 2021-06-10 2021-08-13 苏州浪潮智能科技有限公司 一种实时恢复主元数据的方法、系统、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1936864A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 不定长记录的数据组织方法
CN101533408A (zh) * 2009-04-21 2009-09-16 北京四维图新科技股份有限公司 一种海量数据的处理方法及处理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1936864A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 不定长记录的数据组织方法
CN101533408A (zh) * 2009-04-21 2009-09-16 北京四维图新科技股份有限公司 一种海量数据的处理方法及处理装置

Also Published As

Publication number Publication date
CN103488710A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
CN103488710B (zh) 大数据页中高效存储非定长数据方法
CN110321344B (zh) 关联数据的信息查询方法、装置、计算机设备及存储介质
CN107423422B (zh) 基于网格的空间数据分布式存储及检索方法和系统
US9047330B2 (en) Index compression in databases
CN102890722B (zh) 应用于时序历史数据库的索引方法
CN102929936B (zh) 日志记录方法、日志查询方法及系统
KR100856245B1 (ko) 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법
CN102609452B (zh) 数据的存储方法及装置
CN110888886B (zh) 一种索引结构及构建方法、键值存储系统及请求处理方法
CN103229164B (zh) 数据访问方法和装置
CN102446184B (zh) 一种基于时间序列的工业数据存储及索引方法
CN103020204A (zh) 一种对分布式顺序表进行多维区间查询的方法及其系统
CN103140840B (zh) 数据管理的方法及装置
CN101727502A (zh) 一种数据查询方法及装置、系统
CN105975587A (zh) 一种高性能的内存数据库索引组织与访问方法
JP2016539449A (ja) データベース実現方法
Ramamohanarao et al. Recursive linear hashing
CN104199860A (zh) 一种基于二维地理位置信息的数据集分片方法
CN104035956A (zh) 一种基于分布式列存储的时间序列数据存储方法
CN102609492B (zh) 一种支持表模式可变的元数据管理方法
CN103383690A (zh) 分布式数据存储方法及系统
CN104391908A (zh) 一种图上基于局部敏感哈希的多关键字索引方法
CN110597805B (zh) 一种内存索引结构处理方法
CN103399915A (zh) 一种搜索引擎索引文件的优化读取方法
CN104504076A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20191028

Address after: 518000 1005, 10th floor, Tsinghua Information Port scientific research building, North District, high tech Industrial Park, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Jushan Database Software Co.,Ltd.

Address before: 511400 Guangdong city of Guangzhou province Panyu District Xiaoguwei street two cross road No. 22 A1010

Patentee before: SEQUOIADB Corp.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 511458 room 2101-2112, No. 167, Haibin Road, Nansha District, Guangzhou City, Guangdong Province (office only) (one address with multiple photos)

Patentee after: Guangzhou Jushan Database Software Co.,Ltd.

Address before: 518000 1005, 10th floor, scientific research building, Tsinghua information port, North District, high tech Industrial Park, Nanshan District, Shenzhen, Guangdong

Patentee before: Shenzhen Jushan Database Software Co.,Ltd.

CP03 Change of name, title or address