NoSql 数据库
NoSql 简介
NoSql 是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称。它所采用的数据模型并非关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。
当应用场合需要简单的数据模型、灵活性的 IT 系统、较高的数据库性能和较低的数据库一致性时,NoSql 数据库是一个很好的选择。NoSql 数据库通常有以下3个特点:
- 灵活的可扩展性。传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往只能选择开销很大的“纵向扩展”。但是,对于 NoSql 数据库,“横向扩展”仅需要非常廉价的标准化刀片服务器,具有很高的性价比。NoSql 数据库在设计之初就是为了满足“横向扩展”的需求,因此天生具备良好的水平扩展能力。
- 灵活的数据模型。NoSql 数据库天生就旨在摆脱关系数据库的各种束缚条件,摒弃了流行多年的关系数据模型,转而采用键/值、列族等非关系模型,允许在一个数据元素中存储不同类型的数据。
- 与云计算紧密融合。云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加入或退出,NoSql 数据库可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融入到云计算环境中,构建基于 NoSql 的云数据库服务。
NoSql 兴起的原因
关系数据库无法满足 Web 2.0 的需求
- 无法满足海量数据的管理需求。
- 无法满足数据高并发的需求。Web 2.0 时代,各种用户都在不断地发生更新,购物记录、搜索记录、微博粉丝等信息都需要实时更新,动态页面静态化技术基本没有用武之地,所有信息都需要动态实时生成,这就会导致高并发的数据库访问,每秒产生大量的读写请求,对于很多关系数据库而言,难以承受其重。
- 无法满足高可扩展性和高可用性的需求。
关系数据库的关键特性在 Web 2.0 时代优势不再明显
- Web 2.0 网站系统通常不要求严格的数据库事务。
- Web 2.0 并不要求严格的读写实时性。
- Web 2.0 通常不包含大量复杂的 SQL 查询。
Nosql 与关系数据库的比较
比较标准 | 关系数据库 | NoSql | 备注 |
---|---|---|---|
数据库原理 | 完全支持 | 部分支持 | 关系数据库有关系代数理论作为基础,但是 NoSql 没有统一的理论基础 |
数据规模 | 大 | 超大 | 关系数据库很难实现横向扩展,NoSql 可以很容易通过添加更多设备支持更大规模的数据 |
数据库模型 | 固定 | 灵活 | 关系数据库需要定义数据库模式,严格遵守数据定义和相关约束条件;NoSql 不存在数据库模式,可以灵活定义并存储各种不同类型的数据 |
查询效率 | 快 | 实现高效的简单查询,但是复杂查询的效率不尽人意 | 关系数据库借助索引机制可 |