1,概念
NoSQL,泛指非关系型的数据库。
NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
关系数据库和非关系数据库区别:
数据库类型 | 定义 | 优点 | 缺点 | 举例 |
---|---|---|---|---|
关系型数据库 | 建立在关系模型基础上,由多张能互相连接的 表 组成 | 1. 存储格式:表,格式一致,易于维护; 2. 支持sql,可用于复杂查询; 3.存储载体:磁盘,安全性高; | 1. 表结构灵活性差; 2. 磁盘读写性能差; 3.关系模型的建立,浪费空间。 | MySQL,Microsoft SQL Server,Oracle,PostgreSQL |
NoSQL数据库 | 数据以 对象 的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定 | 1. 存储格式: key-value 、文档、图片等形式,应用场景广; 2. 可对海量数据进行维护和处理; 3. 具有可扩展、高并发、高稳定性、成本低的优势;4. 可以实现数据的分布式处理 | 1. 不能使用sql; 2. 没有事务,无法保证数据的完整性和安全性; | Neo4j,Redis,MongoDB 等 |
2,优缺点
1)优点
- 数据之间无关系,易扩展;
- 大数据量,高性能;
- 数据库的结构简单。
3,场景
4,分类
分类 | 数据模型 | 优点 | 缺点 | 场景 | 举例 |
---|---|---|---|---|---|
键值(Key-Value)存储数据库 | k-v对,通常用hash table来实现 | 查找速度快 | 只对部分值进行查询或更新的时候,效率较低 | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等 | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。 |
列存储数据库 | 以列簇式存储,将同一列数据存在一起。k指向多个列 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 | 分布式的文件系统 | Cassandra, HBase, Riak. |
文档型数据库 | k-v v为结构化数据 | 数据结构要求不严格,表结构可变。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。 | 查询性能低 | Web应用 | CouchDB, MongoDb、SequoiaDB |
图形(Graph)数据库 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 | 社交网络,推荐系统等。专注于构建关系图谱 | Neo4J, InfoGrid, Infinite Graph。 |