导语:随着大数据的发展,现在出现的列式存储和列式数据库。它与传统的行式数据库有很大区别的。

正文:

行式数据库是按照行存储的,行式数据库擅长随机读操作不适合用于大数据。像SQL server,Oracle,mysql等传统的是属于行式数据库范畴。

列式数据库从一开始就是面向大数据环境下数据仓库的数据分析而产生。

数据库以行、列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:

EmpId

Lastname

Firstname

Salary

1

Smith

Joe

40000

2

Jones

Mary

50000

3

Johnson

Cathy

44000

这个简单的表包括员工代码(EmpId), 姓名字段(Lastname and Firstname)及工资(Salary).

这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同,电脑的操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中,由操作系统写到内存或硬盘中。

行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。

1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;

列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。

1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000; 这是一个简化的说法。

列式数据库的代表包括:Sybase IQ,infobright、infiniDB、GBase 8a,ParAccel, Sand/DNA Analytics和 Vertica。

MPP的列存储数据仓库包括:Yonghong Z-DataMart。

---------------------------------------------------

---------------------------------------------------

通常行式数据库的给出的优化方案是加“索引”,给表分区等等之类的.

列式数据库的优缺点:

优点:

  • 极高的装载速度 (最高可以等于所有硬盘IO 的总和,基本是极限了)

  • 适合大量的数据而不是小数据

  • 实时加载数据仅限于增加(删除和更新需要解压缩Block 然后计算然后重新压缩储存)

  • 高效的压缩率,不仅节省储存空间也节省计算内存和CPU。

  • 非常适合做聚合操作。

缺点:

  • 不适合扫描小量数据

  • 不适合随机的更新

  • 批量更新情况各异,有的优化的比较好的列式数据库(比如Vertica)表现比较好,有些没有针对更新的数据库表现比较差。

  • 不适合做含有删除和更新的实时操作。

补充列式数据库的压缩:

刚才其实跳过了资料里提到的另一种技术:通过字典表压缩数据。为了方面后面的讲解,这部分也顺带提一下了。

下面中才是那张表本来的样子。经过字典表进行数据压缩后,表中的字符串才都变成数字了。正因为每个字符串在字典表里只出现一次了,所以达到了压缩的目的(有点像规范化和非规范化Normalize和Denomalize)

列式数据库由于其特殊的执行引擎,在数据中间过程运算的时候一般不需要解压数据而是以指针代替运算,直到最后需要输出完整的数据时。

行式数据库主要适合于在线交易性的OLTP应用,而列式数据库主要适合于海量静态数据的分析,一般应用于OLAP。但只是依靠OLTP还是OLAP来区分是采用行式数据库还是列式数据库,在很多时候还不是很明确,特别很多时候有些应用很难说是OLTP还是OLAP,例如对海量数据的查询。

行式数据库与列式数据库的对比相关推荐

  1. 数据库—行式存储和列式存储

    1. 数据库的存储模式 1.1 关系型数据库 关系型数据库RDS(Relational Database Service),大部分为行式存储数据. 行式存储: 据以行相关的存储体系架构进行空间分配,主 ...

  2. 行式存储和列式存储的数据库

    定义 关系数据库采用的数据存储有两种方式:行式存储和列式存储(也被称为columnar或C-store) 行式存储 是按记录组织数据的数据库,将与记录相关联的所有数据彼此相邻地保存在内存中.面向行的数 ...

  3. 行式数据库 VS 列式数据库

    行式数据库 VS 列式数据库 一   基本概念 1  行式数据库    http://zhusihu.blog.163.com/blog/static/178880235201102381753490 ...

  4. 行式数据库与列式数据库

    开发用了很久的Vertica,知道它是"列式数据库"但一直没有去研究过列式数据库的一些特性,现在来总结一下. 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处 ...

  5. 数据库之 列式与行式数据库区别

    定义 列式存储(Column-based)是相对于传统关系型数据库的行式存储(Row-based)来说的.简单来说两者的区别就是如何组织表. 将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的 ...

  6. 行式数据库和列式数据库

    导语:随着大数据的发展,现在出现的列式存储和列式数据库.它与传统的行式数据库有很大区别的. 正文: 行式数据库是按照行存储的,行式数据库擅长随机读操作不适合用于大数据.像SQL server,Orac ...

  7. 行式数据和列式数据对比 存储压缩性能

    一.行式数据库和列式数据库的对比 1.存储比较 行式数据库存储在hdfs上式按行进行存储的,一个block存储一或多行数据.而列式数据库在hdfs上则是按照列进行存储,一个block可能有一列或多列数 ...

  8. Mysql框架<二> 行式存储与列式存储

    文章目录 数据处理场景分类 OLTP 联机事务处理 OLAP 联机分析处理 行式存储和列式存储 概念 特点 对比 数据处理场景分类 OLTP 联机事务处理 OLTP : on-line transac ...

  9. 行式存储和列式存储优缺点和paruqet文件结构

    参考文章:行式存储和列式存储优缺点和paruqet文件结构 优缺点分析 列存储优点: 单列数据保存在一起,不同列分开存储,导致存下同样一个表需要更多的Block文件,看起来是更复杂了,但是基于列和列分 ...

最新文章

  1. eclipse插件之easyshell
  2. pix2pixHD笔记
  3. mysql 业务账户_mysql的事务
  4. 如何判断文本文件的编码格式?
  5. C++教程之lambda表达式一
  6. 三、规则组织的衍生组织——经山形组织数学模型的建立
  7. html笔记——网页中视频播放,文字滚动
  8. 识别产品外观的合格软件_瑞视特产品贴码字符识别检测系统介绍
  9. 【IJCAI 2020】篇章要素识别和篇章结构评分(下)
  10. CGAL库的安装及示例代码的编译
  11. python计算方位角_python如何计算方位角 python计算方位角代码实例
  12. 在oracle中bpa是什么意思,BPA是什么意思_BPA的翻译_音标_读音_用法_例句_爱词霸在线词典...
  13. Python遥感开发之GDAL读写遥感影像
  14. MFC双人五子棋(VS2019)
  15. 帝国cms 未审核 showinfo.php,帝国CMS评论列表标签showplinfo调用会员头像userpic的方法...
  16. 都2022年了,还在争论编程语言?
  17. verilog实现时钟的时和分,其中时为24进制,分为60进制
  18. 茶楼管理系统如何选择
  19. faric区块链浏览器搭建
  20. 在线伪原创代写工具文章生成器

热门文章

  1. html iframe随页面滚动,如何隐藏iframe的滚动条,但依然可以页面滚动
  2. share point 是个什么东西?
  3. 【矩阵论笔记】子空间直和
  4. java corba_Java基础系列之六:CORBA入门示例
  5. Hadoop学习之路(7)MapReduce自定义排序
  6. java实现防盗链_防盗链代码实现
  7. 修改系统density, densityDpi 适配
  8. 计算机主机里有什么,电脑主机里面都有什么?都是干什么用的呢?
  9. windows 命令行关闭防火墙
  10. 模糊C均值聚类(Fuzzy C-means)算法(FCM)