Nosql概述
前言
单Mysql时代
单机mysql不够用,大数据时代,数据量过大,一个机器放不下。
索引太大,一个机器内存也放不下。
访问量(读写混合),一个机器承受不了。
Mencached(缓存)+MYSQL+垂直拆分(读写分离)
网站80%是读的操作,每次直接查询数据库十分麻烦,用缓存保证效率。
发展过程:优化数据结构和索引=》文件缓存(IO)=》Memcached(当时最热门的技术!)
分库分表+水平拆分+MYSQL集群
数据库本质:读,写
早些年MyISAM引擎:表锁,十分影响效率,高并发下出现严重的锁问题.
转战InnoDB引擎:行锁
如今年代
MySQL等关系型数据库不够用,数据量很多,变化很快!
MySQL有的使用它来存比较大的文件,数据量大,效率就低了,如果有一种数据库专门处理这种数据,MySQL压力就变得十分小,大数据的IO压力下,表几乎没法变的更大.
为什么要用Nosql?
处理用户的个人信息,社交网络,地理位置等大量的数据量,NoSQL数据库可以很好的解决以上情况.
什么是NoSQL
NoSQL
NoSQL=Not Only SQL(不仅仅是SQL)
关系型数据库:表格,行和列
泛指非关系型数据库,传统关系型数据库很难应付web2.0时代,尤其是超大规模的高并发的社区.Redis发展最快,是我们必须掌握的技术.
NoSQL特点
1.方便扩展(数据之间没有关系,很好扩展!)
2.大数据量高性能(Redis一秒写8万次,读11万次)
3.数据类型多样(不需要事先设计数据库,随取随用)
4.传统的RDBMS和NoSQL
关系型数据库RDBMS:结构化组织,SQL,数据和关系存在单独表中,数据定义语言,严格的一致性,基础的事务…
非关系型数据库NoSQL:不仅仅是数据,没有固定的查询语言,键值对存储,列存储,文档存储,图形数据库,最终一致性,CAP定理和BASE(异地多活),高性能,高可用,高可扩.
了解:大数据的3V+3高
3V——海量Velume,多样Variety,实时Velocity
3高—–高并发,高可扩,高性能
真正的实践:Nosql+mysql
MongoDB文档型数据库
分布式文件系统 FastDFS
阿里云 OSS
Hadoop HDFS
搜索引擎: solr elasticsearch
ISearch 阿里多隆(阿里第一个程序员)
内存数据库 Redis\Memache
NoSQL的四大分类
KV键值对:
新浪:Redis
美团:Redis+Tair
阿里\百度:Redis+memecache
文档型数据库:
MongoDB(是一个基于分布式文件存储的数据库,用来处理大量文档,C++编写,是一个介于关系型和非关系型中中间产品,是非关系型数据库中功能最丰富,最像关系型数据库)
ConthDB
列存储数据库:
HBase:分布式文件系统
图形关系数据库:
不是存图形,存的是关系.
Neo4j,InfoGrid