编者按:技术也要走T型路线。
【免责声明】本号文章仅代表个人观点,与任何公司无关,仅供参考。
编辑|SQL和数据库技术(ID:SQLplusDB)
行式存储 VS 列式存储
行存储和列存储,是数据库底层组织数据的方式。(和文档型、K-V 型,时序型等概念不在一个层次)
传统的关系型数据库,如DB2、MySQL、SQL SERVER、Postgresql 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。
列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。
Oracle 双模式架构
对于Oracle而言,如果开启了In-Memory选项的话,会提供双模式架构:
- 行式模式:磁盘(数据文件)和高速缓存(buffer cache)中,能够快速访问记录中的所有列,适合DML,满足OLTP类型应用。
- 列式模式:根据设置加载到In-Memory Area中,适合数据分析和聚合等操作,满足OLAP类型的查询需求。
图:Oracle’s unique dual-format architecture
图:Dual-Format Database
图:Columnar and Row-Based Storage
参考: https://www.oracle.com/a/tech/docs/twp-oracle-database-in-memory-19c.pdf
Oracle Database In-Memory with Oracle Database 19c
https://docs.oracle.com/en/database/oracle/oracle-database/19/inmem/
Database In-Memory Guide 2.1 Dual-Format: Column and Row
https://www.jianshu.com/p/3d3950c9fb06
“行式存储”和“列式存储”的区别
https://zhuanlan.zhihu.com/p/378814476
行式存储?列式存储?区别是啥???
https://zhuanlan.zhihu.com/p/129342230
什么是列式存储,一文秒懂
https://developer.aliyun.com/article/793584
列式存储 vs 行式存储:它们之间的本质区别在哪里?