Row-Oriented Database 、Column-Oriented Database 、Key-Value Store Database 、Document-Oriented Database | 出家如初,成佛有余
Row-Oriented Database 、Column-Oriented Database 、Key-Value Store Database 、Document-Oriented Database
Posted 十月 4, 2009 * Comments(3)
在研究Key-Value Database数据库时候,不可避免地遇见了几种类型的数据库划分方式:Row-Oriented Database 、Column-Oriented Database 、Key-Value Database 、Document-Oriented Database,简单总结一下。
1、Row-Oriented Database:
行导向的数据库实际上就是传统的关系数据库(RDBMS),关系数据库的数据是按行来存储的,即把一条记录的所有属性(列)存储在一起。传统关系数据库的典型应用场合是OLTP(On-Line Transaction Processing )领域,这些领域以事务处理为主,包括数据的增加、删除、修改、查询。
key-value store,Row-Oriented Database ,Column-Oriented Database,Document-Oriented Database,行数据库,列数据库,文档数据库
2、Column-Oriented Database:
列导向的数据库的典型应用场合是OLAP(On-Line Analysis Processing),因此以列导向的架构设计非常适合于数据仓库的应用。对于大多数数据仓库的分析场景中,实际关注的数据很多时候都只有那么一列或者少数几列的数据。所以在以列为导向的设计中,大部分的分析查询都只需要读取某一个(或者几个)表的几列,而不需要像传统以行为导向的数据库那样需要扫描整个表的数据,这两者IO量的差距是非常大的。
要理解列导向的数据库可以参考下图(摘自What’s a Column-Oriented DBMS?)。
key-value store,Row-Oriented Database ,Column-Oriented Database,Document-Oriented Database,行数据库,列数据库,文档数据库
参考文章及Wikipedia的划分方法,常见的Column-Oriented Database如下(不一定准确,仅供参考)
http://www.luciddb.org/
http://www.infobright.org/
http://monetdb.cwi.nl/
http://www.equi4.com/metakit/
http://incubator.apache.org/cassandra/ (也可以归成Key-Value Store)
http://hadoop.apache.org/hbase/ (也可以归成Key-Value Store)
http://hypertable.org/ (也可以归成Key-Value Store)
http://kosmosfs.sourceforge.net/ (也可以归成Key-Value Store)
http://www.openneptune.com/ (也可以归成Key-Value Store)
http://www.vermontdatabase.com/rc21home.htm
http://www.jhterbekke.net/XplainDBMS.html
http://db.lcs.mit.edu/projects/cstore/
http://www.ingres.com/vectorwise/
http://cloudbase.sourceforge.net
https://codeforge.lbl.gov/projects/fastbit/
3、Column-Oriented Database VS. Row-Oriented Database
key-value store,Row-Oriented Database ,Column-Oriented Database,Document-Oriented Database,行数据库,列数据库,文档数据库
OLTP, OLAP,key-value store,Row-Oriented Database ,Column-Oriented Database,Document-Oriented Database,行数据库,列数据库,文档数据库
4、Key-Value Store Database
在distributed key-value store 杂思 对一些常见Key-Value Store数据库进行了总结,其实精确来说,不应当都叫Key-Value Store Database,而应当叫做Anti-RDBMS或NOSQL Database。
5、Document-Oriented Database
文档数据库一般用于存储半结构化的数据,在文档数据库中文档是处理信息的基本单位。文档数据库允许创建许多不同类型的非结构化的或任意格式的字段。文档数据库一般采用XML、YAML 、JSON作为存储协议。由于文档数据库中的文档也需要一个唯一的key来标识文档(当然key可以是JSON、XML结构),文档的内容可以看做value,因此一般把文档数据库也归到Key-Value Store Database中,当然所有的XML数据库其实也可以归成文档数据库。
文档数据库很适合CMS、知识库、OA系统,用于存储新闻稿件、电子邮件、书籍、Web页面、多媒体文件等半结构化的数据。
除了Lotus Notes 、Amazon SimpleDB 这样的商用文档数据库外,常见的开源文档数据库:
http://couchdb.apache.org/
http://www.mongodb.org/
http://jackrabbit.apache.org/
http://riak.basho.com/
http://rddb.rubyforge.org/
http://github.com/yrashk/strokedb
http://code.google.com/p/featherdb/
http://code.google.com/p/thrudb/