项目发展历程
单机MySQL的年代
网站的瓶颈:
- 数据量太大,一个机器放不下
- 数据的索引(B + Tree),一个机器内存也放不下
- 访问量(读写混合),一个服务器承受不了
Memcached(缓存) + MySQL + 垂直拆分(读写分类)
网站80%的情况都是读的情况,为了减轻数据的压力,可以使用缓存来保证效率。
发展过程:
- 优化数据结构和索引
- 文件缓存(IO)
- Memcached
分库分表 + 水平拆分 + MySQL集群
本质:数据库(读,写)
数据库引擎历史:
早些年使用MyISAM:表锁,十分影响效率,高并发下就会出现严重的锁问题
转战Innodb:行锁
慢慢的开始使用分库分表来解决写的压力,MySQL的集群,很好的解决。
当前基本互联网项目架构
NOSQL
为什么使用NOSQL
用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等信息爆发式增长,使用
NOSQL
可以很好的解决这个问题
简介
NOSQL
: Not Only SQL (不仅仅是SQL)
- 泛指非关系型数据库,随着Web2.0诞生。传统的关系型数据库很难对付Web2.0时代。尤其是超大规模的高并发问题。
- 很多的数据类型,如用户的个人信息,社交网络,地址位置等。这些数据类型的存储不需要一个固定的格式。不需要多余的操作就可以横向扩展。
特点
- 方便扩展(数据之间没有关系,很好扩展)
- 大数据量性能(Redis一秒写8万次,读11万次。NOSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
- 数据类型是多样型的(不需要事先设计数据库,随取随用)
- 传统RDBMS和NOSQL对比
RDBMS
- 结构化组织
- SQL查询语言
- 数据和关系都存在单独的表中
- 数据操作语言,数据定义语言
- 严格的一致性
- 基础的事物
NOSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库
- 最终一致性
- CAP定理和BASE(异地多活)
- 高性能,高可用,高可扩展性
大数据时代的特点
大数据的3V:描述问题
- 海量Volume
- 多样Variety
- 实时Velocity
大数据的3高,对程序的要求
- 高并发
- 高可扩展性
- 高性能
NoSQL的四大分类
KV键值对
- Redis
文档型数据
MongoDB
- 是一个分布式文件存储的数据库,C++编写,主要用于处理大量文档。是一个介于关系型数据库和非关系型数据中的中间产品,是非关系型数据库中功能最丰富,最像关系型数据库的。
ConthDB
列存储数据库
- HBase
- 分布式文件系统
图形关系数据库(不是存图形的,放的是关系)
- Neo4J
- InfoGrid
标签:存储,缓存,NOSQL,数据库,MySQL,数据 来源: https://www.cnblogs.com/xiexi/p/15219318.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。