作者:温柔842_259 | 来源:互联网 | 2023-05-18 18:23
文章目录1数据库的发展史2.为什么要用NoSQL3.什么是NoSQL4.NoSQl特点5.了解3V+3高6.数据架构分析1数据库的发展史单机MySQL用户→查询语句→数据库90年代
文章目录
- 1 数据库的发展史
- 2. 为什么要用 NoSQL
- 3. 什么是 NoSQL
- 4. NoSQl 特点
- 5. 了解 3V + 3高
- 6. 数据架构分析
1 数据库的发展史
-
单机 MySQL
用户 → 查询语句 → 数据库
90年代,一个基本的网站访问量不会太大,单个数据库完全够用了。
且基本上使用的都是静态网页,所以服务器没有太大压力。
这种情况下,整个网站的瓶颈:
1、数据量如果太大,一个机器放不下
2、数据的索引(使用的是 B+Tree),一个机器内存放不下
3、访问量增大,一个服务器承受不了
-
MemCached(缓存)+ MySQL + 垂直拆分
数据增多,一个数据库放不下,就需要垂直拆分成多个数据库。
网站 80% 的时间都在执行读操作,所以大部分的数据库复制读操作,少部分复制写操作,也就是使读写分离的技术。
每次查询操作都要去访问数据库的话,数据库压力会很大。这种情况就需要使用缓存,来减轻数据库的压力。
发展过程:优化数据结构和索引 → 使用文件缓存(IO) → MemCached
-
水平拆分 + MySQL 集群
用户持续增多,少量数据库也满足不了需求了,就需要使用 MySQL 集群。每一个集群都具有 M(master)和 S (slave)
把之前整个数据库进行拆分,把不同功能的数据进行拆分,减轻单个群的压力。
-
此时数据库的引擎也发生了变化:
之前是 MyISAM :表锁,查询数据锁住整个表,影响效率。
后来是 InnoDB :行锁,查询数据锁住对应的那一行。
-
现阶段
现在数据量巨大,且变化速度极快,所以 MySQL 这种关系型数据库处理起来就很吃力了。
所以出现了很多新型的非关系型数据 ,专门存储大型文件、图片、博客……
2. 为什么要用 NoSQL
用户的个人信息、社交网络、地理位置、用户自己产生的数据、用户日志…… 数据量暴增。
这时就要使用 NoSQL 数据库,它可以很好的处理以上情况。
3. 什么是 NoSQL
- NoSQL = Not Only SQL (不仅仅是 SQL)
泛指非关系型数据库。
-
关系型数据库 :表格,以行和列作为表格,就像 Excel
随着 web2.0 的互联网的诞生,传统的关系型数据库,很难对付 web2.0 时代的产物 ,尤其是一些高并发的社区,也就暴露出来很多难以克服的问题。
NoSQL 在当今大数据环境下发展的十分迅速,Redis 是发展最快的,而且是我们当下必须要掌握的一个技术。
很多的数据类型用户的个人信息、社交网络、地理位置。这些数据类型的存储不需要一个固定的格式。不需要特定的格式就可以横向扩展的。
4. NoSQl 特点
- 方便扩展(数据间没有关系,很好扩展)
- 大数据量高性能(Redis 每秒写 8 万次,读取 11 万次,NoSQL 的缓存记录级,细粒度的)
- 数据类型是多样型的(不需要实现设计数据库,随去随用,如果是数据量十分大的表,很多人就无法设计了)
-
传统的关系型数据库 和 NoSQL 对比
传统的关系型数据库
- 结构化组织
- SQL
- 数据和关系都存在单独的表
- 操作,数据定义语言
- 严格的一致性
- ……
NoSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储、列存储、文档存储、图形数据库
- 保证最终一致性
- CAP 定理 和 BASE 理论(异地多活)
- 高性能、高可用、靠可扩展
- ……
真正在实践中:NoSQL + 关系型数据库 一起使用才是最强的
5. 了解 3V + 3高
6. 数据架构分析
-
存储商品的基本信息
名称、价格、商家信息 ……
这些关系型数据库就都可以解决了——MySQL / Oracle
-
商品的描述、评论(文字较多的)
文档型数据库:MongoDB
-
图片
分布式文件系统 FastDFS
淘宝的:TFS
Google的:GFS
Hadoop的:HDFS
阿里云的:OSS
-
商品的关键字(搜索)
搜索引擎 SOLR 、Elastic Search
淘宝用的 : ISearch
-
商品热门的波段信息(秒杀)
内存数据库
Redis、Tair、MemCache
-
商品的交易,外部的支付接口
三方应用
- 大型互联网应用问题:
1、数据类型太多
2、数据源太多,经常重构
3、数据要改造,大面积改造