CN102385606A - 一种分布式数据仓库的访问方法和装置 - Google Patents

一种分布式数据仓库的访问方法和装置 Download PDF

Info

Publication number
CN102385606A
CN102385606A CN201010274687XA CN201010274687A CN102385606A CN 102385606 A CN102385606 A CN 102385606A CN 201010274687X A CN201010274687X A CN 201010274687XA CN 201010274687 A CN201010274687 A CN 201010274687A CN 102385606 A CN102385606 A CN 102385606A
Authority
CN
China
Prior art keywords
segment
unit
length
concordance list
offset address
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
Application number
CN201010274687XA
Other languages
English (en)
Other versions
CN102385606B (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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201010274687.XA priority Critical patent/CN102385606B/zh
Publication of CN102385606A publication Critical patent/CN102385606A/zh
Application granted granted Critical
Publication of CN102385606B publication Critical patent/CN102385606B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种分布式数据仓库的访问方法和装置:将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头(Head)、一个以上数据段(Segment)以及一个一级块索引表,一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;每个Segment中包括一个以上单元(Unit)和一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块(Chunk),每个Chunk对应一个记录;根据索引信息对分布式数据仓库进行访问。应用本发明所述方案,能够方便用户使用,且能够节省存储空间和提高数据的安全性。

Description

一种分布式数据仓库的访问方法和装置
技术领域
本发明涉及数据库访问技术,特别涉及一种分布式数据仓库的访问方法和装置。
背景技术
分布式数据仓库(TDW)中存储有海量的数据,相比于比传统的数据仓库,数据量高出几个数量级,这些数据是由各个业务部门(BU)提供的业务或用户行为信息,通常以文本格式进行存储。
文本格式对于顺序访问来说比较方便,但却不适用于随机访问。比如,要读取指定行的记录,那么必需从头开始读取该行之前的所有数据,然后才能找到所述指定行,实现起来非常麻烦,大量的随机访问几乎是不可能的,但在实际应用中很多场合都需要用到随机访问,因此给用户的使用带来了很大的不便。
另外,现有技术中,当需要对分布式数据仓库中的数据,如一个文件进行分布式并行处理时,通常根据数据大小如64M,将文件拆分成多个段,分布式集群中的每个工作节点负责处理一段,但由于文本格式没有明显的分隔符,因此在拆分时很可能会导致一条完整的记录被划分到两个不同的段中,即划分给两个不同的工作节点,从而影响后续处理,也给用户的使用带来不便。再有,以文本格式,即字符串格式存储数据会占用比较多的存储空间,从而影响分布式数据仓库的存储能力。还有,以文本格式存储的数据用户可直接查看,安全性较低。
发明内容
有鉴于此,本发明的主要目的在于提供一种分布式数据仓库的访问方法,能够方便用户使用,且能够节省存储空间和提高数据的安全性。
本发明的另一目的在于提供一种分布式数据仓库的访问装置,能够方便用户使用,且能够节省存储空间和提高数据的安全性。
为达到上述目的,本发明的技术方案是这样实现的:
一种分布式数据仓库的访问方法,该方法包括:
将接收到的每个文本格式的文件转换为结构化格式,并进行存储;
每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;
每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;
每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
根据所述索引信息对所述分布式数据仓库进行访问。
一种分布式数据仓库的访问装置,该装置包括:
存储单元,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
访问单元,用于根据所述索引信息对所述分布式数据仓库进行访问。
可见,采用本发明的技术方案,将文本格式的文件转换为结构化格式,利用索引信息对指定行或指定记录值进行访问,从而提高了访问效率,方便了用户使用;另外,本发明所述方案中的数据被保存在各个Segment中,如果要对结构化格式的文件进行分布式并行处理,每个工作节点只需负责一个Segment即可,不会存在将一条完整的记录划分给两个不同工作节点的情况;还有,按照本发明所述方案进行处理后的数据将以二进制格式进行存储,相比于字符串格式更加节省存储空间,比如存储一个8位的qq号码,现有技术中需要占用8个字节,而采用本发明所述方案后将只需占用4个字节;再有,对于以二进制格式进行存储的数据,用户将不可直接查看,从而提高了数据的安全性。
附图说明
图1为本发明方法实施例的流程图。
图2为本发明所述结构化格式的文件的示意图。
图3为本发明所述Segment的结构示意图。
图4为本发明所述Unit和Chunk的组成结构示意图。
图5为本发明装置实施例的组成结构示意图。
具体实施方式
针对现有技术中存在的问题,本发明中提出一种全新的分布式数据仓库访问方案,将接收到的文本格式的文件按照一定的格式进行组织和索引,形成新的结构化存储格式,并提供便捷的访问接口。
为使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图1为本发明方法实施例的流程图。如图1所示,包括以下步骤:
步骤11:将接收到的每个文本格式的文件转换为结构化格式,并进行存储。
本步骤中,对于接收到的每个文本格式的文件,首先将其转换为结构化格式,然后进行存储。
图2为本发明所述结构化格式的文件的示意图。如图2所示,每个文件中包括:一个文件头(Head)、一个以上数据段(Segment)以及一个一级块索引表。其中,文件头用于保存文件的相关信息如字段类型和版本号等,保证结构化格式的文件能够被独立的读取和解析;各Segment用于保存具体的数据;一级块索引表用于保存每个Segment对应的一级块索引项(Segment idx),每个一级块索引项中保存有其对应的Segment的索引信息。
1)文件头
文件头固定在结构化格式的文件的开始部分,根据表一所示FieldMap字段中涉及到的字段数的不同,文件头的长度也将不同。
  字段名称   含义
  Ver   数据版本号
  Var   是否存在变长字段
  Compress   数据是否压缩
  Encode   数据是否加密
  FieldMap   所有字段类型定义
