带你了解NoSQL


NOsql概述

NoSQL数据库(Not Only SQL),NoSQL,泛指非关系型的数据库。

一:为什么用Nosql??

1、单机MySQL的年代

mark

90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!

那个时候,更多的是去使用静态网页 html ~ 服务器根本没有太大的压力

思考一下,这种情况下:整个网站的瓶颈是什么?

1、数据量如果太大,一个机器放不了!

2、数据的索引 单表超过300万就一定要建立索引

(B+ Tree),一个机器内存也放不下

3、访问量(读写混合),一个服务器承受不了~

只要你开始出现以上三种情况之一,那么你就必须晋级!

2、Memcache(缓存)+MySQL+垂直拆分(读写分离)

网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望使用缓存来保证效率!

发展过程:优化数据结构和索引–》文件缓存(IO)–》Memcache(当时最热门的技术)

mark

3、分库分表+水平拆分+MySQL集群

技术和业务在发展的同时,对人的要求也越来越高!

本质:数据库(读、写)

早些年MyISAM:表锁。十分影响效率!高并发下就会出现严重的锁问题

转战lnnodb:行锁

慢慢的就开始使用分库分表解决写的压力!MySQL在哪个年代推出了表分区!这个并没有多少公司使用!

MySQL的集群,很好满足那个年代的所有需求!

mark

4、如今最近的年代

2010-2020年十年之间,世界已经发成翻天覆地的变化;(地位,也是一种数据,音乐,热榜等!)

MySQL等关系型数据库就不够用了!数据量很多,变化很快~!

MySQL 有的人使用它来存储一些比较大的文件、博客,图片!数据库表很大,效率就低了!如果有一种来专处理这种数据库

,MySQL压力就变的十分小(研究如何处理这些问题!)大数据的IO压力下,表几乎没if啊更大!

5、目前的一个基本的互联网项目!

mark

6、为什么要用NoSQL!

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长!

这时候我们就需要使用NoSQL数据库的,MolSQL可以很好的处理以上的情况!

二:什么是NoSQL

NoSQL = Not Only SQL (不仅仅是SQL)

关系数据库:表格,行,列

泛指非关系型数据库的额,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发社区!暴露很多难以克服的问题,NoSQL在当今大数据环境下发展十分迅速,Redis是发展最快的,也是当下必须掌握的一个技术!

很多的数据类型用户的个人信息,社交网络,地址位置。这些数据类型的存储不需要一个固定的格式!不需要多月的操作就可以横向扩展!Map<Sting,Objet>使用键值对来控制!

2.1:NoSQL特点

1、方便扩展(数据之间没有关系,很好扩展!)

2、大数据量高性能(Redis一秒可以写8万次,读取11万,NoSQL的缓存记录,是一个细粒度的缓存,性能会比较高!)

3、数据类是多样性的!(不需要实现设计数据库!随去随用!如果是数据量十分大的表,很多人就无法设计了!)

4、传统的RDBMS和NoSQL

传统的 rRDBMS
-结构化组织
-SQL
-数据和关系都存在单独的表中
-操作操作,数据定义语言
-严格的一致性
-基础的事务
-......
NOsql
-不仅仅是数据
-没有固定的查询语言
-键值对存储,列存储,文档存储,图形数据库(社交关系)
-最终一致性
-CAP定理和BASE (异地多活)初级架构师
-高性能、高可用,高可扩

2.2:了解:3v+3高

大数据时代的3v:主要描述问题

1.海里Volume

2.多样Variety

3.实时Velocity 5G

大数据时代的3高:主要对程序的要求

1.高并发

2.高可扩(随时水平拆分,机器不够了,可以扩展机器来解决)

3.高性能(保证用户体验跟性能) 

在公司中的实践:NoSQL + RDBMS 一起使用才是最强的

三:NoSQL的四大分类

1 键值数据库

相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached

应用:内容缓存

优点:扩展性好、灵活性好、大量写操作时性能高

缺点:无法存储结构化信息、条件查询效率较低

使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)

2 文档数据库

相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit

应用:存储、索引并管理面向文档的数据或者类似的半结构化数据

优点:性能好、灵活性高、复杂性低、数据结构灵活

缺点:缺乏统一的查询语言

使用者:百度云数据库(MongoDB)、SAP(MongoDB)

3 列族数据

相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS

应用:分布式数据存储与管理

优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低

使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)

4 图形数据库

相关产品:Neo4J、OrientDB、InfoGrid、GraphDB

应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等

优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱

缺点:复杂性高、只能支持一定的数据规模

使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

eo4J、OrientDB、InfoGrid、GraphDB

应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等

优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱

缺点:复杂性高、只能支持一定的数据规模

使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/108505412