mysql终级解决方案分库分表,大数据量解决方案
旺道随手推广 -> 最新发布

今天一起说说sharding-Sphere,跟数据库有关的,分库分表的初体验,了解为什么要分库分表,分库分表有哪些方案,分库分表如何做到永远都不需要做扩容的方案。今天一起分享这些知识点。思路就是鸡蛋不放在一个篮子里面。从 3.0 开始,Sharding-JDBC 将更名为 Sharding-Sphere。源码:sharding-sphere有介绍。


文章图片1


(一)为什么分库分表

之前说过为什么要进行分布式,大家用的硬件服务器都是有上限的。这好比我的电脑内存是16个G,我只能做16G的事情,如果系统超过16个G,这就是瓶颈,我就不能做。这就是一个单机它的瓶颈。原来很多项目都是单体的,随着瓶颈要扩的,之前说的应用的拆分,这次说说数据库层级的。


文章图片2


之前连接一个数据库的协议JDBC,JDBC连接mysql,这里只说mysql,单表的容量是在500万(单表条数),但是如果mysql的调优,数据可以达到1000万,以及我们的一个库和单个的应用,单个库好像是不能超过10个G的容量,总体还是跟容量有关系字段越多大小越大,有老铁说我们公司有DBA,可以做SQL的优化,可以多余500万,目前都1000多万了,但是你是不是查询很慢,当数据量特别庞大了,在进行调优效果也是微乎其微的,必须做分库或者分表,或者做读写分离。


文章图片3


读写分离,主要解决的就是高并发的问题,master和slave。master可能会增加,如果把select的查询给slave,master处理insert和update,delete等方案,master和slave进行同步,这是我们读写的一种方案。但是这不是终极解决方案,终极的解决方案就是分库分表。按照日期,规则来进行分库。

  • 什么是分库分表

最主要的就是分片的概念,就是数据分片,sharding共享的概念。

  • 为什么需要分库分表

随着业务越来越大,单机单个应用瓶颈的问题。数据库持久化硬盘如何去扩容。

  • 数据库瓶颈解决方案:
  1. sql、表优化
  2. 读写分离
  3. 分库分表

(二)读写分离

数据库的操作:读取(查询)、修改、插入、删除CRUD。

  • 数据库角色

master(主库、写库) slave(从库 读库)。

  • 读写分离

insert update delete走主库,然后select走从库。

  • 应用

读多写少 从库压力会很大 主库相对来说会低(双十一 写)

  • 读写分离java开源框架分类

1.客户端(应用层)

2.中间件(代理层proxy)

读写分离:master一个压力的问题 随着我们业务增大之后 过渡期(试点项目,对于创业公司,今天做电商系统,明天可能就做区块链系统了),瓶颈(mysql本身的机制,机器的性能)产生原因,解决不了数据分片概念。

(三)客户端(应用层)

  • TDDL

阿里TDDL分库分表没有开源,读写分离是开源。分析源码的时候不好说。

  • Sharding-sphere

当当网的分库分表开源,读写分离是开源。目前作者去了京东金融。


文章图片4


优点

  1. 程序自动完成,数据源方便管理。
  2. 不需要维护,因为没用中间件。
  3. 理论支持任何数据库 (sql标准)。

缺点

  1. 增加了开发成本、代码有入侵。
  2. 不能做到动态增加数据源。
  3. 程序员开发完成,运维参与不了。

(三)中间件(proxy)

  • mysql proxy

官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。

  • mycat

用java语言开发,是中国开发者以自组织形式(暂且称之中国开源社区吧),基于阿里开源的Cobar打造演变而来,该项目在众多公司使用(超过300 个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O 的众多 领域和公司 ),社区较活跃,有bug或踩坑能及时修复,性能高,功能强大较完善,而且还一同开源了运维管理平台。

  • altas

用c/c++语言开发,同时有2大互联网公司360和美团支持的项目并开源,而且作为该公司重点投入和长期演进的方向,360 atlas 2015.04停止更新,美团fork 360 atlas,在此基础上打造持续迭代。


文章图片5


优点

  1. 数据增加了,程序没任何影响。
  2. 应用层(程序)不需要管数据库方面的事情 。
  3. 增加数据源不需要重启程序。

缺点

  1. 程序依赖中间件,导致切换数据库变的困难。
  2. 增加了proxy 性能下降。
  3. 增加了维护工作、高可用问题。

(四)分库分表

分库分表其实基于我们读写分离上面提出的方案(也就是目前关系型数据库的终极解决方案)解决高并发、数据分片。

  • 垂直拆分

