1、为何要使用Nosqlmysql
今天咱们能够经过第三方平台(如:google,facebook)能够很容易的访问和抓取数据。用户的我的信息,社交网络,地理位置,用户生成的数据和用户操做日志已经成倍的增长。咱们若是要对这些用户数据进行挖掘,那么Sql数据库已经不适合这些应用了,NoSql数据库的发展却能很好的处理这些大的数据。web
2、什么是NoSqlsql
NoSql(NoSql = Not Only SQL),不只仅是sql数据库
泛指非关系型数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题,而非关系型的数据库则因为其自己的特色获得了很是迅速的发展。NoSQL数据库产生就是为了解决大规模数据集合多重数据类型带来的挑战,尤为是大数据应用的难题,包括超大规模的数据储存。网络
这些类型的数据库存储不须要固定的模式,无需多余的操做就能够横向扩展。架构
3、NoSql能够作什么并发
1.易扩展oracle
NoSql数据库种类繁多,可是一个共同的特色是去掉关系数据库的关系特性 。分布式
数据之间无关系,这样就很是容易扩展。也无形之间,在架构层面上带来了可扩展的能力。高并发
2.大数据量高性能
NoSql数据库都具备很是高的读写性能,尤为在大数据量下,一样表现优秀。这得益于它的无关系性,数据库结构简单。
通常MySql使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache。在针对web2.0的交互频繁的应用,Cache性能不高,而NoSql的Cache是记录级的,是一种细粒度的Cache,因此NoSql在这个层面上 来讲就要性能高不少了。
3.多样灵活的数据模型
NoSql无需事先为要存储的数据创建字段,随时能够存储自定义的数据格式。而非关系数据库里,增删字段是一件很是麻烦的事情。若是是很是大数据量的表,增长字段简直就是一个噩梦。
4.RDBMS vs NoSql
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSql
- 表明着不只仅是sql
- 没有声明性查询语言
- 没有预约义的模式
- 键 - 值对存储,列存储,文档存储,图形数据
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和伸缩性
4、怎么玩(在此先提一下,后面详细介绍)
1.KV
2.Cache
3.Persistence
5、3V+3高
大数据时代的3v(海量【Volume】,多样【Variety】,实时【Velocity】)
互联网需求的3高(高并发,高扩展,高性能)
6、多数据源类型的存储问题(以阿里巴巴中文网首页为例)
1.商品基本信息
名称、价格、出厂日期、生产商等几乎不变的冷数据存放在关系型数据库 mysql/oracle中,目前淘宝在去O化(拿掉Oracle),而淘宝内部使用的Mysql也是阿里本身改造过的。
2.商品的描述、详情、评价信息(多文字类型)
多文字信息描述类,IO读写性能变差,存放文档数据库MongDB中
3.商品的图片
商品图片展现类存放在分布式的文件系统中(淘宝的TFS, google的GFS, hadoop的HDFS)
4.商品的关键字
搜索引擎,淘宝内用ISearch
5.商品的波段性热点高频信息
内存数据库Tair、Redis、Memcache
6.商品的交易、价格计算、积分累计
外部系统,外部第三方支付接口,支付宝
总结大型互联网应用(大数据、高并发、多样数据类型)难点和解决方案
难点:
1.数据类型多样性
2.数据源多样性和变化重构
3.数据源改造而数据服务平台不须要大面积重构
解决方案:
EAI和统一数据平台服务层(UDSL)