表一文件头中包括的信息
如表一所示,文件头中包括的信息主要为:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义,后续可利用文件头中的信息对数据进行解析。各字段的具体作用为本领域公知,不再赘述。
2)Segment
通常,每个Segment的大小相同且固定,每个结构化格式的文件中具体包括多少个Segment视文件大小而定。
每个Segment中包括一个以上单元(Unit)以及一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项(Unit idx),每个二级块索引项中保存有其对应的Unit的索引信息。
图3为本发明所述Segment的结构示意图。如图3所示,二级块索引表位于所有Unit之后;每个Unit被依次填充到Segment中,对于无法存放一个完整的Unit的情况,可将空闲的部分用1或0填充补齐,以避免一个Unit中的数据被拆分到两个Segment中的情况。举例说明,假设一Segment的大小为11M,目前已经填充了5个Unit(假设各Unit的大小均为2M左右),那么剩余的空间将不足以填充一个Unit,可通过填充1或0来将该Segment补齐。
3)Unit和Chunk
每个Unit中包括一个以上的数据块(Chunk),用户的每个记录被格式化为一个Chunk,并保存到Unit中。每个Unit的大小不固定,但需要保证基本一致,即位于相同的范围内,如1.9~2.1M,每个Unit中的Chunk数也可能不同。
每个Chunk中的数据可分为2种类型,一种为定长,如Int和Long等,一种为变长,如String等,对于定长数据,可直接保存数据本身,而对于变长数据,需要通过一个预先设置的长度(Len)字段标识该数据的长度,同时保存数据本身。
图4为本发明所述Unit和Chunk的组成结构示意图。如图4所示,其中的“bitmap”字段用于指示后续各字段(如field1~5)是否为空;“field1”、“field2”、“field3”、“field4”和“field5”字段均用于存放定长类型的数据,如果无对应类型的数据,则对应的字段置为空;“field6”字段用于存放变长类型的数据,与其相邻的字段用于指示该变长类型的数据的长度,如果无变长类型的数据,则这两个字段可不存在。
另外,本发明所述方案中,每个索引项中包括的索引信息均相同,如表二所示:
  字段名称   含义
  Begin   起始行号(和/或记录值)
  End   结束行号(和/或记录值)
  Offset   起始偏移
  Length   长度
  Index   索引号
