名称 | 描述 | 优点/缺点 |
键值(Key-Value)存储数据库 |
主要会使用到一个哈希表 如redis 场景: 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。 |
优点:查询速度快 缺点:数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 |
通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列 如:HBase 场景:分布式的文件系统 适用于偏好BigTable:)并且需要对大数据进行随机、实时访问的场合 |
查找速度快,可扩展性强,更容易进行分布式扩展; 功能相对局限 |
文档型数据库 |
可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高 如:CouchDB,MongoDb. 国内也有文档型数据库SequoiaDB,已经开源 场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) |
数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构; 查询性能不高,而且缺乏统一的查询语法。 |
图形(Graph)数据库 |
使用灵活的图形模型,并且能够扩展到多个服务器上。 如:Neo4J,InfoGrid,Infinite Graph. 场景:社交网络,推荐系统等。专注于构建关系图谱 |
利用图结构相关算法。比如最短路径寻址,N度关系查找等; 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |