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

文档序号:6331553阅读:133来源:国知局
专利名称:一种分布式数据仓库的访问方法和装置的制作方法
技术领域
本发明涉及数据库访问技术,特别涉及一种分布式数据仓库的访问方法和装置。
背景技术
分布式数据仓库(TDW)中存储有海量的数据,相比于比传统的数据仓库,数据量高出几个数量级,这些数据是由各个业务部门(BU)提供的业务或用户行为信息,通常以文本格式进行存储。文本格式对于顺序访问来说比较方便,但却不适用于随机访问。比如,要读取指定行的记录,那么必需从头开始读取该行之前的所有数据,然后才能找到所述指定行,实现起来非常麻烦,大量的随机访问几乎是不可能的,但在实际应用中很多场合都需要用到随机访问,因此给用户的使用带来了很大的不便。另外,现有技术中,当需要对分布式数据仓库中的数据,如一个文件进行分布式并行处理时,通常根据数据大小如64M,将文件拆分成多个段,分布式集群中的每个工作节点负责处理一段,但由于文本格式没有明显的分隔符,因此在拆分时很可能会导致一条完整的记录被划分到两个不同的段中,即划分给两个不同的工作节点,从而影响后续处理,也给用户的使用带来不便。再有,以文本格式,即字符串格式存储数据会占用比较多的存储空间,从而影响分布式数据仓库的存储能力。还有,以文本格式存储的数据用户可直接查看, 安全性较低。

发明内容
有鉴于此,本发明的主要目的在于提供一种分布式数据仓库的访问方法,能够方便用户使用,且能够节省存储空间和提高数据的安全性。本发明的另一目的在于提供一种分布式数据仓库的访问装置,能够方便用户使用,且能够节省存储空间和提高数据的安全性。为达到上述目的,本发明的技术方案是这样实现的一种分布式数据仓库的访问方法,该方法包括将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段kgment以及一个一级块索引表,所述一级块索引表中保存有每个kgment对应的一级块索引项,每个一级块索引项中保存有其对应的kgment的索引信息;每个kgment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;根据所述索引信息对所述分布式数据仓库进行访问。一种分布式数据仓库的访问装置,该装置包括
5
存储单元,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储; 每个结构化格式的文件中包括一个文件头Head、一个以上数据段kgment以及一个一级块索引表,所述一级块索引表中保存有每个kgment对应的一级块索引项,每个一级块索引项中保存有其对应的kgment的索引信息;每个kgment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个ttiit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;访问单元,用于根据所述索引信息对所述分布式数据仓库进行访问。可见,采用本发明的技术方案,将文本格式的文件转换为结构化格式,利用索引信息对指定行或指定记录值进行访问,从而提高了访问效率,方便了用户使用;另外,本发明所述方案中的数据被保存在各个kgment中,如果要对结构化格式的文件进行分布式并行处理,每个工作节点只需负责一个kgment即可,不会存在将一条完整的记录划分给两个不同工作节点的情况;还有,按照本发明所述方案进行处理后的数据将以二进制格式进行存储,相比于字符串格式更加节省存储空间,比如存储一个8位的qq号码,现有技术中需要占用8个字节,而采用本发明所述方案后将只需占用4个字节;再有,对于以二进制格式进行存储的数据,用户将不可直接查看,从而提高了数据的安全性。


