NoSQL数据库分类
# NoSQL数据库分类
分类 | 举例 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值数据库 | Redis,Voldemort,Oracle BDB | 存储用户信息,比如会话、配置文件、参数、购物车等等。 | Key指向Value的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只能被当做字符串或者二进制数据 |
列族数据库 | Cassandra,Hbase,Bigtable | 分布式的文件系统 | 以列簇式存储,将同一列族数据存在一起 | 吞吐量大,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | CouchDB,MongoDB | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | BSON | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
图形数据库 | Neo4J,lnfoGrid,lnfiniteGraph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |
# 键值数据库
键值数据库( Key-Value Database)会使用一个哈希表,这个表中有一个特定的key和一个指针指向特定的value。key可以用来定位value,即存储和检索具体的Value。
项目 | 描述 |
---|---|
相关产品 | Redis、Memcahed、SimpleDB、Riak等等 |
数据模型 | key-value |
典型应用 | 内容缓存。会话、配置文件、参数、购物车 |
优点 | 扩展性好、灵活性强、大量写操作时性能高 |
缺点 | 无法存储结构化信息、条件查询效率较低 |
使用者 | 百度云数据库(Redis)、Youtube(Memcached) |
# 列族数据库
列族数据库采用的是列族数据模型,由多个行构成,每行数据包含多个列族,不同行可以有不同数量的列族。属于同一列族的数据被存在一起。每行数据是通过键值来定位
项目 | 描述 |
---|---|
相关产品 | HBase、BigTable、hadoopDB、Cassandra等等 |
数据模型 | 列族 |
典型应用 | 分布式数据存储于管理 |
优点 | 可扩展性强、容易分布式扩展、复杂性低 |
缺点 | 功能较少、大部分都不支持强事务一致性 |
使用者 | Facebook(Cassandra)、Yahoo!(HBase) |
# 文档型数据库
数据模型是结构化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。
项目 | 描述 |
---|---|
相关产品 | MongoDB、CouchDB、ThruDB等等 |
数据模型 | 版本化的文档 |
典型应用 | 存储、索引并管理面向文档数据或类似半结构化数据。 |
优点 | 性能好、灵活性高、复杂性低、数据结构灵活 |
缺点 | 缺乏统一的查询语法 |
使用者 | 百度云数据库(MongoDB),SAP(MongoDB) |
# 图形数据库
图型数据库以图论为基础,一个图是一个数学概念,用来表示一个对象集合,包括顶点及连接顶点的边。图数据库使用图作为数据模型来存储数据。
项目 | 描述 |
---|---|
相关产品 | Neo4j、OrientDB、GraphDB等等 |
数据模型 | 图结构 |
典型应用 | 大量复杂、互连接、低结构化的图结构 |
优点 | 灵活性高、支持复杂的图算法、可以用来构建复杂的关系图谱 |
缺点 | 达观数据(Neo4j) |
帮助我改善此页面 (opens new window)
上次更新: 2024年3月20日