【MySql+NoSql】发展历史

对于数据库这块繁杂的知识,跟学习java web是一样的感觉,不知道从何入手。

每当这种时候,请想到从历史的发展入手,发展的轨迹会告诉你技术的演变过程,我们是因为什么原因才会进行这种演变,由此我们就可以知道每一种技术的应用场景。

数据库技术的发展历史(多个技术可以结合使用)

1.关系数据库时代

在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。
传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。

2.Memcached+MySQL(用缓存缓解读压力)

随着论坛、微博等的火爆,不管是数据量还是网站访问流量都暴增,大部分的网站在数据库方面都出现了性能问题。这种变化使我们不得不将之前完全对功能的关注转移到对性能的关注上。于是人们开始对缓存索引进行优化。开始比较流行的是通过文件缓存的方式缓解数据库压力,但随着访问量的进一步暴增,多台web服务器不能够共享缓存,并且I/O操作非常之多。

于是就出现了Mencached技术,这是一个独立的分布式内存缓存服务器,能够为多台web服务器提供共享的缓存【M1】。然后在此基础上,又出现了多台缓存服务器的扩展机制,其原理是根据hash算法映射到服务器【M2】。而多台缓存服务器再进行扩展或者减少服务器时,要重新进行大量的hash映射,扩展性很不好,为解决这一弊端,出现了一致性哈希。【M3】(Mencached的三个阶段,要点:一致性哈希算法)

3.MySql主从复制 (实现读写分离,缓解读写压力,but读写仍然是基于全表操作)

Memchached只能缓解读的压力,于是出现了Mysql主从复制技术,master-slave实现读写分离,缓解之前读写全部集中在一个数据库上的压力。

【Mysql】主从复制 – 简书

4.分表分库

随着读写压力的进一步扩大,主从技术仍然是在大表进行读写的方式也不堪负重。

1)由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

2)使用分表分库来缓解写压力和数据增长的扩展问题。将大表拆为小表。【!!!!!】

5.NOSQL

至此,在mysql上对于大流量大数据的复杂技术就结束了,要使用这种复杂技术以及维护都是一件比较困难的事。可以说NoSql的出现时大势所趋,

NoSQL相对于Mysql来说,有很多优点:

1)成本低 2)可很好的处理非结构/半结构化的数据 3)可伸缩性,很容易实现横向扩展,并且可以自动分片(即增加多台服务器,通过负载均衡把握性能)

4)动态模式(接受数据的字段的变动)5)自动复制,良好的备份容灾能力

由此可知Nosql的适用场景

1)数据结构复杂 2)表经常变化 3)高并发 大流量 4)海量数据

6.Mysql+Nosql

Mysql屹立市场这么多年,有着大量的优势,如事务机制等。我们不可否认他的作用。

因此我们可以将Nosql作为Mysql在某些方面的扩展,如:数据结构,高并发大数据的场景。‘

例子:如一条用户评论数据,可将id,用户,时间等数据存在Mysql中,将大文本却不会进行查询的评论放在Nosql中。

!!!【结合双方优缺点,合理运用】

    原文作者:su_wing
    原文地址: https://www.jianshu.com/p/73efbdfe3752
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