相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次操作仅针对若干列的情景,列式存储引擎的性价比更高。在互联网大数据应用场景下,大部分情况下,数据量很大且数据字段数目很多,但每次查询数据只针对其中的少数几行,这时候列式存储是极佳的选择,目前在开源实现中,最有名的列式存储引擎是Parquet和ORC,在最近一年内,它们都晋升为Apache顶级项目,可见它们的重要性。本文尝试比较这两种存储引擎。

Apache Parquet

源自于google Dremel系统(可下载论文参阅),Parquet相当于Google Dremel中的数据存储引擎,而Apache顶级开源项目Drill正是Dremel的开源实现。

Apache Parquet 最初的设计动机是存储嵌套式数据,比如Protocolbuffer,thrift,json等,将这类数据存储成列式格式,以方便对其高效压缩和编码,且使用更少的IO操作取出需要的数据,这也是Parquet相比于ORC的优势,它能够透明地将Protobuf和thrift类型的数据进行列式存储,在Protobuf和thrift被广泛使用的今天,与parquet进行集成,是一件非容易和自然的事情。 除了上述优势外,相比于ORC, Parquet没有太多其他可圈可点的地方,比如它不支持update操作(数据写成后不可修改),不支持ACID等。

Apache ORC

ORC(OptimizedRC File)存储源自于RC(RecordColumnar File)这种存储格式,RC是一种列式存储引擎,对schema演化(修改schema需要重新生成数据)支持较差,而ORC是对RC改进,但它仍对schema演化支持较差,主要是在压缩编码,查询性能方面做了优化。RC/ORC最初是在Hive中得到使用,最后发展势头不错,独立成一个单独的项目。Hive 1.x版本对事务和update操作的支持,便是基于ORC实现的(其他存储格式暂不支持)。ORC发展到今天,已经具备一些非常高级的feature,比如支持update操作,支持ACID,支持struct,array复杂类型。你可以使用复杂类型构建一个类似于parquet的嵌套式数据架构,但当层数非常多时,写起来非常麻烦和复杂,而parquet提供的schema表达方式更容易表示出多级嵌套的数据类型。

Parquet与ORC对比

总结

目前在互联网领域,列式存储已经逐步被用于各种产品线中,比如twitter已经将部分数据格式转换为parquet,所占空间和查询时间减少了约1/3(来源:https://adtmag.com/articles/20 ... .aspx )。在Twitter,日志格式使用thrift描述,使用Parquet存储,下图是一个典型的数据格式描述,共有87个字段,7层嵌套关系。

Apache开源列式存储引擎Parquet和ORC比较相关推荐

  1. 两种列式存储格式:Parquet和ORC

    背景 随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌 ...

  2. OLAP列式存储之引擎特性

    本文简要从存储结构.索引结构和数据更新方式等几个方面介绍当前比较热门的OLAT/HATP列式存储引擎,包括ClickHouse和SqlServer. ClickHouse 1.1 存储结构和索引结构 ...

  3. 数据库中的 【行式存储】和【列式存储】

    传统的关系型数据库,如 Oracle.DB2.MySQL.SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行 ...

  4. “行式存储”和“列式存储”的区别

    https://www.jianshu.com/p/3d3950c9fb06 我们知道 当今的数据处理大致可分为两大类 联机事务处理 OLTP (on-line transaction process ...

  5. tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!

    MySQL是目前使用最广的开源数据库,不管从装机量.使用人群.专职人员.社区发展,还是基于MySQL的其他分支,都是当之无愧的No.1. 本文将从以下4个方面,带你搞透MySQL体系结构与存储引擎. ...

  6. Flink大数据实时计算系列-列式存储parquet文件格式介绍、Flink进行rowformat格式文件保存

    Flink大数据实时计算系列-列式存储parquet文件格式介绍 Flink进行rowformat格式文件保存 列式存储parquet文件格式介绍

  7. 为什么 OLAP 需要列式存储

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  8. 用户关系表 存储_列式存储系列(一)CStore

    作者:辛庸,阿里巴巴计算平台事业部 EMR 技术专家.Apache Hadoop,Apache Spark commiter.对 Hadoop.Spark.Hive.Druid 等大数据组件有深入研究 ...

  9. 大数据的列式存储格式:Parquet

    之前简单介绍了一下列式存储: 和谐号为啥快?因为铁轨是列式存储!  今天介绍一种大数据时代有名的列式存储文件格式:Parquet,被广泛用于 Spark.Hadoop 数据存储.Parquet 的中文 ...

最新文章

  1. linux查看文件安全权限,Linux系统下如何查看及修改文件读写权限
  2. NOT IN、JOIN、IS NULL、NOT EXISTS效率对比
  3. tcl/tk demo
  4. python自动生成表格_Python自动整理 Excel 表格
  5. es聚合查询与多维度数据统计
  6. 获得Local IP Address (C++实现)
  7. mysql完全备份 二进制日志_MySQL完全备份脚本:数据+二进制日志+备份日志
  8. c语言qq自动回复,QQ自动回复
  9. [软件测试] - No.1 Fault Error Failure 区别
  10. 英语听力采用计算机化考试,北京英语听说考试2021年 北京英语听说机考满分
  11. elasticsearch7.8.0入门操作
  12. Linux环境下java安装、配置
  13. Dusk Network DayBreak测试网初体验
  14. 如何推广淘宝店铺方法:导购网站免费推广
  15. 14 面对对象(多态;抽象类;接口)
  16. 数据库的设计的六个阶段
  17. 音视频开发系列(15):视频与音频同步
  18. 光纤收发器的原理及应用_光纤收发器工作原理 - 光纤收发器工作原理及技术详解(分类,使用方法及接线图)...
  19. 超级计算机欧冠军尤文,超级计算机预测欧冠结局:尤文决赛2-1巴萨 C罗赢梅西捧第6冠...
  20. 《无懈可击的Web设计》--学习笔记

热门文章

  1. 深度强化学习服务器搭建(完整版)
  2. 计算机密码设置的四项基本原则,四项基本原则
  3. 也许是一点游戏制作内容(自用)Ⅰ
  4. App系列之Android Apk分析---付宝android客户端的动态加载
  5. java8: sorted()之正序倒序
  6. Java-----IO流【字节缓冲输出、输入流】
  7. 删除 Zune 同步设置和历史记录教程
  8. 学生管理系统实现增删改查
  9. 10005---2017年国内开源项目Top50
  10. 计算机打印机设置,网口打印机设置教程(新)