SQL到NoSQL概览性总结之一 数据库应用场景选型

数据库类型与实例 适合场景 不适合场景 场景举例
关系数据库

基于集合理论,具有行和列的二维表,严格使用类型

开源MySQL/MariaDB, PostgreSQL

商业:Oracle,DB2,SQL Server, Sybase

l  数据具有类型

l  灵活查询。

l  即提前为组织的复杂性付出代价,以实现随后的查询灵活性

l  数据高度或者多层次的,无法提前指定模式  
键值数据库

Redis

Riak—类dynamo

Memcached(membase..)

BerkeleyDB

Voldemort

l  数据相关性不高

l  性能极高

l  缺乏索引和扫描功能,除了基本的CRUD外帮助不大

l  对于自由定义的查询无能为力

l  不适合复杂查询和聚合等

l  适合场景

Session信息

用户概要等信息

购物车

l  不适合场景

数据之间存在强关联

事务

根据value查询

Operations by Sets

列型数据库

HBase

Cassandra

Hypertable

l  横向扩展

l  列的添加容易

l  版本控制

l  基于你打算如何查询数据设计数据库模式

l  不仅对数据如何组成有一些想法,对如何使用数据也要预先知晓

l  适合场景

事件日志

CMS,博客

计数器

数据过时使用

l  不适合场景

 

文档型

MongoDB

CouchDB

l  每个对象有任意数量字段,对象可以作为值以任意深度嵌套到其他字段中

l  高度可变领域

l  很好的映射到OOP

l  缺乏复杂的查询,如联接 l  适合场景

事件日志

CMS,博客

Web分析或者实时分析

电子商务

l  不适合场景

复杂事务

查询持续变化的聚合结构

图数据库

Neo4j(支持ACID事务)

l  形式自由的网络应用,如社交网络

l  不需要将相似的对象划分共同组,只要可以在白板上建模就可以表示

l  场景如推荐引擎、ACL和地理数据

l  节点之间的高度关联,不适合网络分区

l  扩展性差,通常大容量数据存储在其他地方,而在图中只保存关系

l  适合场景

互联数据

路由、分发和基于位置的服务

推荐引擎

l  不适合场景

 

 

 

参考文献

《七周七数据库》

《NoSQL Distilled》

标签