Nosql介绍
nosql的全称是not-only-sql这个概念早起就有人提出在09年的时候比较火nosql指的是非关系型数据库而我们常用的都是关系型数据库就像我们常用的mysqlsqlserver一样这些数据库一般用来存储重要信息应对普通的业务是没有问题的但是随着互联网的高速发展传统的关系型数据库在应付超大规模超大流量以及高并发的时候力不从心而就在这个时候nosql得到的告诉的发展
Nosql和关系型数据库的区别
1.存储方式
关系型数据库是表格式的因此存储在表的行和列中他们之间很容易关联协作存储提取数据很方便而nosql数据库则与其相反他是大块的组合在一起通常存储在数据集中就像文档键值对或者图结构。
2.存储结构
关系型数据库对应的是结构化数据数据表都预先定义了结构列的定义结构描述了数据的形式和内容这一点对数据建模至关重要虽然预定义结构带来了可靠性和稳定性但是修改这些数据比较困难而nosql数据库基于动态结构使用与非结构化数据因为nosql数据库是动态结构可以很容易适应数据类型和结构的变化。
3.存储规范
关系型数据库的数据存储为了更高的规范性把数据分割为最小的关系表以避免重复获得精简的空间利用虽然管理起来很清晰但是单个操作设计到多张表的时候数据管理就显得有点麻烦而nosql数据存储在平面数据集中数据经常可能会重复单个数据库很少被分隔开而是存储成了一个整体这样整块数据更加便于读写。
4.存储扩展
这可能是两者之间最大的区别关系型数据库是纵向扩展也就是说想要提高处理能力要使用速度更快的计算机因为数据存储在关系表中操作的性能瓶颈可能涉及到多个表需要通过提升计算机性能来克服虽然有很大的扩展空间但是最终会达到纵向扩展的上限而nosql数据库是横向扩展的它的存储天然就是分布式的可以通过给资源池添加更多的普通数据库服务器来分担负载。
5.查询方式
关系型数据库通过结构化查询语言来操作数据库就是我们通常说的sqlsql支持数据库curd操作的功能非常强大是业界的标准用法而nosql查询以块为单元操作数据使用的是非结构化查询语言unql它是没有标准的关系型数据库表中主键的概念对应nosql中存储文档的id关系型数据库使用预定义优化方式比如索引来加快查询操作而nosql更简单更精确的数据访问模式。
6.事务
关系型数据库遵循acid规则原子性atomicity一致性consistency隔离性isolation持久性durability而nosql数据库遵循base原则基本可用basically-availble软柔性事务soft-state-最终一致性eventual-consistency由于关系型数据库的数据强一致性所以对事务的支持很好关系型数据库支持对事务原子性细粒度控制并且易于回滚事务而nosql数据库是在cap一致性可用性分区容忍度中任选两项因为基于节点的分布式系统中很难全部满足所以对事务的支持不是很好虽然也可以使用事务但是并不是nosql的闪光点。
7.性能
关系型数据库为了维护数据的一致性付出了巨大的代价读写性能比较差在面对高并发读写性能非常差面对海量数据的时候效率非常低而nosql存储的格式都是key-value类型的并且存储在内存中非常容易存储而且对于数据的-一致性是-弱要求nosql无需sql的解析提高了读写性能。