键值数据库
相关产品:Redis Memcached SimpleDB
数据模型:键是一个字符串对象,值可以是任意类型的数据,比如整型、字符型、数组、列表、集合等
典型应用:涉及频繁读写,拥有简单数据模型的应用,内容缓存,如会话、配置文件、参数、购物车等,存储配置和用户数据星系等移动应用。
优点:扩展性好,灵活性高,大量写操作性能高
缺点:无法存储结构化信息,条件查询效率较低
不适用情形:键值数据库根本没有通过值查询的途径;在键值数据库中,不能通过两个或两个以上的键来关联数据在一些键值数据库中,产生故障时,不可以回滚。
使用者:百度云数据库(Redis)
Redis(强化版的Memcached)
- 支持持久化
- 数据恢复
- 更多数据类型
在实际的应用中,很多键值数据库都是用来作为缓存层
列族数据库
相关产品:BigTable HBase Cassandra
数据类型:列族
典型应用:发呢不是数据存储与管理,数据在地理上分布于多个数据中心的应用程序,可以容忍副本中存在短期不一致情况的应用程序,拥有动态字段的应用程序
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
缺点:功能较少,大都不支持强事务一致性
不适用情形:需要ACID事务支持的情形Cassandra等产品就不适用
使用者:Facebook(HBase)、Yahoo(HBase)
文档数据库
更好的并发性
文档数据库可以完整包含在一个文档里,具有较好的并发性。在对数据进行更新时,只需要锁定一个文档就可以把相关数据修改掉
相关产品:MongoDB CouchDB
数据模型:就是一个键值,本质上是一个键值数据库,只不过值(value)是版本化文档
典型应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好(高并发),灵活性高,提供嵌入式文档功能,将经常查询的数据存储在同一个文档中。
缺点:缺乏统一的查询语法
不适用情形:文档数据库不支持文档间的事务,如果对这方面有需求则不应该选用这个解决方案
使用者:百度云数据库(MongoDB)
图形数据库
相关产品:Neo4j
数据模型:图结构
典型应用:专门用于处理具有高度相互关联关系的数据,比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻找问题
优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱
缺点:数据模型应用范围非常有限