NoSql数据库

为什么要使用NoSql数据库

数据库技术的发展历程

在单机上使用MySql时

    在90年代,一个网站的访问量都不大,用一个MySql数据库完全可以满足。但随着时代发展信息量越来越大,一个机器上存放数据、一个数据库不能承受住用户的访问量。

Memcached(缓存)+MySQL+垂直拆分

    随着访问量的上升,web程序不在只关注功能,同时开始追求性能。程序员们开始使用大量的缓存来缓解数据库的压力,优化数据库的结构和索引。

    垂直拆分:按照业务功能对表进行分类,将不同种类的表放到不能的数据库中。

Mysql主从读写分离(主从复制、读写分离)

    由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。

分表分库+水平拆分+mysql集群

    在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

    同时,开始流行使用分表分库来缓解写压力和数据增长的扩展问题。这个时候,分表分库成了一个热门技术,是面试的热门问题也是业界讨论的热门技术问题。也就在这个时候,MySQL推出了还不太稳定的表分区,这也给技术实力一般的公司带来了希望。虽然MySQL推出了MySQL Cluster集群,但性能也不能很好满足互联网的要求,只是在高可靠性上提供了非常大的保证。
 

MySQL的扩展性瓶颈

    MySQL数据库也经常存储一些大文本字段,导致数据库表非常的大,在做数据库恢复的时候就导致非常的慢,不容易快速恢复数据库。比如1000万4KB大小的文本就接近40GB的大小,如果能把这些数据从MySQL省去,MySQL将变得非常的小。关系数据库很强大,但是它并不能很好的应付所有的应用场景。MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用MySQL的开发人员面临的问题。

使用NoSql

    今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

NoSql = Not Only Sql

是什么

    NoSql:泛指非关系型数据库,这种类型的数据存储没有固定的格式,无需多余操作就可以横向扩展

大数据时代的3V和3高

3V

    海量(Volume)

    多样(Varlety)

    实时(Velocity)

3高

    高并发

    高可扩

    高性能

NoSql数据库的四大分类

  • KV键值
  • 文档型数据库(BSON格式比较多)
  • 列存储数据库(分布式文件系统)
  • 图关系数据库(构建关系图谱)

 

你可能感兴趣的:(大数据,大数据)