返回顶部
首页 > 资讯 > 数据库 >分库分表(了解)
  • 359
分享到

分库分表(了解)

分库分表(了解) 2021-02-06 11:02:49 359人浏览 绘本
摘要

站在架构师的角度来看分库分表  单体应用架构 一个归档包(可以是jar、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。 优点 便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间

  • 站在架构师的角度来看分库分表 

单体应用架构
一个归档包(可以是jar、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。

优点
便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。
易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额外的依赖,每项测试都可以在部署完成后立刻开始。
易于部署:只需将单个归档文件复制到单个目录下。
缺点
复杂性高:由于是单个归档文件,所以整个项目文件包含的模块非常多,导致模块的边界模糊、依赖关系不清晰、代码的质量参差不齐,混乱的堆在一起,使得整个项目非常复杂。以致每次修改代码,都非常小心,可能添加一个简单的功能,或者修改一个Bug都会带来隐藏的缺陷。
技术债务:随着时间的推移、需求的变更和技术人员的更替,会逐渐形成应用程序的技术债务,并且越积越多。
扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。
阻碍技术创新:对于单体应用来说,技术是在开发之前经过慎重评估后选定的,每个团队成员都必须使用相同的开发语言、持久化存储及消息系统。

微服务应用架构
微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

优点
易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰、代码量较少。开发和维护单个微服务相对简单。
单个微服务启动较快
局部修改容易部署:单体应用只要有修改,就得重新部署整个应用。微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
技术栈不受限制:在微服务架构中,可以结合项目业务及团队的特点,合理的选择技术栈。
按需伸缩:可根据需求,实现细粒度的扩展。
缺点
运维要求高:更多的服务意味着要投入更多的运维。
分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的问题。
接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务的api,可能所有用到这个接口的微服务都需要进行调整。

实例

V1.0 典型点单体应用架构

 

a.数据量太大,库内存不足
b.查询慢
c.连接数不足,并发插入连接数不够

V1.x  

分析:
数据库压力大、逻辑复用(代码复用度很差)、模块耦合度太高

 OOD:模块分解;面向接口编程(模块在接口之后)

 

V2.0

重构后:

解决了哪些问题?
    业务拆分的问题
    单表数据量问题

  • 详解分库分表

数据库的库表进行拆分,用分片的方式对数据进行管理。 

分库分表两个纬度:垂直、水平

可能出现的问题:跨库Join、分布式事务

拆分规则:时间、hash、地区、id范围、取模

  • Mycat实现分库分表

什么是MyCat

一个彻底开源的,面向企业应用开发的大数据集群       
2、支持事务、ACID、可以替代Mysql的加强版数据库       
3、一个可以视为mysql集群的企业级数据库,用来替代昂贵的oracle集群     
4、一个融合内存缓存技术、NoSQL技术、hdfs大数据的新型SQL Server     
5、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品     
6、一个新颖的数据库中间件产品

为什么使用MyCat
如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候Nosql的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat 综上所述:Mycat作用为:能满足数据库数据大量存储;提高了查询性能

支持的数据库
支持MySQL ORACLE SQLServer等一些主流的数据库

核心技术(分库分表
数据库分片指:通过某种特定的条件,将我们存放在一个数据库中的数据分散存放在不同的多个数据库(主机)中,这样来达到分散单台设备的负载,根据切片规则,可分为以下两种切片模式

MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法 
1.Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。 
2.Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点Datanode。在此可以指定表的分片规则。 
3.DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上 
4.DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上
5.分片规则:前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难题

 案例

 

您可能感兴趣的文档:

--结束END--

本文标题: 分库分表(了解)

本文链接: https://lsjlt.com/news/2144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 分库分表(了解)
    站在架构师的角度来看分库分表  单体应用架构 一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。 优点 便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间...
    99+
    2021-02-06
    分库分表(了解)
  • MySQL-分库分表详解(七)
    ♥️作者:小刘在C站 ♥️个人主页: 小刘主页  ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术 ♥️小刘私信可以随便问,只要会...
    99+
    2023-09-02
    mysql 数据库
  • 分库分表
    分库分表前的问题 任何问题都是太大或者太小的问题,我们这里面对的数据量太大的问题。 用户请求量太大 因为单服务器TPS,内存,IO都是有限的。 解决方法:分散请求到多个服务器上; 其实用户请求和执行一个sql查询是本质是一样的,都是请求一个...
    99+
    2022-02-11
    分库分表
  • Mysql分库分表全面理解
    引言 微服务、分布式大行其道的当下,中、高级Java工程师面试题中高并发、大数据量、分库分表等已经成 了面试的高频词汇,这些知识不了解面试通过率不会太高。你可以不会用,但你不能不知道,就是这么 一种现状。技术名词大多晦涩难懂,不要死...
    99+
    2019-05-21
    Mysql分库分表全面理解
  • MySQL分库分表总结讲解
    项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈。 当出现这种情况时,我们可以考虑分库分表,即将单个数据...
    99+
    2024-04-02
  • mysql分库分表
    一、垂直拆分 1、垂直分库:在分布式系统开发中,基本都是按照模块划分,每个业务模块建立一个数据库  特点:业务区分度高,方便维护管理;各个模块独立维护,可以分摊系统的维护成本,提高可用性。  2、垂直分表:单张宽表,根据实际业务场景,...
    99+
    2015-03-08
    mysql分库分表
  • SQL分库分表
    历史背景 MySql性能瓶颈 1.    表数据量过大 2.    Sql查询过于复杂 3.    Sql没走索引 4.    数据库服务器性能低 解决方案 阿里开发手册:单表行数超过500W或者单表容量超过2G 数据库分库分表 分...
    99+
    2017-03-08
    SQL分库分表
  • Mysql数据库分库分表全面瓦解
    目录1 为什么要分库分表2 垂直拆分(Scale Up 纵向扩展)2.1 垂直分库2.2 垂直分表 3 水平拆分(Scale Out 横向扩展) 3.1 库内分表...
    99+
    2024-04-02
  • 分库分表怎样分?
    1)分库     业务拆分 - 如顾客,商品,订单各自分独立的库     主备 - 主机做读写,备机只做数据备份     主从(读写分离) - 主机写,从机读     主主 - 任意一台机做写,互相复制     集群 - 一主多备、一主多从...
    99+
    2014-07-22
    分库分表怎样分?
  • 大表分库分表总结
    本篇内容介绍了“大表分库分表总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.前言为什么需要做分库分表...
    99+
    2024-04-02
  • 分库分表介绍
    目录 一、前言         二、何谓数据切分 三、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 4、拆分需考虑的业务因素 四、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 五、垂直与水平切分的联合使用 六、数据分...
    99+
    2023-09-03
    mysql 分表分库 垂直水平 表分区 切分策略
  • 数据库分库分表思路
    数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 ...
    99+
    2017-10-27
    数据库分库分表思路
  • MySql分表、分库、分片和分区知识深入详解
    一、前言 数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。 二、分片(类似分库) 分片是把数据库横向扩展(Scal...
    99+
    2024-04-02
  • MySQL分库分表实例分析
    这篇“MySQL分库分表实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL分库分表实例分析”文章吧。一、为什么...
    99+
    2023-06-30
  • mysql分库分表备份
    一、单独备份数据库mysqldump -uroot -poldboy oldboy >/opt/oldboy.sql         最简单的备份        1)  mysql基于myisam引擎...
    99+
    2024-04-02
  • Mycat分表分库原则
    分表分库虽然能解决大表对数据库系统的压力,但它并不是万能的,也有一些不利之处,因此首要问题是,分不分库,分哪些库,什么规则分,分多少分片。  原则一:能不分就不分,1000万以内的表,不建议分片,...
    99+
    2024-04-02
  • MyCat怎么分库分表
    本篇内容介绍了“MyCat怎么分库分表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目环境: ...
    99+
    2024-04-02
  • MySQL分库分表详情
    一、业务场景介绍 假设目前有一个电商系统使用的是MySQL,要设计大数据量存储、高并发、高性能可扩展的方案,数据库中有用户表。用户会非常多,并且要实现高扩展性,你会怎么去设计? OK...
    99+
    2024-04-02
  • SpringBoot实现分库分表
    目录一、statementHandler对象的定义二、prepare方法1、首先prepare方法是用来编译SQL2、那就是之前说的那几个具体的StatementHandler对象3...
    99+
    2024-04-02
  • MySQL如何分库分表
    1. 我们为什么需要分库分表 在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得想好分库分表的理由是什么。我们现在就从两个维度去思考它,为什么要分库?为什么要分表? 1.1 为什么要分库 如果业务量剧增,数...
    99+
    2023-08-17
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作