表二索引项中包括的索引信息
也就是说,每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值(即可以只有起始行号和结束行号,也可以只有起始记录值和结束记录值,还可以同时存在起始行号和结束行号以及起始记录值和结束记录值)、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号。
每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
另外,本发明所述结构化格式的文件和每个Segment中可进一步包括元数据(MetaData)信息,该信息通常位于最尾端。其中,对于结构化格式的文件来说,其中的MetaData信息中保存有一级块索引表的偏移地址和长度;对于每个Segment来说,其中的MetaData信息中保存有二级块索引表的起始偏移地址和长度。另外,对于每个Unit来说,如果其中的Chunk中包括变长类型的数据(每个Unit中的Chunk要么全部包含变长类型的数据,要么全部不包含变长类型的数据),则该Unit的最尾端将设置有MetaData信息,用于保存每个Chunk的起始偏移地址,如果只包括定长类型的数据,则通常无需设置MetaData信息(当然,理论上来说也可以设置,只是通常的方式为不设置)。
下面通过具体示例,对本步骤的实现作进一步地说明。
以插入一条记录为例,假设其表结构定义为Test(age tinyint qq intdesc string),分别表示年龄、qq号码和描述信息,插入的记录值为(25,1234567890,“hello world”)。
将该记录结构化的过程简述如下:
1)将该记录的各个字段的具体值序列化为一个Chunk A;
2)创建一个Unit B(如果已有可用的Unit,则无需创建),将Chunk A保存在Unit B中;
3)在Unit B中的MetaData信息中保存Chunk A的起始偏移地址;
4)创建一个Segment C(如果已有可用的Segment,则无需创建),将Unit B保存在Segment C中;
5)在Segment C的二级块索引表中增加一个二级块索引项,记录Unit B的索引信息;
6)将Segment C写入到结构化格式的文件中,同时在一级块索引表中增加一个一级块索引项,记录Segment C的索引信息。
针对每条记录,分别按照上述方式进行处理。当所有记录添加完毕后,在结构化格式的文件的末尾增加一级块索引表的起始偏移地址和长度。
步骤12:根据转换为结构化格式的文件中的索引信息对分布式数据仓库进行访问。
本步骤中,可采用以下两种访问方式,即根据指定行号进行访问以及根据指定记录值进行访问。
其中,根据指定行号进行访问的方式包括:
1)读取文件头中的信息以及一级块索引表的起始偏移地址和长度;
2)根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;
3)根据一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到指定行号所属的Segment X,并获取Segment X的起始偏移地址和长度;
4)根据Segment X的起始偏移地址和长度找到Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到Segment X中的二级块索引表;
5)根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到指定行号所属的Unit Y,并获取Unit Y的起始偏移地址和长度;
6)根据Unit Y的起始偏移地址和长度找到Unit Y;
7)从UnitY中找到指定行号对应的Chunk Z,确定Chunk Z的长度,获取其中的数据;
本步骤中,如果Unit Y中的Chunk中包括变长类型的数据,则根据Unit Y中各Chunk的起始偏移地址找到Chunk Z,并将指定行号加一,得到行号M,用行号M对应的Chunk的起始偏移地址减去Chunk Z的起始偏移地址,得到Chunk Z的长度;如果UnitY中的Chunk中不包括变长类型的数据,那么各Chunk的长度是已知且相同的,由于已知Unit Y的起始偏移地址,所以可通过计算确定出Chunk Z的起始偏移地址(长度已知)。
8)根据读取到的文件头中的信息对获取到的Chunk Z中的数据进行解析。
根据指定记录值进行访问的方式包括:
1)读取文件头中的信息和一级块索引表的起始偏移地址和长度;
2)根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;
3)根据一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的Segment X,并获取Segment X的起始偏移地址和长度;
4)根据Segment X的起始偏移地址和长度找到Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到Segment X中的二级块索引表;
5)根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到指定记录值所属的Unit Y,并获取Unit Y的起始偏移地址和长度;
6)根据Unit Y的起始偏移地址和长度找到Unit Y;
7)遍历UnitY,找出所有符合条件的Chunk;
8)根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
至此,即完成了关于本发明方法实施例的介绍。
基于上述介绍,图5为本发明装置实施例的组成结构示意图。如图5所示,包括:
存储单元51,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;每个Segment中包括一个以上单元Unit以及一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
访问单元52,用于根据索引信息对分布式数据仓库进行访问。
其中,所述文件头中包括以下信息:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
每个Chunk中的数据分为2种类型,一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据,通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号;
每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
每个Unit中进一步包括:每个结构化格式的文件中进一步包括:一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:二级块索引表的起始偏移地址和长度。
另外,上述访问单元52中可具体包括:第一访问子单元521和/或第二访问子单元522;
第一访问子单元521,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;根据一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到指定行号所属的Segment X,并获取Segment X的起始偏移地址和长度;根据Segment X的起始偏移地址和长度找到Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到Segment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到指定行号所属的Unit Y,并获取Unit Y的起始偏移地址和长度;根据Unit Y的起始偏移地址和长度找到Unit Y,并从中找到指定行号对应的Chunk Z,确定Chunk Z的长度,获取其中的数据;根据读取到的文件头中的信息对Chunk Z中的数据进行解析;
第二访问子单元522,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;根据一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的Segment X,并获取Segment X的起始偏移地址和长度;根据Segment X的起始偏移地址和长度找到Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到Segment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到指定记录值所属的Unit Y,并获取Unit Y的起始偏移地址和长度;根据UnitY的起始偏移地址和长度找到Unit Y,遍历Unit Y,找出所有符合条件的Chunk;根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
图5所示装置实施例的具体工作流程请参照图1所示方法实施例中的相应说明,此处不再赘述。
总之,采用本发明的技术方案,能够方便用户使用,且能够节省存储空间和提高数据的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (12)

