一、什么是列式存储
讲列存储之前必须得先讲下行存储,因为行存储是大数据技术流行之前最为常见的一种数据存储方式,传统的关系数据库如Oracle、DB2、Mysql等都是将数据以行记录为单位进行组织,所以数据读写操作需要遍历行记录中所有的列,在存储机制上,行存储将行记录中各列的数据值串在一起进行存储,并且先存完第一行再存第二行,例如:1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;而列存储是一种区别于传统行存储的新型读写模式,列存储以列数据集合为单位进行存储,是把一列中的数据值串在一起进行存储,先存完第一列,再存第二列,例如:1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;下图便非常直观地展示行存储和列存储的区别。
二、列式存储的优点
了解完行存储和列存储的定义和机制,我们再来剖析下行存储和列存储到底有哪些不同?列存储相比行存储的优势是什么?
我们分别从写和读这两方面来讲下行存储和列存储的区别。首先从写方面来看,行存储的写入是一次完成,也就是说行存储各字段写入是在一次IO中完成,而列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多,也就是说要多次IO才能完成,而字段越多,IO次数越多,所以在写入上行存储具有明显的优势。再从读方面来看,行存储通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的,而列存储读取则只需要读取关心的几个列数据,明显减少了读取的数据量,如果行记录字段越多性能优势就越明显。另外由于列存储的每一列数据类型是同质的,不存在二义性问题,比如说某列数据类型为整型(int),那么它的数据集合一定是整型数据。这种情况使数据解析变得十分容易,而且因为存储单元的数据结构一致,可以很容易利用差值编码等压缩方法来进行压缩存储而且压缩比可以非常高,另外针对列数据只有形如:【男和女】两种数据值类型的列更可以获得非常高的压缩比,进而可利用位图索引很快统计出男女的个数。相比之下,行存储则要复杂得多,因为在一行记录中保存了多种类型的数据,数据存储不容易压缩,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗CPU,增加了解析的时间。另外列存储相对行存储更为灵活,逻辑上一行数据可以按列将数据存放到不同的地方,也可以是不同机器上,这样可以在执行查询分析任务时可以按机器节点并行进行查询计算,而行存储不容易进行并行查询,需要一定中间件的支持。
通过读写两方面比较,我们可以提炼列存储的优点:
- 每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量。
- 既然是一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。
- 易于并行查询,当表行数过多时,可将列数据分段存储,每列可以起不同的计算单元单独处理。
三、为什么列存储很适合大数据即时计算分析?
上段已经提炼了列存储的优点,那么结合行存储和列存储的优缺点分析,我们可以展开想想行存储和列存储适合的场景:
1、列存储,不适合数据频繁写入、更新的场景,主要适合频繁查询的场景,大数据环境下优势更明显,比如分布式实时查询。
2、行存储,适合数据存储写入、更新较多的场景,比如OLTP。当数据量很大时,查询性能远不及列存储。
由于大数据OLAP本身是聚焦于对于大数据进行多维分析,而数据写入的频次要求也不高,所以列存储非常适合来做大数据OLAP,尤其是列存储具有极高的压缩率,不但节省了存储空间也节省计算内存和CPU非常适合做聚合计算。之前我们使用HIGO来做大数据OLAP也是充分利用了lucene倒排索引文件(.fdt和.fdx文件)是天生按列存储的特性,如果重复值特别多,倒排索引可以减少很多IO,因为lucene本身在存储上可以做很多的压缩处理,另外lucene本身也对长文本做了转码处理,比如一段很长的文本可以将真实值转成一段很小的int型数字代号这就在做计算统计时(比如group by)节省了很多的IO,另外因为lucene倒排索引文件可以分布式地存放在不同机器上,所以可充分利用多台机器并行计算的特点最后归并获取数据结果,可以说HIGO也是充分利用了列存储的特性达到了秒级在亿级数据量获取统计分析数据的能力。而Garuda也是类似,Garuda利用列存储文件可以很方便压缩的特性,数据文件在内存和磁盘上压缩分别达到了38%和6%,同样在做统计时也是扫描了只需统计的列,在访问上数据文件上也是做到顺序访问,所以极大程度在统计计算时节省了很多的IO,同时也利用列式存储易于并行查询的特性,将统计计算放在了多个计算单元节点上同时进行,在即席分析上发挥了巨大的作用。
相关推荐
通过32页的详细讲解,你将深入理解流计算的核心原理,掌握实时数据处理的关键技术和最佳实践,为应对大数据时代的挑战做好准备。无论你是数据分析师、软件工程师还是对大数据感兴趣的学者,这都将是一份非常有价值的...
### 冰山(Iceberg)数据湖技术概览 #### 1.1 冰山(Iceberg)简介 - **背景介绍**: ...对于希望利用大数据技术提升业务效率的企业而言,深入了解并掌握 Iceberg 的工作原理和技术特性是十分必要的。
在大数据领域,实时计算扮演着越来越重要的角色,它能够快速地对源源不断的数据进行处理,提供即时的洞察和决策依据。Storm就是这样的实时计算框架,它允许开发者构建分布式、容错的实时处理系统,且具有低延迟和高...
以上内容概述了大数据领域的核心概念和技术细节,包括大数据的基本定义、特征、采集、存储、计算、处理流程、商业和社会价值等方面,并深入探讨了大数据与人工智能的关系、集群与虚拟化技术、Hadoop框架及其核心组件...
综合来看,大数据技术架构的思想和原理建立在分布式技术之上,通过集群计算机的协作处理大规模数据,并在存储、计算、分析等各个环节使用不同的技术架构来满足不同的业务需求。随着数据量的持续增长和技术的进步,...
综上所述,Garuda是阿里云开发的一个强大实时数据计算平台,它融合了流式计算、即时计算和持续计算的理念,旨在解决大数据环境下的实时处理挑战,提供高性能、高可用和低成本的解决方案。随着技术的不断发展,Garuda...
同时,大数据与云计算的结合,使得存储和计算能力得以大幅提升,为数据处理提供了更广阔的空间。 其次,数据价值原理强调数据本身的价值超越了功能。在互联网时代,产品和服务的价值不再仅限于其提供的功能,而是...
Apache Flink和Kafka等工具可以实现数据的实时处理和传输,配合Python的实时计算库(如Flink PyAPI),实现推荐结果的即时更新。 综上所述,基于Python的大数据推荐系统集成了多种技术和工具,通过高效的数据处理和...
这场盛会涵盖了大数据技术的多个关键方面,包括数据采集、存储、处理、分析以及应用等,旨在推动大数据技术的发展,帮助企业与机构更好地利用海量数据资源。 一、大数据基础 大数据不仅是指数据的量大,更包含数据...
在大数据架构技术中,吉首大学的资料涵盖了多个关键领域,包括Hadoop生态系统中的核心组件以及实时大数据处理的原理和应用。以下是对这些知识点的详细阐述: 1. **HDFS(Hadoop Distributed File System)**:HDFS...
此外,大数据的处理范式也在不断发展,从最初的MapReduce批量处理到实时流处理、多迭代处理、图计算和即时查询等,各种技术不断融合,以满足不同场景的需求。 在硬件层面,大数据处理要求对数据存储和计算能力进行...
1. **数据量大(Volume)**:大数据的第一个特点是数据量巨大,不仅在数据的采集阶段,而且在存储和计算阶段都需要处理极大量的数据。 2. **类型繁多(Variety)**:数据来源广泛,形式多样,包括但不限于结构化数据...
- **列式存储**:相比于传统的行式存储,列式存储更适合大数据分析,因为它能够更高效地处理查询操作。 - **云存储**:利用云计算平台提供的弹性存储服务,如AWS S3、阿里云OSS等。 3. **挑战**: - **数据一致...
实时流计算是一种处理持续不断的数据流的技术,它能够对源源不断的数据进行即时分析,并快速给出结果,与传统的批处理计算相比,实时流计算更注重时效性和低延迟。天罡框架正是针对这种需求设计的,它提供了高效、...
根据给定文件的信息,我们可以总结出一系列与大数据技术相关的知识点,包括大数据的特征、大数据流式处理的应用场景、Hadoop的组件与配置、HDFS的工作原理及其守护进程的角色等。 ### 1. 大数据的特征 - **数据量...
- 对于初学者而言,建议首先熟悉大数据的基础概念和技术栈,例如了解Hadoop和Spark的工作原理。 - 掌握基本的大数据处理技术后,可以进一步学习数据仓库的构建过程,包括离线和实时数据仓库的设计和实现。 - 最后,...
- **HBase**: 提供了类似Google BigTable的功能,是一种基于HDFS的列式数据库。 - **Hive**: 数据仓库工具,提供了SQL-like查询语言,便于进行数据分析。 #### 三、HDFS详解 - **概念**: HDFS是为了满足大规模...
在"林子雨大数据技术原理与应用第八章课后题答案.pdf"中,主要讨论了流数据的特点、流计算的需求以及流计算框架等内容。 流数据是指以大量、快速、时变的形式持续到达的数据流,例如,环境监测中的传感器数据。这些...
【大数据技术原理与应用】 大数据技术是信息技术发展中的重要里程碑,它主要涵盖了数据的收集、存储、处理和分析。在过去的几十年里,信息技术经历了三次信息化浪潮。第一次浪潮以个人计算机的普及为代表,由Intel...