网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
🌴 关系型数据库与非关系型数据库区别
🚀关系型数据库:
(1)高度组织化结构化数据
(2)结构化查询语言(SQL)
(3)数据和关系都存储在单独的表中。
(4)数据操纵语言,数据定义语言
(5)严格的一致性
(6)遵循ACID规则 (原子性、一致性、隔离性、持久性,一个支持事务的数据库,必需要具有这四种特性,否则在事务过程当中无法保证数据的正确性)
🚀非关系型数据库:
(1)不仅仅是SQL
(2)没有声明性查询语言
(3)没有预定义的模式
(4)键 - 值对存储,列存储,文档存储,图形数据库
(5)最终一致性,而非ACID属性
(6)高性能,高可用,高可扩
🌴 为什么要用NoSQL?
在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付,故当时使用关系型数据库****是没有问题的。
随着互联网技术的发展**,MySQL 等关系型数据库就不够用了,因为我们需要存储很多非常大的数据,例如文件,博客,图片等等以及在商城网站中对商品数据频繁查询、对**热搜商品**的排行统计**,订单超时问题,虽然关系型数据库也能做,但这样的话我们的数据库表就很大,性能也很低,而且数据的大量增加,我们对数据库的设计也越来越困难了!
而我们的****非关系型数据库NoSQL就可以解决上面的问题,能够很好的处理这些大的数据!
🌴 NoSQL四大分类
类型 | 相关产品 | 应用场景 | 优点 | 缺点 |
键值数据库 | Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等 | 查找速度快,扩展性好、灵活性好、大量写操作时性能高 | 无法存储结构化信息、条件查询效率较低 |
列族数据库 | Cassandra,HBase,Riak | 分布式数据存储与管理 | 查找速度快、可扩展性强、容易进行分布式扩展、复杂性低 | 功能相对局限 |
文档数据库 | MongoDb,CouchDB | 存储、索引并管理面向文档的数据或者类似的半结构化数据 | 性能好、灵活性高、复杂性低、数据结构灵活 | 查询性能不高,缺乏统一的查询语言 |
图形数据库 | Neo4J,InfoGrid,Infinite Graph | 大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等注重于构建关系图的场景 | 灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱 | 复杂性高、只能支持一定的数据规模,很多时候需要对整个图做计算才能得出需要的信息 |
🔥 NoSQL小结
(1)NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。
(2)NoSQL数据库的出现,弥补了关系数据(比如MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。
(3)MySQL和NoSQL都有各自的特点和使用的应用场景,两者的紧密结合将会给web2.0的数据库发展带来新的思路。让关系型数据库关注在关系上,NoSQL关注在存储上。
二、什么是Redis?
Redis是在NoSQL中发展最快同时也是最受欢迎的NoSQL数据库之一,是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。
三、 Redis的特点
(1)Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
(2)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(3)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等多种数据结构的存储。
(4)Redis支持数据的备份(master-slave)与集群(分片存储),以及拥有哨兵监控机制。
(5)支持事务。
四、Redis的优势
🚀性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
🚀丰富的数据类型 – Redis支持二进制案例的Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
🚀原子 – Redis的所有单命令操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单条命令式保存原子性的,但是事务不保证原子性,通过MULTI和EXEC指令包起来。
🚀丰富的特性 – Redis还支持 发布/订阅(publish/subscribe), 通知, key 过期等等特性。
五、Redis的应用场景
假设在某一个大型网站首页一天有100万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。上面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
Redis的应用是非常广泛的,而且极有价值,是服务器中的一件利器!
小结
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!