将一个字段(属性)比较多的表拆分成多个小表,将不同字段放到不同的表中降低单(表)库大小的目的来提高性能。

通俗:大表拆小表,拆分是基于关系型数据库的列(字段)来进行

特点

  1. 每个库(表)的结构都不一样。
  2. 每个库(表)数据都(至少有一列)一样。
  3. 每个库(表)的并集是整个数据库的全量数据。
  4. 每个库(表)的数据量(count)不会变的。

举例:一个用户表有很多的属性,关联了很多数据,如果放到同一个表里面的话查询是方便了,但是效率不行。

未拆分UserInfo表的字段

| userid | groupid | areaid | amount | point | modelid | message | islock | vip | overduedate | siteid | connectid | from | mobile | 

拆分UserInfo表的字段

把常用的字段放一个表,不常用的放一个表,把字段比较大的比如text的字段拆出来放一个表里面,使用的话是根据具体业务来拆,查询时使用多表联查,可以再配合redis存储。

| userid | groupid | areaid | amount | point | modelid | message |

| islock | vip | overduedate | siteid | connectid | from | mobile |

解决问题

表与表之间的io竞争。

不解决问题

单表中数据量增长出现的压力。

  • 水平拆分

某个字段按一定规律进行拆分,将一个表的数据分到多个表(库)中降低表的数据量,优化查询数据量的方式,来提高性能。

特点

  1. 每个库(表)的结构都一样。
  2. 每个库(表)的数据都不一样。
  3. 每个库(表)的并集是整个数据库的全量数据 。

拆分UserInfo表的字段

# 表0 userInfo_0| userid | groupid | areaid | amount | point | modelid | message | islock | vip | overduedate | siteid | connectid | from | mobile | # 表1 userInfo_1| userid | groupid | areaid | amount | point | modelid | message | islock | vip | overduedate | siteid | connectid | from | mobile | # 表2 userInfo_2| userid | groupid | areaid | amount | point | modelid | message | islock | vip | overduedate | siteid | connectid | from | mobile | 

分库分表常见算法

Hash取模:通过表的一列字段进行hash取出code值来区分的。(不好迁移)

Range范围: 按年份、按时间。(不好查找,如果找个数据没有时间,需要全部找)

List预定义:事先设定100找。(判断需要建立多少个分库)

解决问题

单表中数据量增长出现的压力。

不解决问题

表与表之间的io争夺。

分库分表之后带来的问题

  1. 查询数据结果集合并。
  2. sql的改变。
  3. 分布式事务。
  4. 全局唯一性id。

(四)Sharding-sphere

  • 官网

https://shardingsphere.apache.org/index_zh.html


文章图片6


  • 介绍

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,放眼未来,拥抱变化,是非常值得推荐的。反之,也可以用另一种思路看待问题,放眼未来,关注不变的东西,进而抓住事物本质。 关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

PS:介绍了读写分离和分库分表的方案,引出了ShardingSphere,下次重点说说ShardingSphere。

坚持原创的35岁IT老兵!感谢您能够看完这篇文章!感谢关注,评论,转发!