1.一种分布式数据仓库的访问方法,其特征在于,该方法包括:
将接收到的每个文本格式的文件转换为结构化格式,并进行存储;
每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;
每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;
每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
根据所述索引信息对所述分布式数据仓库进行访问。
2.根据权利要求1所述的方法,其特征在于,所述文件头中包括以下信息:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
3.根据权利要求1或2所述的方法,其特征在于,所述Chunk中的数据分为2种类型,一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据,通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
4.根据权利要求3所述的方法,其特征在于,
所述每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号;
所述每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
5.根据权利要求4所述的方法,其特征在于,每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
所述根据所述索引信息对所述分布式数据仓库进行访问包括:根据指定行号进行访问;所述根据指定行号进行访问包括:
读取文件头中的信息和一级块索引表的起始偏移地址和长度;
根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表;
根据所述一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到所述指定行号所属的Segment X,并获取所述Segment X的起始偏移地址和长度;
根据所述Segment X的起始偏移地址和长度找到所述Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述Segment X中的二级块索引表;
根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到所述指定行号所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;
根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,并从所述Unit Y中找到所述指定行号对应的Chunk Z,确定所述Chunk Z的长度,获取其中的数据;
根据读取到的文件头中的信息对所述Chunk Z中的数据进行解析。
6.根据权利要求5所述的方法,其特征在于,如果其中的Chunk中包括变长类型的数据,则所述Unit Y中进一步包括:每个Chunk的起始偏移地址;所述从Unit Y中找到所述指定行号对应的Chunk Z,确定所述Chunk Z的长度包括:
根据所述Unit Y中各Chunk的起始偏移地址找到所述Chunk Z,并将所述指定行号加一,得到行号M,用行号M对应的Chunk的起始偏移地址减去所述Chunk Z的起始偏移地址,得到所述Chunk Z的长度。
7.根据权利要求4所述的方法,其特征在于,所述每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
所述根据所述索引信息对所述分布式数据仓库进行访问包括:根据指定记录值进行访问;所述根据指定记录值进行访问包括:
读取文件头中的信息和一级块索引表的起始偏移地址和长度;
根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表;
根据所述一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的Segment X,并获取所述Segment X的起始偏移地址和长度;
根据所述Segment X的起始偏移地址和长度找到所述Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述Segment X中的二级块索引表;
根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;
根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,遍历所述Unit Y,找出所有符合条件的Chunk;
根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
8.一种分布式数据仓库的访问装置,其特征在于,该装置包括:
存储单元,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
访问单元,用于根据所述索引信息对所述分布式数据仓库进行访问。
9.根据权利要求8所述的装置,其特征在于,所述文件头中包括以下信息:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
10.根据权利要求8或9所述的装置,其特征在于,所述Chunk中的数据分为2种类型,一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据,通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
11.根据权利要求10所述的装置,其特征在于,
所述每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号;
所述每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
12.根据权利要求11所述的装置,其特征在于,所述每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
所述访问单元中进一步包括:第一访问子单元和/或第二访问子单元;
所述第一访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度,根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到指定行号所属的Segment X,并获取所述Segment X的起始偏移地址和长度;根据所述Segment X的起始偏移地址和长度找到所述Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述Segment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到所述指定行号所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,并从中找到所述指定行号对应的Chunk Z,确定所述Chunk Z的长度,获取其中的数据;根据读取到的文件头中的信息对所述Chunk Z中的数据进行解析;
所述第二访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的Segment X,并获取所述Segment X的起始偏移地址和长度;根据所述Segment X的起始偏移地址和长度找到所述Segment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述Segment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,遍历所述Unit Y,找出所有符合条件的Chunk;根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
CN201010274687.XA 2010-09-03 2010-09-03 一种分布式数据仓库的访问方法和装置 Active CN102385606B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010274687.XA CN102385606B (zh) 2010-09-03 2010-09-03 一种分布式数据仓库的访问方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010274687.XA CN102385606B (zh) 2010-09-03 2010-09-03 一种分布式数据仓库的访问方法和装置

