加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

学习笔记-大数据存储

发布时间:2020-12-12 03:09:10 所属栏目:MySql教程 来源:网络整理
导读:《学习笔记-大数据存储》要点: 本文介绍了学习笔记-大数据存储,希望对您有用。如果有疑问,可以联系我们。 本日了解了一下网站的大数据存储方面的内容,下面将我学习到的内容和大家分享一下. 首先介绍一下现在主流的数据库:Mysql,Oracle,db2,Nosql(非关系

《学习笔记-大数据存储》要点:
本文介绍了学习笔记-大数据存储,希望对您有用。如果有疑问,可以联系我们。

本日了解了一下网站的大数据存储方面的内容,下面将我学习到的内容和大家分享一下.

首先介绍一下现在主流的数据库:Mysql,Oracle,db2,Nosql(非关系型数据库,redis,Mongodb),本文主要介绍的是Mysql.

对于Mysql,以前我总有这样的误解,便是中小型公司使用,对于大数据量,mysql并不能很好的支持.其实不然,据我了解,淘宝便是使用的Mysql数据库,由此可见,Mysql对于大数据量存储还是可行的.下面就简单介绍一下Mysql为了应对大数据量所采用的技术.

Mysql主从技术(负载),下面是原理图:

学习笔记-大数据存储

它的工作原理就是:主数据库会把所有增编削的操作记录到Binary Log这个日志表中,然后同步到从数据库,从数据库执行查询操作,这就实现了分流,也就是我们所说的负载技术.

大数据量的存储,会引发很多的问题,比如Mysql一张表数据如果超过了一千万行,那么就会严重影响CPU性能.那么在Mysql中如何去办理呢?

Mysql分库分表技术:

学习笔记-大数据存储

Mysql中分表主要分为两种:垂直分表和水平分表.其中垂直分表很少用,以为我们在设计数据库的时候不可能将数据库表字段设计的过多,一般也就十几个二十多个,所以没有必要使用垂直分表.水平分表可以很好的办理数据量大的问题,但是它也有很多的弊端:比如你要将一个表分成两个表,那么原先的sql语句就得修改,这样会使得程序的判断逻辑越来越复杂,导致程序的维护代价高.

另外一种技术便是Mysql分区技术

MySQL的分区技术不同与之前的分表技术,它与水平分表有点类似,但是它在逻辑层进行的水平分表,对与应用程序而言它还是一张表,MySQL5.1版本后有4种分区类型:

一:RANGE分区(用的最多):基于属于一个给定连续区间的列值(字段),把多行分配给分区 (将一个表拆分成:索引文件,数据文件分片存储 )

二:LIST分区:类似于按range分区,区别在于list分区是基于列值匹配一个离散值集合中的某个值来进行选择(列里面的值是固定值时候来进行分区,而且是枚举类型的值适合用list分区 -->好比说 性别:男,女)

三:HASH分区:基于用户定义的表达式的返回值来进行选择的分区,改表达式使用将要插入到表中的这些行的列值计算,这个函数可以包括MySQL中有效的、产生负整数值的任何表达式(把每次插入的数据随机的平均的分配到多个分区里面,最终多个分区里面的数据时平均分配的,但是每个分区里面的数值肯能不太一样,因为是随机分配的,一般可以用来做MySQL分区的测试来使)

四:KEY分区:类似于按hash分区,区别在于key分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数

分区技术能很好的解决分表技术所带来的弊端,成为解决海量数据存储的有力办法.

最后给大家说一下Mysql集群技术

学习笔记-大数据存储

Mysql集群

Mysql集群其实便是冗余技术,为了保障数据库的持续运行,在图中,ACE三个数据库处于运行状态,BDF处于休眠状态,一旦ACE三个运行中的数据库发生故障,会立即激活相对应的休眠数据库,保障服务的不间断运行.

以上内容便是我学习大数据存储的学习笔记,水平有限,不喜勿喷,当然欢迎大神多多指导,共同进步.

学习笔记-大数据存储

欢迎参与《学习笔记-大数据存储》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读