NoSQL
不要读成NO(不的英文)SQL
什么是关系型数据库?
• 关系型数据库是依据关系模型来创建的数据库。
• 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
• 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
• 关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库
• 关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)
常用的关系型数据库:
Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL
特点:
安全(因为存储在磁盘中,不会说突然断电数据就没有了)、
容易理解(建立在关系模型上)、
但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间)
什么是非关系型数据库?
• 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)
• 非关系型模型比如有:
o 列模型:存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,数据即索引,IO很快,主要是一些分布式数据库)
o 键值对模型:存储的数据是一个个“键值对”,比如name:liming,那么name这个键里面存的值就是liming
o 文档类模型:以一个个文档来存储数据,有点类似“键值对”。
常见的非关系模型:
• 列模型:Hbase
• 键值对模型:redis,MemcacheDB
• 文档类模型:mongoDB
特点:
效率高(因为存储在内存中)、
但不安全(断电丢失数据,但其中redis可以同步数据到磁盘中),现在很多非关系型数据库都开始支持转存到磁盘中。
关系与非关系模型数据库转载于:https://www.cnblogs.com/progor/p/8729798.html
二、为什么需要NoSQL
在WEB2.0的盛行后,类似微博和各种网站的海量请求与后台进行交互读写,高并发这种情况这对于传统的关系型数据库就力不从心了,所以我们需要一款读写性能高,查询效率高,负担小的数据库。在web2.0架构中数据库是很难横行扩展的。访问量与日俱增的时候,数据库却无法添加更多的硬件来搭建负载均衡的服务器, 在对于推特,微博这种网站需要24小时不间断得到进行数据库服务的, 对于数据拓展往往需要停机维护,数据迁移;
而NoSQL数据库可以通过添加服务器节点来实现对数据库的拓展,解决了大规模数据集中以及数据种类繁多的问题
NoSQ主流产品:
三、NoSQL数据库的四大分类
键值存储:Redis…(快速查找,缺少结构化)
列存储:Hbase…(快速查找,拓展性强,功能较局限,)
文档数据库:MongoDB(对数据结构要求不严格,查询性能不高,缺少统一的查询语法)
图形数据库:Neo4J(利用图结构的算法,对整个图做计算才能得出结果,不容易做分布式的集成方案)
NoSQL特点:
去掉了数据间的关系,对大数据量的读写灵活,无需先建字段,大量数据和高性能存储,高可用