欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

No.2.6

时间:2023-05-03

相关链接

CSDN_GroupiesM 笔记整理


目录

一、单机MySQL的演化二、什么是NoSQL三、NoSQL的四大分类


一、单机MySQL的演化 1.单机Mysql的年代  

  90年代,基本上一个网站的访问量不会太大,单个数据库完全足够。网页基本上都是Html,服务器没有太大压力。

  网站性能的瓶颈(出现三种情况之一,就必须晋级):
   1、数据量如果太大,一个mysql放不下
   2、数据量>300万,必须要用索引(B+ Tree,一个机器的内存也放不下)
   3、访问量(读写混合),一个服务器承受不了


2.Memcached(缓存) + 垂直拆分(MySQL读写分离)  

垂直拆分主要为了解决:读的问题

网站80%都是在读数据,每次用户访问都要去查数据库就很麻烦。为了减轻数据库的压力,可以使用缓存来保证效率

发展过程:优化数据结构和索引
        --> 文件缓存(通过IO操作,问题在于小文件数量过多,且多台web机器之间不能共享)
        --> Memcached


3.分库分表 + 水平拆分(MySQL集群)  

水平拆分主要为了解决:写的问题

早些年MyISAM:表锁,十分影响效率,高并发下就会出现严重的锁问题
现在Innodb:行锁

慢慢的开始使用分库分表来解决写的压力,MySQL在那个年代推出了表分区,但并没有多少公司使用
MySQL的集群,很好的满足了那个年代的需求,不断优化的本质: 数据库(读,写)性能问题


4.现在  

  2010-2020十年之间,世界已经发生了翻天覆地的变化;(定位,音乐,热榜)

  MySQL等关系型数据库就不够用了。数据量大,变化快。

  MySQL有的使用它来存储一些比较大的文件,博客,图片等。数据库表很大,效率就低了如果有一种数据库来专门处理这种数据,MySQL压力就会变的很小。大数据的IO压力下,表几乎没法更大

目前一个基本的互联网项目需要成本极高


5.为什么要用NoSQL  

  用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等爆发式增长。这时候就需要使用NoSQL数据库,NoSQL数据库可以很好地处理以上IQ哪个库


二、什么是NoSQL

  NoSQL = Not only SQL(不仅仅是SQL)

  关系型数据库: 表格(行 - 列)
  非关系型数据库: 表格(行 - 列)

  泛指非关系型数据库,随着web2.0互联网的诞生。传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是当下必须要掌握的技术。

  很多的数据类型(用户的个人信息,社交网络,地理位置)。这些数据类型的存储不需要一个固定的格式,不需要多余的操作就可以横向扩的 => Map


1、NoSQL特点  

  1、方便扩展(数据之间没有关系,很好扩展)

  2、大数据量高性能(Redis 一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)

  3、数据类型的多样性(不需要事先设计数据库,随取随用)

  4、 传统的 RDBMS 和 NoSQL

传统的 RDBMS- 结构化组织- SQL- 数据和关系都存在单独的表中- DDL(定义语言)、DML(操作语言)- 严格的一致性- 基础的事务- ...

NoSQL- 不仅仅是数据(Not only SQL)- 没有固定的查询语言- 键值对存储,列存储,文档存储,图形存储(社会关系)- 最终一致性- CAP定理- >1.一致性(Consistency):每次读操作都能保证返回的是最新数据;- >2.可用性(Availablity):任何一个没有发生故障的节点,会在合理的时间内返回一个正常的结果;- >3.分区容忍性(Partition-torlerance):当节点间出现网络分区,照样可以提供服务。- base理论(异地多活)- >1.Basically Available:基本可用性,即允许分区失败,除了问题仅服务降级;- >2.Soft-state:软状态,即允许异步;- >3.Eventual Consistency:最终一致性,允许数据最终一致性,而不是时刻一直。- 高性能,高可用,高可扩- ...


2、3V+3高  

大数据时代的3V:主要是描述问题的
  1、海量Volume
  2、多样Variety
  3、实时Velocity

大数据时代的3高:主要是对程序的要求
  1、高并发
  2、高可扩(随时水平拆分,机器不够了,可以扩展机器)
  3、高性能(保证用户体验和性能)

真正在公司中的实践:NoSQL + RDBMS 一起使用


3、阿里巴巴演进分析  

敏捷: 业务快速增长,每天都要上线大量的需求;应用系统日期膨胀,耦合恶化,架构越发复杂,带来更高的开发成本,如何保持业务开发敏捷性?
开放: Facebook 和 AppStore 带来的启示,如何提升网站的开放性,吸引第三方开发者加入到网站的共建中来?
体验: 网站的并发压力快速增长,用户却对体验提出了更高的要求

大型互联网应用问题:
  1、数据类型太多了
  2、数据源繁多,经常重构
  3、数据要改造,大面积改动

解决方案: 统一数据服务层UDSL(没有什么是加一层不能解决的),在网站应用集群和底层数据源之间,构建一层代理,统一数据层

一个简单的网页背后所需要的技术:# 1、商品的基本信息名称、价格、商家信息关系型数据库就可以解决了 MySQL / Oralce(淘宝早年就去IOE了 - 王坚:推荐文章 - 阿里云的这群疯子)淘宝内部的 MySQL 不是大家用的 MySQL# 2、商品的描述、评论(文字比较多)文档型数据库,MongoDB# 3、图片分布式文件系统 FastDFS- 淘宝自己的 TFS- Google 的 GFS- Hadoop 的 HDFS- 阿里云的 oss# 4、 商品的关键字(搜索)- 搜索引擎 solr elasticsearch- Isearch:多隆# 5、商品热门的波段信息- 内存数据库- redis、Tair、Memache# 6、商品的交易,外部的支付接口- 调用三方应用接口


三、NoSQL的四大分类
1、KV键值对  

新浪:Redis
美团:Redis + Tair
阿里、百度:Redis + memcache


         2、文档型数据库(bson 格式和 json 一样)  

MongoDB(一般必须要掌握)、ConthDB

  MongoDB 是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档
  MongoDB 是一个介于关系型数据库和非关系型数据库中间的产品 => MongoDB 是非关系型数据库中功能最丰富,最像关系型数据库的


3、列存储数据库  

Hbase、分布式文件系统


4、图形关系数据库  

Neo4j、InfoGrid

图形关系数据库 不是存储图形,存放的是关系,比如:朋友圈社交网络,广告推荐

四种方式对比   分类举例典型应用场景数据模型优点缺点键值对
Key_ValueTokyo_Cabinet
Tyrant
Redis
Voldemort
Oracle BDB内容缓存: 主要用于处理大量数据的高访问负载,也用于一些日志系统等Key 指向 Value 的键值对,通常用 hash table来实现查询速度快数据无结构化,通常只被当做字符串或者二进制数据列存储数据库Cassandra
Hbase
Riak分布式的文件系统以列簇式存储,将同一列数据存在一起查询速度快,可扩展性强,更容易进行分布式扩展功能相对局限文档型数据库CouchDB
CongoDBWeb应用: 与 Key-Value 类似,Value是结构化的,不同的是数据库能够了解 Value的内容Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法图形数据库
GraphNeo4J
InfoGrid
Infinite Graph社交网络,推荐系统 等,专注与构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案

22/02/15

M

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。