教育培训机构-如何策划节日招生?
做教育培训,最重要的事情莫过于招生了。面对不同的学员,招生方…于招生。目标不同,活动策划也会不一样。② 活动主题要鲜明不仅主题要鲜明,主题之间要有连续性。就像看连续剧一样,一集接一集,一环扣一环。策划好一系列活动,一个接一个来,从多个角度延续活动的宣传,突出主题,引起关注度。常用的招生方式有:体验课招…-------------想要获得更多运营技巧、doc文案,
教育培训:如何提高满班率和续班率
什么是满班率?就是实际人数除以计划招生人数,这个值就是满班率…员有流失是正常的,但要保证一个概率。在保障老学员续期的基础上,我们也要大胆创新,开设网络课程,拓宽招生区域。实地课程录制后,进一步发行到商弈云课上,通过商弈云课系统转成真实流量,网上有人点击观看,点赞,可以按点播量分佣金。助你在日常的营销推…-----------------------想要获得更多运
培训机构难盈利的问题出在哪里,如何实现盈利?
竞争白热化实地培训班、托管辅导班竞争白热化了,利润越来越稀薄…现没有多少盈利。还有一部分负责人在刚招生时,掌握了不少资金,开始盲目扩张,盲目做课程推广,以期待获得更多生源和收费,从而使培训班陷入了这种恶性循环的陷阱里。其实这些到手的钱,并不是你的利润,而是你未来要支出的钱。如遇到行业快速发展时期,或者…-----想要获得更多运营技巧、doc文件,请“关注”并“转
“差异化”经营是网络培训赚钱的关键所在
“差异化经营”这个词,相信大多数人都耳熟能详,但要做到的却是…。在现有的基础上更新升级或者资源整合就是对现有的产品或者技术,进行升级版本,或者通过一些资源整合,成一个项目。你的技能以前是用来生产或制造产品,现在是把技能升级成知识培训,转换云课堂。直白一点就是可以让老师自行录好课程并上传到学校的商弈云课…在着缺点和不足之处。在创新改革时,要从功能、服务、价格等方面
教育培训行业是如何运作的?
以前读书时,学校附近有个小摊卖鸡蛋灌饼。刚开始的时候只有一家….%,剩下的一对一和多人大班其实市场份额都很小。家长报培训班,是希望孩子能够学到知识。老师通过课上教学和课后辅导来满足孩子的需求,达到成绩提高的目标。我见过上百人的大培训班,为什么一个班这么多人?因为是名师讲课,但人太多坐后面,基本听不到重…是你的核心竞争力。想要得到用户的认同,你就必须做到产品质量好
旺道:实体店怎么做网络营销?
年纪大了,体力不好了,便赚不了什么钱了。所以,一定要在年轻的…写文案都是非常头痛的事情,那么下面我会给大家提供一个解决方案。在互联网营销系统里面有很多细节营销,软文营销就是其中一种,但好多小白头痛写文章,所以可以用这个方法也一样可以植入广告语,或者是图片广告,轮显切换广告,使用 旺道营销系统,也就是每…以帮你吸引海量精准粉丝。有了粉丝,你通过广告、产品、服务就可
旺道:圈里圈外,铁饭碗距离瓷饭碗究竟有多远?
中国人爱混圈子,从线下一直混到线上,各种奇形怪状的圈子勾勒出…不能推则敷衍了事,盼着混到主任科员退休;一种是老黄牛式,踏踏实实、兢兢业业工作,但拙于人际关系,活干得最多,但依旧不见晋升迹象;还有一种是提线木偶式,你扯一下线他动一下,好像脑子和身体是分离的。我突然一拍脑袋,这是提前衰老的迹象啊,工作内容…即使选择留在铁饭碗圈里,也应保有随时离开的思想警惕和进行必要
旺道:微信要双开了,朋友圈推广更好做了
现在手机只能登一个微信,如两个,三个微信的小伙伴们就只能退出…动推广工具、 设置头像点击头像图标,点“+”选择图片,可以上传你的企业,个人头像,产品服务等。旺道微信朋友圈广告免费朋友圈广告-旺道、 设置推广主题点“广告”,再点“+”设置推广的主题(类别),填好中文主题,以及你的网址。教你不花一分钱做朋…简直就是一劳永逸哟。如果你点开发布的文章看不到广告,那就是你
旺道:如何能让网站多个关键词排名百度首页?
最近接了一个单,做婴儿游泳馆加盟的。优化推广范围是全国,但是…泳馆加盟哪家好”、“婴儿游泳加盟多少钱”这类与我息息相关的词。如何能让网站多个关键词排名百度首页?但客户并不认同,客户说这个词指数低,或者说搜的人不多。是,这是一方面原因。但是,指数低有什么关系,你是卖产品还是卖指数。搜的人不多有什么关系,…实现广告效果最大化,来满足大众化的广告需求。对于这样的四两拔
旺道:如何成为网络营销达人?这个技能帮你节省80%的时间
在某次名师讲坛上,听到了一个让人警醒的故事。说有个村子缺水,…准的产品。现在已经不是新鲜事物,好多企业因为百度竞价的高额费用,头疼不已,所以做网站关键词优化排名,成为了企业必选的推广项目。做优化也要做到有成效,不然就是一分钱也是昂贵的。用 旺道智能机器人 就可以持续代替人工去做,它非常聪明,只要你够耐…手,设备先进,你多努力奔跑也于事无补。简单说,要去一个地方,

此文章来源来互联网,如果你有任何版权冲突,可以联络我们,微信号:WANCOME,QQ:1444641。加我们时,请说明来意,我们将优先处理你的问题。




旺道商弈  | 圈广告  | 一键推  | 圈推广  | 圈营销  | 圈推广  | 跨圈推
粤ICP备10213132号
旺道商标注册证号:8608864
Copyright © 2016 环企网络信息科技有限公司 版权所有