Publications (2)

Publication Number Publication Date
CN102385606A true CN102385606A (zh) 2012-03-21
CN102385606B CN102385606B (zh) 2016-08-03

Family

ID=45825025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010274687.XA Active CN102385606B (zh) 2010-09-03 2010-09-03 一种分布式数据仓库的访问方法和装置

Country Status (1)

Country Link
CN (1) CN102385606B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407442A (zh) * 2016-09-28 2017-02-15 中国银行股份有限公司 一种海量文本数据处理方法及装置
CN106878431A (zh) * 2017-02-24 2017-06-20 深圳市中博睿存信息技术有限公司 一种转化分布式系统中节点通讯消息格式的方法和装置
CN109241047A (zh) * 2017-07-07 2019-01-18 深圳市辉宏技术有限公司 一种htm数据库的索引建立方法、装置及系统
CN110636368A (zh) * 2018-06-25 2019-12-31 杭州海康威视数字技术股份有限公司 媒体播放方法及装置
CN111666327A (zh) * 2020-06-10 2020-09-15 山东汇贸电子口岸有限公司 一种基于文本的结构化数据描述方法及其系统
CN113448957A (zh) * 2020-03-24 2021-09-28 北京沃东天骏信息技术有限公司 一种数据查询方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1472963A (zh) * 2002-07-30 2004-02-04 深圳市中兴通讯股份有限公司 分布式视频点播系统及其实现数据存储和访问的方法
CN101027668A (zh) * 2004-07-21 2007-08-29 海滩无极限有限公司 基于块映射表缓冲存储和虚拟文件系统的可堆叠文件系统模块的分布式存储结构
CN101178693A (zh) * 2007-12-14 2008-05-14 沈阳东软软件股份有限公司 一种数据缓存方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1472963A (zh) * 2002-07-30 2004-02-04 深圳市中兴通讯股份有限公司 分布式视频点播系统及其实现数据存储和访问的方法
CN101027668A (zh) * 2004-07-21 2007-08-29 海滩无极限有限公司 基于块映射表缓冲存储和虚拟文件系统的可堆叠文件系统模块的分布式存储结构
CN101178693A (zh) * 2007-12-14 2008-05-14 沈阳东软软件股份有限公司 一种数据缓存方法及系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407442A (zh) * 2016-09-28 2017-02-15 中国银行股份有限公司 一种海量文本数据处理方法及装置
CN106878431A (zh) * 2017-02-24 2017-06-20 深圳市中博睿存信息技术有限公司 一种转化分布式系统中节点通讯消息格式的方法和装置
CN106878431B (zh) * 2017-02-24 2020-06-02 北京同有飞骥科技股份有限公司 一种转化分布式系统中节点通讯消息格式的方法和装置
CN109241047A (zh) * 2017-07-07 2019-01-18 深圳市辉宏技术有限公司 一种htm数据库的索引建立方法、装置及系统
CN110636368A (zh) * 2018-06-25 2019-12-31 杭州海康威视数字技术股份有限公司 媒体播放方法及装置
CN110636368B (zh) * 2018-06-25 2021-12-24 杭州海康威视数字技术股份有限公司 媒体播放方法、系统、装置及存储介质
CN113448957A (zh) * 2020-03-24 2021-09-28 北京沃东天骏信息技术有限公司 一种数据查询方法和装置
CN111666327A (zh) * 2020-06-10 2020-09-15 山东汇贸电子口岸有限公司 一种基于文本的结构化数据描述方法及其系统

