Nosql简介
Nosql(Nosql = Not Only sql ),即"不仅仅是sql"。 Nosql指的是非关系型的数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。 Nosql用于超大规模数据的存储,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
Nosql数据库分类
Nosql数据库分四大类:键值(Key-Value)数据库、列存储数据库、文档型数据库、图形(Graph)数据库。
Nosql只是非关系型数据库的一种统称,在网站架构中,我们可应用的Nosql数据库非常多,其中 典型的Key-Value键值数据库有Memcached和Redis;
典型的列存储数据库有HBase;
典型的文档型数据库有MongoDB、CouchDB、BaseX等;
典型的图形数据库有FlockDB
目前国内用到最多的Nosql数据库包括MongoDB、Redis、Memcached等
Nosql的优缺点
优点
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点
sql 与 Nosql 数据库对比
xxx | 关系型数据库 | Nosql数据库 |
---|---|---|
数据模型 | 关系模型对数据进行了规范化,严格定义了表、列、索引以及各个表之间的关系及其他数据库元素,使一张数据表的所有数据都具有相同的结构。 | 非关系(Nosql)数据库一般不会对表的结构进行严格的定义,通常使用分区键及键值来检索值、列集或者半结构化数据。 |
ACID | 传统关系型数据库支持由 ACID(原子性、一致性、隔离性和持久性)定义的一组属性。其原子性体现在一个事务“全部成功或者全部失败”,即完全执行成功或完全不执行某项事务。一致性表示数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。隔离性要求并发事务应分别执行,互不干扰。持久性指一旦事务提交后,它所做的修改将会永久保存在数据库上,即使出现宕机也不会丢失。 | 为了获得更为灵活的可水平扩展的数据模型, Nosql 数据库通常会放弃传统关系数据库的部分 ACID 属性。凭借这些特性,Nosql 数据库可用来克服一系列包括性能瓶颈、可扩展性、运营复杂性以及不断增加的管理和支持成本的问题,这也让 Nosql 数据库成了传统关系型数据库在面临海量数据及高并发挑战时的最佳选择。 |
性能 | 性能一般取决于磁盘子系统、数据集大小、查询优化、索引和表结构。 | 写性能通常受限于磁盘子系统,读性能则受限于结果集的大小。 |
扩展 | 进行纵向扩展最简单的方式是使用更快的 cpu、磁盘等硬件设备。要获得跨分布式系统的关系表,就需要增加使用成本及技术复杂度。 | 能够利用低成本硬件的分布式集群进行横向扩展,从而在不增加延迟的前提下提高吞吐量和数据规模。 |
API | 对存储和检索数据的请求由符合结构化查询语言(sql)的查询来传达。这些查询由关系数据库系统来解析和执行。 | 应用开发人员可以使用 Nosql 数据库的开放 API 轻松进行存储和检索数据。通过分区键及键值,应用可以查找键值对、列集或者半结构化数据。 |