图1为本发明方法实施例的流程图。图2为本发明所述结构化格式的文件的示意图。图3为本发明所述kgment的结构示意图。图4为本发明所述Unit和Chunk的组成结构示意图。图5为本发明装置实施例的组成结构示意图。
具体实施例方式针对现有技术中存在的问题,本发明中提出一种全新的分布式数据仓库访问方案,将接收到的文本格式的文件按照一定的格式进行组织和索引,形成新的结构化存储格式,并提供便捷的访问接口。为使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。图1为本发明方法实施例的流程图。如图1所示,包括以下步骤步骤11 将接收到的每个文本格式的文件转换为结构化格式,并进行存储。本步骤中,对于接收到的每个文本格式的文件,首先将其转换为结构化格式,然后进行存储。图2为本发明所述结构化格式的文件的示意图。如图2所示,每个文件中包括一个文件头(Head)、一个以上数据段(kgment)以及一个一级块索引表。其中,文件头用于保存文件的相关信息如字段类型和版本号等,保证结构化格式的文件能够被独立的读取和解析;各kgment用于保存具体的数据;一级块索引表用于保存每个kgment对应的一级块索引项(kgment idx),每个一级块索引项中保存有其对应的kgment的索引信息。
1)文件头文件头固定在结构化格式的文件的开始部分,根据表一所示FieldMap字段中涉及到的字段数的不同,文件头的长度也将不同。
字段名称含义Ver数据版本号Var是否存在变长字段Compress数据是否压缩Encode数据是否加密FieldMap所有字段类型定义表一文件头中包括的信息如表一所示,文件头中包括的信息主要为数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义,后续可利用文件头中的信息对数据进行解析。各字段的具体作用为本领域公知,不再赘述。2) Segment通常,每个kgment的大小相同且固定,每个结构化格式的文件中具体包括多少个kgment视文件大小而定。每个kgment中包括一个以上单元(Unit)以及一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项(Unit idx),每个二级块索引项中保存有其对应的Unit的索引信息。图3为本发明所述kgment的结构示意图。如图3所示,二级块索引表位于所有 Unit之后;每个Unit被依次填充到kgment中,对于无法存放一个完整的Unit的情况,可将空闲的部分用1或0填充补齐,以避免一个Unit中的数据被拆分到两fkgment中的情况。举例说明,假设一 kgment的大小为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等,一种为变长, 如Mring等,对于定长数据,可直接保存数据本身,而对于变长数据,需要通过一个预先设置的长度(Len)字段标识该数据的长度,同时保存数据本身。图4为本发明所述Unit和Chunk的组成结构示意图。如图4所示,其中的“bitmap” 字段用于指示后续各字段(如fieldl 5)是否为空;“fieldl”、“field2”、“field3”、“field4”和“field5”字段均用于存放定长类型的数据,如果无对应类型的数据,则对应的字段置为空;“field6”字段用于存放变长类型的数据,与其相邻的字段用于指示该变长类型的数据的长度,如果无变长类型的数据,则这两个字段可不存在。另外,本发明所述方案中,每个索引项中包括的索引信息均相同,如表二所示
权利要求
1.一种分布式数据仓库的访问方法,其特征在于,该方法包括 将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段kgment以及一个一级块索引表,所述一级块索引表中保存有每个kgment对应的一级块索引项,每个一级块索引项中保存有其对应的kgment的索引信息;每个kgment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引 fn息;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录; 根据所述索引信息对所述分布式数据仓库进行访问。
2.根据权利要求1所述的方法,其特征在于,所述文件头中包括以下信息数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
3.根据权利要求1或2所述的方法,其特征在于,所述Chunk中的数据分为2种类型, 一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据, 通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
4.根据权利要求3所述的方法,其特征在于,所述每个kgment的索引信息包括该kgment的起始行号和/或起始记录值、该 Segment的结束行号和/或结束记录值、该kgment的起始偏移地址、该kgment的长度以及该kgment的索引号;所述每个Unit的索引信息包括该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
5.根据权利要求4所述的方法,其特征在于,每个结构化格式的文件中进一步包括所述一级块索引表的起始偏移地址和长度;每个kgment中进一步包括所述二级块索引表的起始偏移地址和长度;所述根据所述索引信息对所述分布式数据仓库进行访问包括根据指定行号进行访问;所述根据指定行号进行访问包括读取文件头中的信息和一级块索引表的起始偏移地址和长度; 根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表; 根据所述一级块索引表中保存的各kgment的起始行号、结束行号以及索引号,找到所述指定行号所属的kgment X,并获取所述kgment X的起始偏移地址和长度;根据所述%81^时X的起始偏移地址和长度找到所述kgment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述kgment 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所述的方法,其特征在于,所述每个结构化格式的文件中进一步包括所述一级块索引表的起始偏移地址和长度;每个kgment中进一步包括所述二级块索引表的起始偏移地址和长度;所述根据所述索引信息对所述分布式数据仓库进行访问包括根据指定记录值进行访问;所述根据指定记录值进行访问包括读取文件头中的信息和一级块索引表的起始偏移地址和长度; 根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表; 根据所述一级块索引表中保存的各kgment的起始记录值、结束记录值以及索引号, 找到所述指定记录值所属的kgment X,并获取所述kgment X的起始偏移地址和长度;根据所述%811^壯X的起始偏移地址和长度找到所述kgment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述kgment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,遍历所述Unit Y,找出所有符合条件的Chunk ;根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
8.一种分布式数据仓库的访问装置,其特征在于,该装置包括存储单元,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段kgment以及一个一级块索引表,所述一级块索引表中保存有每个kgment对应的一级块索引项,每个一级块索引项中保存有其对应的kgment的索引信息;每个kgment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个ttiit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块Chunk,每个 Chunk对应一条记录;访问单元,用于根据所述索引信息对所述分布式数据仓库进行访问。
9.根据权利要求8所述的装置,其特征在于,所述文件头中包括以下信息数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
10.根据权利要求8或9所述的装置,其特征在于,所述Chunk中的数据分为2种类型, 一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据, 通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
11.根据权利要求10所述的装置,其特征在于,所述每个kgment的索引信息包括该kgment的起始行号和/或起始记录值、该 Segment的结束行号和/或结束记录值、该kgment的起始偏移地址、该kgment的长度以及该kgment的索引号;所述每个Unit的索引信息包括该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号。
12.根据权利要求11所述的装置,其特征在于,所述每个结构化格式的文件中进一步包括所述一级块索引表的起始偏移地址和长度;每个kgment中进一步包括所述二级块索引表的起始偏移地址和长度;所述访问单元中进一步包括第一访问子单元和/或第二访问子单元; 所述第一访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度,根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各^^!!^肚的起始行号、结束行号以及索引号,找到指定行号所属的kgment X,并获取所述kgment X的起始偏移地址和长度;根据所述kgment X的起始偏移地址和长度找到所述kgment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述kgment X中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到所述指定行号所属的Unit Y,并获取所述Unit Y的起始偏移地址和长度;根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,并从中找到所述指定行号对应的Chunk Z,确定所述Chunk Z的长度,获取其中的数据;根据读取到的文件头中的信息对所述Chunk Z中的数据进行解析;所述第二访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各kgment的起始记录值、结束记录值以及索引号,找到指定记录值所属Wkgment X,并获取所述kgment X的起始偏移地址和长度;根据所述kgment X 的起始偏移地址和长度找到所述kgment X,并根据其中的二级块索引表的起始偏移地址和长度找到所述^^!^肚X中的二级块索引表;根据找到的二级块索引表中保存的各Unit 的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的Unit Y,并获取所述 Unit Y的起始偏移地址和长度;根据所述Unit Y的起始偏移地址和长度找到所述Unit Y,遍历所述Unit Y,找出所有符合条件的Chunk ;根据读取到的文件头中的信息对找到的 Chunk中的数据进行解析。
全文摘要
本发明提供了一种分布式数据仓库的访问方法和装置将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头(Head)、一个以上数据段(Segment)以及一个一级块索引表,一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息;每个Segment中包括一个以上单元(Unit)和一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息;每个Unit中包括一个以上的数据块(Chunk),每个Chunk对应一个记录;根据索引信息对分布式数据仓库进行访问。应用本发明所述方案,能够方便用户使用,且能够节省存储空间和提高数据的安全性。
文档编号G06F17/30GK102385606SQ20101027468
公开日2012年3月21日 申请日期2010年9月3日 优先权日2010年9月3日
发明者张书彬, 徐钊, 李均, 洪坤乾, 赵伟, 郭玮 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1