Fighting bird分享 http://blog.sciencenet.cn/u/tonia

博文

面向列的数据库

已有 9715 次阅读 2010-4-20 10:27 |个人分类:database|系统分类:科研笔记| column-oriented





1. 面向行的数据库(row-oriented)

按行存储,把一条记录的所有属性(列)存储在一起。-- value-based storage structure
传统关系数据库的典型应用场合是OLTP(On-Line Transaction Processing )领域,这些领域以事务处理为主,包括数据的增加、删除、修改、查询。

2. 面向列的数据库 (column-oriented)

典型应用场合是OLAP(On-Line Analysis Processing),因此面向列的架构设计非常适合于数据仓库的应用。
面向列的数据库将行分解成多个数据元素,并且储存的数据库元素对应于所有的行。这种分解的方法本质减少了存储量-- 甚至比压缩算法更好。
大部分的分析查询都只需要读取某一个(或者几个)表的几列,而不需要像传统以行为导向的数据库那样需要扫描整个表的数据,这两者IO量的差距是非常大的。



什么情况下用column-oriented存储?

1. 在较少的列上aggregate跨多行:列式存储只读全部数据集的一个子集,而不用扫描全部table;
2. 当需要一次在一个列上insert/update多行new values。
3. Storage efficiency:压缩效率远高于行式存储。由于列数据是uniform type,可以利用similarity of adjacent data进行压缩。(但是这种adjacent compression,相应地造成了random access的困难性,需要额外的机制来保证对压缩数据的访问。)


什么情况下用row-oriented存储?

1. 当需要一次操作单行的多列,尤其当单行size较小时,可以retrieved with a single disk seek;
2. 当insert一整行时。



参考
 http://en.wikipedia.org/wiki/Column-oriented_DBMS
部分信息摘自:
http://www.yeeach.com/2009/10/04/row-oriented-database-%E3%80%81column-oriented-database-%E3%80%81key-value-store-database-%E3%80%81document-oriented-database/

https://wap.sciencenet.cn/blog-425672-314003.html

上一篇:Modeling in NoSQL
下一篇:cloud computing topics
收藏 IP: .*| 热度|

1 唐常杰

发表评论 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 02:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部