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

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

行式数据库是按照行存储的,行式数据库擅长随机读操作不适合用于大数据。像SQL server,Oracle,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;

这是一个简化的说法。

列式存储

列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。

列式存储引擎的适用场景包括:

1、查询过程中,可针对各列的运算并发执行(SMP),在内存中聚合完整记录集,可降低查询响应时间;

2、可在数据列中高效查找数据,无需维护索引(任何列都能作为索引),查询过程中能够尽量减少无关IO,避免全表扫描;

3、因为各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率;如果某一行的某一列没有数据,那在列存储时,就可以不存储该列的值,这将比行式存储更节省空间。

当然,跟行数据库一样, 列式存储也有不太适用的场景。主要包括:

1.数据需要频繁更新的交易场景
2.表中列属性较少的小量数据库场景
3.不适合做含有删除和更新的实时操作

随着列式数据库的发展,传统的行式数据库加入了列式存储的支持,形成具有两种存储方式的数据库系统。例如,随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持,当然列式数据库也有对行式存储的支持比如HP Vertica。

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

行式存储

行式存储(Row-based)的适用场景包括:

1、适合随机的增删改查操作;
2、需要在行中选取所有属性的查询操作;
3、需要频繁插入或更新的操作,其操作与索引和行的大小更为相关。

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

适用场景

行式数据库主要适合于在线交易性的OLTP应用,而列式数据库主要适合于海量静态数据的分析,一般应用于OLAP。

但只是依靠OLTP还是OLAP来区分是采用行式数据库还是列式数据库,在很多时候还不是很明确,特别很多时候有些应用很难说是OLTP还是OLAP,例如对海量数据的查询。

数据库中的 【行式存储】和【列式存储】相关推荐

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

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

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

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

  3. 数据库行式存储和列式存储的区别

    假设我们有一张student数据表: name gender age score 张三 男 16 67 李四 女 18 98 王五 男 17 85 假设我们有一个磁盘,那么在经典的行式存储中,数据是怎 ...

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

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

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

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

  6. 行式存储和列式存储的区别

    文章目录 存储方式 简单对比 列式存储和行式存储它们真正的区别 概述 四大优化策略详解 块遍历 压缩 延迟物化 隐式链接 总结 存储方式 行式存储就是每一行的所有数据存在一个block中,各个bloc ...

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

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

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

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

  9. 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据

    五大存储模型关系模型.键值存储.文档存储.列式存储.图形数据 时间:2014-06-12 16:15来源:知行网www.zhixing123.cn 编辑:麦田守望者 昨天跟一同事讨论Sybase是不是 ...

  10. Python数据分析 找出数组中每行(或每列)中指定的百分位数 numpy.percentile()

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 找出数组中每行(或每列) 中指定的百分位数 numpy.percent ...

最新文章

  1. LA 3507 Keep the Customer Satisfied (Greedy)
  2. 基于BitBox的Wormhole SDK 已迭代至1.0.0版本
  3. Redis Info详解
  4. Tomcat 6 数据源配置
  5. 利用python爬虫(part9)--Xpath与谓词の爱
  6. 【高清截图】UbuntuKylin 14.04 桌面版安装步骤
  7. 冒泡排序、选择排序、插入排序
  8. 【mac】Bartender 2不能隐藏百度云同步盘图标的解决方法
  9. 工作中遇到的前后台联调的一些规则
  10. flutter之出现 List is not a subtype of type 问题
  11. 前端开发工程师,CSS盒子模型居中方法
  12. Unison 的相关参数介绍
  13. 安卓机更新系统会卡吗_都说安卓手机用一两年就卡到不行,但知道这3招,同样可以用很久...
  14. PyTorch RuntimeError: size mismatch, m1:
  15. java 正序排序_Java8对list排序(正序倒序)
  16. 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m0)个叶子结点,那么该二叉树上的结点总数为( )。
  17. 【苹果推??iMessage群发设置内容参数】什么是苹果推信?什么是苹果推?什么是日历推
  18. (学习力+思考力) x 行动力,技术人成长的飞轮效应总结
  19. 华盈IP PBX UC1910统一网关
  20. html显示json数据中某一条的数据,php - 给定一个具有json格式数据的API,我该如何在HTML表中显示数据? - 堆栈内存溢出...

热门文章

  1. python正则表达式入门
  2. 无线测温装置在变压器中的设计与应用
  3. Windows API一日一练(59)CreateFileMapping和MapViewOfFile函数
  4. 回归(Regression)是什么意思
  5. 医学影像配准 NCC Loss
  6. 深入浅出搞懂网络的五层协议
  7. WebSphere Message Broker(2)--WMB V8下载、安装
  8. 英国政府资助!Wave Photonics领导光量子集成电路封装项目
  9. 24.STM32的IO口扩展PCF8574
  10. tcam开发C语言,TCAM