数据处理方法和系统的制作方法

文档序号:8381075阅读:169来源:国知局
数据处理方法和系统的制作方法
【技术领域】
[0001]本公开的实施方式总体上涉及数据存储领域,用于对数据进行处理,特别是数据写入和读取方法及其对应的系统。
【背景技术】
[0002]对于企业、组织、机关等机构而言,在日常中会产生大量的数据,而且这些数据随着日子的推移与日俱增,数据量将变得异常庞大。这些大数据为商业发展、统计分析、政策制定等提供了宝贵的原始数据。然而,随着采集或收集的数据量的不断增大,存储这些数据的系统负载容量持续增长,对于数据的存储架构不断提出更高的要求,如何提高海量数据的存储能力与查询效率,成为解决大数据问题的难题之一。
[0003]传统的数据存储是行式存储和列式存储。如图1(a)和图1(b)所示,分别示出了行式存储和列式存储的示意图,其中数据按行或列的方式存储在多个不同的存储节点(即分布式存储)。然而,这两种存储方式均存在不同的问题。
[0004]对于行式存储而言,当前主流的数据查询(或分析)都是基于列式的,当利用基于列的数据查询方法查询行式存储的数据库时,数据查询效率方面存在着严重缺陷。具体而言,例如,在一个数据库中,包括了“10”、“1^!^”、“(:0111^”、“7册1'”等多个字段,当需要利用结构化查询语言(SQL)对数据库中的数据进行查询时,例如,“SELECT name FROM orderWHERE year = 2014”,由于行式存储的数据库只能逐行读取,因此在进行查询时,需要数据库中的每一行数据读取出来,然后分别对于符合查询语句条件的数据进行提取,导致查询速度慢。此外,因为当查针对某几列情况下,无法跳过不必要的列读取;由于混合着不同数据值的列,行存储不易获得一个极高的压缩比,即空间利用率较低。
[0005]对于列式存储而言,尽管能够行式存储的查询效率低的问题,但是列式存储的数据的不同的数据列存储在不同的存储节点,因此要想获取一个完整的数据,元组数据重构成本大,导致网络开销过大,无法满足分布式文件系统对大数据即使查询的需求。例如,同一数据单元的不同列的数据被存储在不同的存储节点上,那么为了获取同一数据单元则需要反复地读取多个节点,以重构相关数据,导致网络开销增大。在读取海量数据时,这种网络开销会严重影响查询速度。

【发明内容】

[0006]本公开的目的之一在于提供一种数据写入方法和系统,以解决或减轻上述现有技术中的一个或多个问题。
[0007]本公开的目的之一还在于提供一种数据读取方法和系统,以解决或减轻上述现有技术中的一个或多个问题。
[0008]根据本公开的第一方面,提供一种数据写入方法,包括:读取预定行的数据,以生成对应的文件块;为每个文件块创建头文件,其中所述头文件包括每个文件块自身在数据库中的索引以及在每个文件块中存储的文件的索引,并且每个文件块和对应的头文件构成数据块;以及将所述数据块写入到存储节点。
[0009]根据本公开的一个实施例,生成在所述对应文件块中的数据能够按行或按列进行读取。
[0010]根据本公开的一个实施例,将所述数据块写入到存储节点包括:将所述数据块按列或行写入到存储节点。
[0011]根据本公开的一个实施例,将所述数据块写入到存储节点包括:在写入到所述存储节点之前,对所述数据块中的数据对应的数据进行压缩。
[0012]根据本公开的一个实施例,将所述数据块写入到存储节点包括:在所述数据块的大小达到预定阈值之后,将所述数据块顺次写入多个存储节点。
[0013]根据本公开的第二方面,提供一种数据写入系统,包括:文件块生成装置,配置成读取预定行的数据,以生成对应的文件块;头文件生成装置,配置成为每个文件块创建头文件,其中所述头文件包括每个文件块自身在数据库中的索引以及在每个文件块中存储的文件的索引,并且每个文件块和对应的头文件构成数据块;以及写入装置,配置成将所述数据块写入到存储节点。
[0014]根据本公开的一个实施例,所述文件块中的数据以能按行或按列进行读取的方式被存储。
[0015]根据本公开的一个实施例,所述写入装置被配置成将所述数据块按列或行写入到存储节点。
[0016]根据本公开的一个实施例,所述写入装置包括压缩单元,所述压缩单元配置成:在将所述数据块写入到所述存储节点之前,对所述数据块中的数据对应的数据进行压缩。
[0017]根据本公开的一个实施例,所述写入装置进一步配置成:在所述数据块的大小达到预定阈值之后,将所述数据块顺次写入多个存储节点。
[0018]根据本公开的实施例的数据写入方法和系统,由于数据行读取并且生成对应的文件块,确保同一数据记录单元的一行的数据位于同一节点,因此数据分析具有快速数据加载和动态负载的高适应能力,此外,元组重构的开销很低。由于文件块(或数据库)按列写入存储节点,因此可对原始数据中的列数据按照预定算法进行压缩,有效降低存储空间。
[0019]根据本公开的第三方面,提供一种数据读取方法,包括:解析结构化查询语言的查询语句,以生成查询任务;读取头文件,并且从所述头文件中获取与所述查询任务相关的文件的位置数据;以及基于所述位置数据,从所述文件块中提取数据;其中所述头文件基于每个文件块而被创建,并且所述头文件包括每个文件块自身在数据库中的索引以及在每个文件块中存储的文件的索引,并且每个文件块和对应的头文件构成数据块,所述数据块被存在存储节点中。
[0020]根据本公开的一个实施例,基于所述位置数据,从所述文件块中提取数据包括:根据所述查询任务,按行或按列读取存储在所述文件块中的数据。
[0021]根据本公开的第四方面,提供一种数据读取系统,包括:任务生成装置,配置成解析结构化查询语言查询语句以生成查询任务;位置获取装置,配置成读取头文件并且从所述头文件中获取与所述查询任务相关的文件的位置数据;以及数据提取装置,配置成基于所述位置数据从所述文件块中提取数据;其中所述头文件基于每个文件块而被创建,并且所述头文件包括每个文件块自身在数据库中的索引以及在每个文件块中存储的文件的索引,并且每个文件块和对应的头文件构成数据块,所述数据块被存在存储节点中。
[0022]根据本公开的一个实施例,所述数据提取装置被配置成根据所述查询任务能够按行或列读取存储在所述文件块中的数据。
[0023]根据本公开的实施例的数据读取方法和系统,在进行数据查询时,由于数据块被存在存储节点中并且每个文件块均设置有头文件,能够实现数据的快速查询和分析。此外,由于相同数据记录单元的所有字段都在同一个节点,这样的存储结构保证了同一数据记录单元的一行的数据位于同一节点,因此元组重构的开销很低,确保了查询效率。此外,在查询时,根据索引文件仅仅读取需要的行与列,减少了网络的开销,提高查询效率。
[0024]本公开的上述特征和其他优点通过下面实施例的说明将变得清楚。
【附图说明】
[0025]现将仅通过示例的方式,参考所附附图对本公开的实施例进行描述,其中:
[0026]图1(a)和图1(b)分别示出了现有技术的行式存储和列式存储的存储结构示意图;
[0027]图2是根据本公开的示例性实施例的数据写入方法的流程图;
[0028]图3是执行根据本公开的示例性实施例的数据写入方法的前后的数据存储结构图;
[0029]
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1