NoSQL
Not Only SQL
1、特点
- 灵活的可扩展性
- 灵活的数据模型
- 可以和云计算紧密结合
2、关系型数据库面临的问题 web 2.0
难以满足
海量的数据管理
难以满足
数据的高并发
的需求难以满足
高扩展性
和高可用性
的需求。
数据分析—高吞吐 Hadoop
在线业务—低延时 MongoDB Redis
关心型数据库的关键特性:包括事务机制 和 高效的查询机制。但是Web2.0时代不太需要:
1. 不要求严格的数据事物
2. 不要求严格的读写实时性
3. 通常不包含大量的复杂的SQL查询。(去结构化,存储空间 来换取更好的查询性能。)
3、RDBMS 和 NoSQL之间的比较
关系型数据库 | NoSQL数据库 | |
---|---|---|
优点 | 1. 有关系代数作为理论基础 2.支持事务ACID 3. 借助索引机制可以实现高效的数据查询 | 1. 可以支持超大规模的数据存储 2. 具有强大的横向扩展能力。 |
缺点 | 1. 可扩展性较差 2. 无法支持海量的数据存储 | 1. 缺乏数学理论基础 2. 复杂的查询性能不高 3. 不能实现事务的强一致性 数据的完整性 |
关系型数据库 和 NoSQL之间是 无法相互取代的
使用场景:
- NoSQL 适用于 数据分析
- 关系型数据(MySQL之类的):适用于关键的业务系统。诸如电信 和 银行
4、NoSQL的类型
主要是有四大类型 键值数据库
文档数据库
图形数据库
列族数据库
5、类型对比
数据库 | 类型 | 适用场景 | 不适用 | 优缺点 |
---|---|---|---|---|
Redis (K-Y) | K: 一个字符串。Y: 可以是 整型、字符、列表、数组、集合等。 | 频繁的读写,简单的数据模型应用。内容缓存,会话,配置文件,参数,购物车。用户数据信息的移动应用 | 数据之间的关系,事务支持。不是通过键查询 | 扩展性好,大量读写操作时性能高,无法储存结构化信息,条件查询效率较低。 |
HBase,BigTable | 列族 | 分布式数据存储与管理,拥有动态字段的应用程序。 | 需要ACID事务支持的情形 | 查找速度快,可扩展性强,容易进行分布式扩展。功能较少,不太能支持事务一致性。 |
MongoDB | 键值,值时版本化的文档 | 储存,索引并管理面向文档的数据或者类似的半结构化的数据。 | 在不同文档上添加事务。因为文档数据库并不支持文档间的事务。 | 高并发的性能好。复杂度低,数据结构灵活。但是缺乏统一的查询语法。 |
Neo4J GraphDB | 图结构 | 社交网络,模式识别,依赖分析,推荐系统以及路径寻找 | 支持复杂的图形计算,构建复杂的关系图谱。复杂性高,只能支持一定的数据规模 |
MySql
:出现的年代较早,时新兴的互联网使用的最多的数据库
MongoDB
: 可以提供更加灵活的数据模型,异步交互,地理位置索引等。
HBase
: 是依赖Hadoop的生态环境的,可以有很好的扩展性
`: 可以提供更加灵活的数据模型,异步交互,地理位置索引等。
HBase
: 是依赖Hadoop的生态环境的,可以有很好的扩展性
Redis
:是键值存储的代表,功能简单,可以提供随机数据储存。伸缩性很好。