Also Published As

Publication number Publication date
CN102385606B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
CN102385606A (zh) 一种分布式数据仓库的访问方法和装置
CN101894115B (zh) 电子文档的图像数据处理方法及其装置
US7496589B1 (en) Highly compressed randomly accessed storage of large tables with arbitrary columns
CN109120272B (zh) 一种面向离散制造车间的rfid标签数据压缩方法
CN101241508B (zh) 结构化数据序列的压缩方法
CN104462141B (zh) 一种数据存储与查询的方法、系统及存储引擎装置
WO2007138600A4 (en) METHOD AND SYSTEM FOR TRANSFORMING LOGIC DATA OBJECTS FOR STORAGE PURPOSES
CN102880615B (zh) 一种数据存储方法和装置
CN104598625B (zh) 基于自动识别标识符的数据表存储方法
CN103177027A (zh) 获取动态Feed索引的方法和系统
CN107992492B (zh) 一种数据区块的存储方法、读取方法、其装置及区块链
US8244693B2 (en) Method and device for compressing table based on finite automata, method and device for matching table
CN105027071B (zh) 管理对存储数据单元的操作
CN106547911B (zh) 一种海量小文件的存取方法和系统
CN116244313B (zh) Json数据存储和访问方法、装置、计算机设备及介质
CN102214170A (zh) 一种xml数据压缩和解压缩方法及系统
CN104951482B (zh) 一种操作Sparse格式的镜像文件的方法及装置
CN100498794C (zh) 索引压缩的方法和装置
CN102867023B (zh) 一种栅格数据的存储、读取方法及装置
US20130144850A1 (en) Stream compression and decompression
CN112632568A (zh) 温度数据的存储和采集方法、系统、电子设备和存储介质
CN110019347B (zh) 一种区块链的数据处理方法、装置及终端设备
CN107894875B (zh) 一种rtu数据存储方法
CN103853772B (zh) 一种高效倒排索引组织方法
CN104111899A (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
TR01 Transfer of patent right

Effective date of registration: 20180917

Address after: 100090 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Patentee after: Tencent cloud computing (Beijing) limited liability company

Address before: 518044 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.

TR01 Transfer of patent right