CN102385606B - 一种分布式数据仓库的访问方法和装置 - Google Patents
一种分布式数据仓库的访问方法和装置 Download PDFInfo
- Publication number
- CN102385606B CN102385606B CN201010274687.XA CN201010274687A CN102385606B CN 102385606 B CN102385606 B CN 102385606B CN 201010274687 A CN201010274687 A CN 201010274687A CN 102385606 B CN102385606 B CN 102385606B
- 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.)
- Active
Links
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对应的一级块索引项(Segmentidx),每个一级块索引项中保存有其对应的Segment的索引信息。
1)文件头
文件头固定在结构化格式的文件的开始部分,根据表一所示FieldMap字段中涉及到的字段数的不同,文件头的长度也将不同。
字段名称 | 含义 |
Ver | 数据版本号 |
Var | 是否存在变长字段 |
Compress | 数据是否压缩 |
Encode | 数据是否加密 |
FieldMap | 所有字段类型定义 |
表一文件头中包括的信息
如表一所示,文件头中包括的信息主要为:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义,后续可利用文件头中的信息对数据进行解析。各字段的具体作用为本领域公知,不再赘述。
2)Segment
通常,每个Segment的大小相同且固定,每个结构化格式的文件中具体包括多少个Segment视文件大小而定。
每个Segment中包括一个以上单元(Unit)以及一个二级块索引表,二级块索引表中保存有每个Unit对应的二级块索引项(Unitidx),每个二级块索引项中保存有其对应的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(agetinyintqqintdescstring),分别表示年龄、qq号码和描述信息,插入的记录值为(25,1234567890,“helloworld”)。
将该记录结构化的过程简述如下:
1)将该记录的各个字段的具体值序列化为一个ChunkA;
2)创建一个UnitB(如果已有可用的Unit,则无需创建),将ChunkA保存在UnitB中;
3)在UnitB中的MetaData信息中保存ChunkA的起始偏移地址;
4)创建一个SegmentC(如果已有可用的Segment,则无需创建),将UnitB保存在SegmentC中;
5)在SegmentC的二级块索引表中增加一个二级块索引项,记录UnitB的索引信息;
6)将SegmentC写入到结构化格式的文件中,同时在一级块索引表中增加一个一级块索引项,记录SegmentC的索引信息。
针对每条记录,分别按照上述方式进行处理。当所有记录添加完毕后,在结构化格式的文件的末尾增加一级块索引表的起始偏移地址和长度。
步骤12:根据转换为结构化格式的文件中的索引信息对分布式数据仓库进行访问。
本步骤中,可采用以下两种访问方式,即根据指定行号进行访问以及根据指定记录值进行访问。
其中,根据指定行号进行访问的方式包括:
1)读取文件头中的信息以及一级块索引表的起始偏移地址和长度;
2)根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;
3)根据一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到指定行号所属的SegmentX,并获取SegmentX的起始偏移地址和长度;
4)根据SegmentX的起始偏移地址和长度找到SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到SegmentX中的二级块索引表;
5)根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到指定行号所属的UnitY,并获取UnitY的起始偏移地址和长度;
6)根据UnitY的起始偏移地址和长度找到UnitY;
7)从UnitY中找到指定行号对应的ChunkZ,确定ChunkZ的长度,获取其中的数据;
本步骤中,如果UnitY中的Chunk中包括变长类型的数据,则根据UnitY中各Chunk的起始偏移地址找到ChunkZ,并将指定行号加一,得到行号M,用行号M对应的Chunk的起始偏移地址减去ChunkZ的起始偏移地址,得到ChunkZ的长度;如果UnitY中的Chunk中不包括变长类型的数据,那么各Chunk的长度是已知且相同的,由于已知UnitY的起始偏移地址,所以可通过计算确定出ChunkZ的起始偏移地址(长度已知)。
8)根据读取到的文件头中的信息对获取到的ChunkZ中的数据进行解析。
根据指定记录值进行访问的方式包括:
1)读取文件头中的信息和一级块索引表的起始偏移地址和长度;
2)根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;
3)根据一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的SegmentX,并获取SegmentX的起始偏移地址和长度;
4)根据SegmentX的起始偏移地址和长度找到SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到SegmentX中的二级块索引表;
5)根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到指定记录值所属的UnitY,并获取UnitY的起始偏移地址和长度;
6)根据UnitY的起始偏移地址和长度找到UnitY;
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的起始行号、结束行号以及索引号,找到指定行号所属的SegmentX,并获取SegmentX的起始偏移地址和长度;根据SegmentX的起始偏移地址和长度找到SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到SegmentX中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到指定行号所属的UnitY,并获取UnitY的起始偏移地址和长度;根据UnitY的起始偏移地址和长度找到UnitY,并从中找到指定行号对应的ChunkZ,确定ChunkZ的长度,获取其中的数据;根据读取到的文件头中的信息对ChunkZ中的数据进行解析;
第二访问子单元522,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到一级块索引表;根据一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的SegmentX,并获取SegmentX的起始偏移地址和长度;根据SegmentX的起始偏移地址和长度找到SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到SegmentX中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到指定记录值所属的UnitY,并获取UnitY的起始偏移地址和长度;根据UnitY的起始偏移地址和长度找到UnitY,遍历UnitY,找出所有符合条件的Chunk;根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
图5所示装置实施例的具体工作流程请参照图1所示方法实施例中的相应说明,此处不再赘述。
总之,采用本发明的技术方案,能够方便用户使用,且能够节省存储空间和提高数据的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种分布式数据仓库的访问方法,其特征在于,该方法包括:
将接收到的每个文本格式的文件转换为结构化格式,并进行存储;
每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息,每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号;
每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息,每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号;
每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
向所述结构化格式的文件插入记录时,针对每一条待插入记录,将待插入记录序列化为Chunk;
如果所述结构化格式的文件不存在可用的Unit,则创建Unit,将待插入记录序列化得到的Chunk保存在创建的Unit中;
如果所述结构化格式的文件不存在可用的Segment,创建Segment,将所述创建的Unit保存在创建的Segment中,并在所述创建的Segment的二级块索引表中增加一个二级块索引项,记录所述创建的Unit的索引信息,将所述创建的Segment写入所述结构化格式的文件中,在所述结构化格式的文件的一级块索引表中增加一个一级块索引项,记录创建的Segment的索引信息;
根据所述索引信息对所述分布式数据仓库进行访问。
2.根据权利要求1所述的方法,其特征在于,所述文件头中包括以下信息:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
3.根据权利要求1或2所述的方法,其特征在于,所述Chunk中的数据分为2种类型,一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据,通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
4.根据权利要求1所述的方法,其特征在于,每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
当每个Segment的索引信息包括:该Segment的起始行号、该Segment的结束行号,且每个Unit的索引信息包括:该Unit的起始行号、该Unit的结束行号时,所述根据所述索引信息对所述分布式数据仓库进行访问包括:根据指定行号进行访问;所述根据指定行号进行访问包括:
读取文件头中的信息和一级块索引表的起始偏移地址和长度;
根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表;
根据所述一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到所述指定行号所属的SegmentX,并获取所述SegmentX的起始偏移地址和长度;
根据所述SegmentX的起始偏移地址和长度找到所述SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到所述SegmentX中的二级块索引表;
根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到所述指定行号所属的UnitY,并获取所述UnitY的起始偏移地址和长度;
根据所述UnitY的起始偏移地址和长度找到所述UnitY,并从所述UnitY中找到所述指定行号对应的ChunkZ,确定所述ChunkZ的长度,获取其中的数据;
根据读取到的文件头中的信息对所述ChunkZ中的数据进行解析。
5.根据权利要求4所述的方法,其特征在于,如果其中的Chunk中包括变长类型的数据,则所述UnitY中进一步包括:每个Chunk的起始偏移地址;所述从UnitY中找到所述指定行号对应的ChunkZ,确定所述ChunkZ的长度包括:
根据所述UnitY中各Chunk的起始偏移地址找到所述ChunkZ,并将所述指定行号加一,得到行号M,用行号M对应的Chunk的起始偏移地址减去所述ChunkZ的起始偏移地址,得到所述ChunkZ的长度。
6.根据权利要求1所述的方法,其特征在于,所述每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
当每个Segment的索引信息包括:该Segment的起始记录值、该Segment的结束记录值,且每个Unit的索引信息包括:该Unit的起始记录值、该Unit的结束记录值时,所述根据所述索引信息对所述分布式数据仓库进行访问包括:根据指定记录值进行访问;所述根据指定记录值进行访问包括:
读取文件头中的信息和一级块索引表的起始偏移地址和长度;
根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表;
根据所述一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的SegmentX,并获取所述SegmentX的起始偏移地址和长度;
根据所述SegmentX的起始偏移地址和长度找到所述SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到所述SegmentX中的二级块索引表;
根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的UnitY,并获取所述UnitY的起始偏移地址和长度;
根据所述UnitY的起始偏移地址和长度找到所述UnitY,遍历所述UnitY,找出所有符合条件的Chunk;
根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
7.一种分布式数据仓库的访问装置,其特征在于,该装置包括:
存储单元,用于将接收到的每个文本格式的文件转换为结构化格式,并进行存储;每个结构化格式的文件中包括一个文件头Head、一个以上数据段Segment以及一个一级块索引表,所述一级块索引表中保存有每个Segment对应的一级块索引项,每个一级块索引项中保存有其对应的Segment的索引信息,每个Segment的索引信息包括:该Segment的起始行号和/或起始记录值、该Segment的结束行号和/或结束记录值、该Segment的起始偏移地址、该Segment的长度以及该Segment的索引号;每个Segment中包括一个以上单元Unit以及一个二级块索引表,所述二级块索引表中保存有每个Unit对应的二级块索引项,每个二级块索引项中保存有其对应的Unit的索引信息,每个Unit的索引信息包括:该Unit的起始行号和/或起始记录值、该Unit的结束行号和/或结束记录值、该Unit的起始偏移地址、该Unit的长度以及该Unit的索引号;每个Unit中包括一个以上的数据块Chunk,每个Chunk对应一条记录;
所述存储单元向所述结构化格式的文件插入记录时,针对每一条待插入记录,将待插入记录序列化为Chunk;
如果所述结构化格式的文件不存在可用的Unit,则创建Unit,将待插入记录序列化得到的Chunk保存在创建的Unit中;
如果所述结构化格式的文件不存在可用的Segment,创建Segment,将所述创建的Unit保存在创建的Segment中,并在所述创建的Segment的二级块索引表中增加一个二级块索引项,记录所述创建的Unit的索引信息,将所述创建的Segment写入所述结构化格式的文件中,在所述结构化格式的文件的一级块索引表中增加一个一级块索引项,记录创建的Segment的索引信息;
访问单元,用于根据所述索引信息对所述分布式数据仓库进行访问。
8.根据权利要求7所述的装置,其特征在于,所述文件头中包括以下信息:数据版本号、是否存在变长字段、数据是否加密、数据是否压缩以及所有字段类型定义;所述文件头中的信息用于数据解析。
9.根据权利要求7或8所述的装置,其特征在于,所述Chunk中的数据分为2种类型,一种为定长,一种为变长,对于定长类型的数据,直接保存数据本身,对于变长类型的数据,通过一个预先设置的长度Len字段标识该数据的长度,并保存数据本身。
10.根据权利要求7所述的装置,其特征在于,所述每个结构化格式的文件中进一步包括:所述一级块索引表的起始偏移地址和长度;每个Segment中进一步包括:所述二级块索引表的起始偏移地址和长度;
当所述存储单元存储的每个Segment的索引信息包括:该Segment的起始行号、该Segment的结束行号,且每个Unit的索引信息包括:该Unit的起始行号、该Unit的结束行号时,所述访问单元中进一步包括:第一访问子单元;
当所述存储单元存储的每个Segment的索引信息包括:该Segment的起始记录值、该Segment的结束记录值,且每个Unit的索引信息包括:该Unit的起始记录值、该Unit的结束记录值时,所述访问单元中进一步包括:第二访问子单元;
所述第一访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的所述一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各Segment的起始行号、结束行号以及索引号,找到指定行号所属的SegmentX,并获取所述SegmentX的起始偏移地址和长度;根据所述SegmentX的起始偏移地址和长度找到所述SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到所述SegmentX中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始行号、结束行号以及索引号,找到所述指定行号所属的UnitY,并获取所述UnitY的起始偏移地址和长度;根据所述UnitY的起始偏移地址和长度找到所述UnitY,并从中找到所述指定行号对应的ChunkZ,确定所述ChunkZ的长度,获取其中的数据;根据读取到的文件头中的信息对所述ChunkZ中的数据进行解析;
所述第二访问子单元,用于读取文件头中的信息和一级块索引表的起始偏移地址和长度;根据读取到的一级块索引表的起始偏移地址和长度找到所述一级块索引表;根据所述一级块索引表中保存的各Segment的起始记录值、结束记录值以及索引号,找到指定记录值所属的SegmentX,并获取所述SegmentX的起始偏移地址和长度;根据所述SegmentX的起始偏移地址和长度找到所述SegmentX,并根据其中的二级块索引表的起始偏移地址和长度找到所述SegmentX中的二级块索引表;根据找到的二级块索引表中保存的各Unit的起始记录值、结束记录值以及索引号,找到所述指定记录值所属的UnitY,并获取所述UnitY的起始偏移地址和长度;根据所述UnitY的起始偏移地址和长度找到所述UnitY,遍历所述UnitY,找出所有符合条件的Chunk;根据读取到的文件头中的信息对找到的Chunk中的数据进行解析。
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 CN102385606A (zh) | 2012-03-21 |
CN102385606B true 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) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407442B (zh) * | 2016-09-28 | 2019-11-29 | 中国银行股份有限公司 | 一种海量文本数据处理方法及装置 |
CN106878431B (zh) * | 2017-02-24 | 2020-06-02 | 北京同有飞骥科技股份有限公司 | 一种转化分布式系统中节点通讯消息格式的方法和装置 |
CN109241047A (zh) * | 2017-07-07 | 2019-01-18 | 深圳市辉宏技术有限公司 | 一种htm数据库的索引建立方法、装置及系统 |
CN110636368B (zh) * | 2018-06-25 | 2021-12-24 | 杭州海康威视数字技术股份有限公司 | 媒体播放方法、系统、装置及存储介质 |
CN113448957A (zh) * | 2020-03-24 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 一种数据查询方法和装置 |
CN111666327A (zh) * | 2020-06-10 | 2020-09-15 | 山东汇贸电子口岸有限公司 | 一种基于文本的结构化数据描述方法及其系统 |
Citations (3)
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 | 沈阳东软软件股份有限公司 | 一种数据缓存方法及系统 |
-
2010
- 2010-09-03 CN CN201010274687.XA patent/CN102385606B/zh active Active
Patent Citations (3)
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 | 沈阳东软软件股份有限公司 | 一种数据缓存方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102385606A (zh) | 2012-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102385606B (zh) | 一种分布式数据仓库的访问方法和装置 | |
CN104462141B (zh) | 一种数据存储与查询的方法、系统及存储引擎装置 | |
CN102867071B (zh) | 一种网管海量历史数据管理方法 | |
CN107992492B (zh) | 一种数据区块的存储方法、读取方法、其装置及区块链 | |
CN108231109B (zh) | 动态随机存取存储器dram的刷新方法、设备以及系统 | |
US20140359233A1 (en) | Read-write control method for memory, and corresponding memory and server | |
CN110196847A (zh) | 数据处理方法和装置、存储介质及电子装置 | |
CN108563711A (zh) | 一种基于时间节点的时序数据存储方法 | |
CN102880615A (zh) | 一种数据存储方法和装置 | |
CN106445815B (zh) | 一种自动化测试方法及装置 | |
CN105144157A (zh) | 用于压缩数据库中的数据的系统和方法 | |
CN110825733A (zh) | 一种面向多采样流的时间序列数据管理方法及系统 | |
CN104598625A (zh) | 基于自动识别标识符的数据表存储方法 | |
CN104951482B (zh) | 一种操作Sparse格式的镜像文件的方法及装置 | |
CN106155917A (zh) | 内存管理方法及装置 | |
CN100498794C (zh) | 索引压缩的方法和装置 | |
CN112632568A (zh) | 温度数据的存储和采集方法、系统、电子设备和存储介质 | |
CN108572788A (zh) | 数据存取方法、装置及系统 | |
CN102867023B (zh) | 一种栅格数据的存储、读取方法及装置 | |
CN103902228A (zh) | 一种变长数据存取方法 | |
CN110019347A (zh) | 一种区块链的数据处理方法、装置及终端设备 | |
CN108073709B (zh) | 一种数据记录的操作方法、装置、设备和存储介质 | |
CN115454353B (zh) | 一种面向空间应用数据的高速写入及查询方法 | |
CN101894098B (zh) | 一种内嵌字体数据处理方法及装置 | |
CN109521954B (zh) | 一种配网ftu定点文件管理方法及装置 |
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 |