一种数据存储方法和装置制造方法及图纸

技术编号:8215637 阅读:153 留言:0更新日期:2013-01-17 13:17
本发明专利技术实施例公开了一种数据存储方法和装置,该方法包括:获得需要存储的数据和所述数据的逻辑存储信息;根据所述逻辑存储信息将所述数据以段为单位存储在数据文件中,并在所述数据文件中形成数据段和数据段索引,所述数据段索引用于在所述数据文件中定位数据所在的数据段,以便分布式集群并行处理所述数据文件的数据段。采用本发明专利技术,可提高分布式集群中的数据处理效率。

【技术实现步骤摘要】

本专利技术涉及数据存储领域,尤其涉及一种数据存储方法、数据访问方法和数据存储装置。
技术介绍
分布式数据仓库需要对T/P级(即1024G或1024T,G为1024M,M为1024K,K为1024比特)的海量数据进行分析处理,这些数据是各个客户提供的业务或用户行为信息,逻辑上通常以表(Table)的形式存储。传统的数据库(Database)/数据仓库(Data Warehouse)产品通常以行为单位对记录进行存储,访问的时候也只能整行读取。这种处理方式对需要处理海量数据的分布式数据仓库系统来说,存在3个严重的问题 I、为方便统计、计算等应用场景,数据仓库中的表通常都是宽表,一般都是几十、几百个字段,数据冗余非常大,在以行为单位的存储、访问模型中,哪怕只需要访问一个字段(通常一个字段对应一列),也需要读取整个记录的所有字段,然后留下需要的信息,将不需要的字段抛弃。这个过程会浪费很多的本地磁盘输入输出(10),无疑会导致集群的处理效率低下,特别是在需要访问的字段数远小于整表实际的字段数的时候。而这种情况在数据仓库需要处理的业务类型中非常常见。2、在分布式数据仓库中,业务请求通常会被分拆成多个任务,分别由集群中的各个节点执行,当需要访问的数据量越大的时候,所需要参与计算的节点就越多。在传统以行为单位存储、访问的模型中,由于会读取大量冗余的字段信息,会明显增大业务的计算规模,导致集群中计算资源的严重浪费,进一步导致整个集群的处理效率低下。3、在分布式数据仓库中,集群中参与计算的各个节点之间需要通过网络共享、传输大量的数据,需要传输的数据量越大,网络带宽的负载就越大,进而影响整个集群的处理效率。而在以行为单位的存储、访问模型中,由于有大量的数据是冗余的,在进行业务处理的时候,会浪费大量的网络带宽。因此,若没有高效的数据逻辑存储结构,会使得集群处理的效率底下,甚至很可能会导致计算任务无法完成。当前的部分数据库,例如Oracle通过压缩技术部分缓解,但无法从根本上解决。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种数据存储方法及装置。可提高分布式集群中的数据处理效率。为了解决上述技术问题,本专利技术实施例提供了一种数据存储方法包括 获得需要存储的数据和所述数据的逻辑存储信息; 根据所述逻辑存储信息将所述数据以段为单位存储在数据文件中,并在所述数据文件中形成数据段和数据段索引,所述数据段索引用于在所述数据文件中定位数据所在的数据段,以便分布式集群并行处理所述数据文件的数据段。其中,所述需要存储的数据为列簇数据,所述获得需要存储的数据和所述数据的逻辑存储信息包括 获得列簇数据和所述列簇数据的逻辑存储信息,所述列簇数据中包括一个数据表中的多列数据,所述逻辑存储信息用于将所述列簇数据存储在所述数据文件中; 所述方法还包括获得列簇定义信息,所述列簇定义信息中包括所述数据表中各列簇数据的组成信息以及各列簇数据的逻辑存储位置。在所述获得列簇数据之前包括 根据数据表结构和业务将所述数据表分为多个列簇数据。数据段还可包括数据单元,所述数据单元中包括数据块,所述方法还包括 根据所述逻辑存储信息将所述数据格式化为多个数据块; 将所述多个数据块存储在一个数据单元中,再将多个数据单元存储在一个数据段中,并在所述数据段中形成所述数据单元的数据单元索引。所述将多个数据单元存储在一个数据段中包括,将多个数据单元压缩后存储在一个数据段中。所述数据文件为数据仓库中的存储文件。相应的,本专利技术实施例还提供了一种数据访问方法,包括 获得需要访问的数据的数据文件信息; 根据所述数据文件信息获取所述数据文件中存储的数据段索引信息,所述数据段索引用于在所述数据文件中定位数据所在的数据段,以便分布式集群并行处理所述数据文件的数据段; 根据所述数据段索引信息获取所述数据在所述数据文件的逻辑存储位置; 根据所述逻辑存储位置访问所述数据。其中,所述数据文件中存储列簇数据,所述列簇数据中包括一个数据表中的多列数据,所述获得需要访问的数据的数据文件信息包括 判断业务需要的数据是否处于一个列簇数据中; 若判断结果为是,则根据列簇定义信息获得数据文件的信息,所述列簇定义信息中包括所述数据表中各列簇数据的组成信息以及各列簇数据的逻辑存储位置; 若判断结果为否,则根据列簇定义信息获得多个数据文件的信息。进一步的,本专利技术实施例还提供了一种数据存储装置,包括 获取单元,用于获得需要存储的数据和所述数据的逻辑存储信息; 存储单元,用于根据所述逻辑存储信息将所述数据以段为单位存储在数据文件中,并在所述数据文件中形成数据段和数据段索引,所述数据段索引用于在所述数据文件中定位数据所在的数据段,以便分布式集群并行处理所述数据文件的数据段。其中,所述需要存储的数据为列簇数据,所述获取单元还用于获得列簇数据和所述列簇数据的逻辑存储信息,所述列簇数据中包括一个数据表中的多列数据,所述逻辑存储信息用于将所述列簇数据存储在所述数据文件中; 所述数据存储装置还包括定义单元,用于获得列簇定义信息,所述列簇定义信息中包括所述数据表中各列簇数据的组成信息以及各列簇数据的逻辑存储位置。所述定义单元还用于根据数据表结构和业务将所述数据表分为多个列簇数据。数据段还包括数据单元,所述数据单元中包括数据块,所述存储单元还包括 划分子单元,用于根据所述逻辑存储信息将所述数据格式化为多个数据块; 块存储子单元,用于将所述多个数据块存储在一个数据单元中,再将多个数据单元存储在一个数据段中,并在所述数据段中形成所述数据单元的数据单元索引; 段存储子单元,用于将所述数据段存储在数据文件中,并在所述数据文件中形成所述数据段的数据段索引。所述块存储子单元还用于将多个数据单元压缩后存储在一个数据段中。所述数据文件为数据仓库中的存储文件。实施本专利技术实施例,具有如下有益效果由于将数据文件中的数据划分为逻辑上的数据段,并形成了数据段的索引,使得该数据文件中的各数据段可同时被分布式集群中的不同处理器访问,即可实现分布式集群对数据文件的数据进行并行处理,大大提升了数·据处理效率。同时,本专利技术的具体实施例中还将数据表分成各列簇存储在数据文件中,符合业务处理的惯常逻辑(即一个列簇的数据通常会同时被需要),也一定程度上提高了处理效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I是本专利技术实施例中的数据存储方法的一个具体流程示意 图2是本专利技术实施例中的数据文件的一个具体组成结构示意 图3是本专利技术实施例中的数据存储方法的另一个具体流程示意 图4是本专利技术实施例中的数据段的一个具体组成结构示意 图5是本专利技术实施例中的数据单元和数据块的一个具体组成结构示意 图6是本专利技术实施例中的记录按列存储方法的一个具体流程示意 图7是本专利技术实施例中的数据访问方法的一个具体流程示意 图8是本专利技术实施例中的数据存储装置的一个具体组成示意 图9是本专利技术实施例中的数据存储装置的另一个具体组本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201110198294.html" title="一种数据存储方法和装置原文来自X技术">数据存储方法和装置</a>

【技术保护点】
一种数据存储方法,其特征在于,所述方法包括:获得需要存储的数据和所述数据的逻辑存储信息;根据所述逻辑存储信息将所述数据以段为单位存储在数据文件中,并在所述数据文件中形成数据段和数据段索引,所述数据段索引用于在所述数据文件中定位数据所在的数据段,以便分布式集群并行处理所述数据文件的数据段。

【技术特征摘要】

【专利技术属性】
技术研发人员:赵伟张书彬徐钊郭玮李均洪坤乾
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1