2019独角兽企业重金招聘Python工程师标准>>>

垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响.

关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越大,但单表的路由会越简单,与业务的关联性会越小,就越容易使用统一机制处理.在此方向上的极端方案是:打断所有连接,每张表都配有路由规则,可以使用统一机制或框架自动处理.比如amoeba这样的框架,它的路由能且仅能通过SQL的特征(比如某个表的id)进行路由.

反之,若关联打断地越少,则join操作的受到的限制就小,应用程序需要做出的妥协就越小,但是表的路由就会变复杂,与业务的关联性就越大,就越难使用统一机制处理,需要针对每个数据请求单独实现路由.在此方向上的极端方案是:所有表都在一个shard里,也就是没有垂直切分,这样就没有关联被打断.当然这是非常极端的,除非整个数据库很简单,表的数量很少.

实际的粒度掌控需要结合“业务紧密程度”和“表格数据量”两个因素综合考虑,一般来说:

  • 若划归到一起的表格关系紧密,且数据量并不大,增速也非常缓慢,则适宜放在一个shard里,不需要再进行水平切分;
  • 若划归到一起的表格数据量巨大且增速迅猛,则势必要在垂直切分的基础上再进行水平切分,水平切分就意味着原单一shard会被细分成多个更小的shard,每一个shard存在一个主表(即会以该表ID进行散列的表)和多个相之相关的关联表。

总之,垂直切分的粒度在两个相反的方向上呈现优势与劣势并存并相互博弈的局面.架构师需要做的是结合项目的实际情况在两者之间取得收益最大化的平衡.

相关阅读:

数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

数据库分库分表(sharding)系列(四) 多数据源的事务处理

数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量

数据库分库分表(sharding)系列(二) 全局主键生成策略

数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示

关于垂直切分Vertical Sharding的粒度

数据库Sharding的基本思想和切分策略

转载于:https://my.oschina.net/pangzhuzhu/blog/327055

关于垂直切分Vertical Sharding的粒度相关推荐

  1. mysql 切分_MySQL 切分(Sharding)、水平切分、垂直切分以及读写分离的区别

    切分(Sharding)并不是特定数据库产品所附属的功能,而是在具体技术细节之上的抽象处理.是水平扩展(Scale Out)的解决方案,主要目的是解决单节点数据库服务器的能力限制,以及整个应用其架构的 ...

  2. 数据库:数据库水平切分?垂直切分?整合方案?可能存在的问题?

    前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许 ...

  3. 数据切分 垂直切分、垂直拆分与水平拆分的优缺点

    数据切分 垂直切分 关于数据库的水平切分和垂直切分的一些概念垂直拆分垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在 ...

  4. Mysql 扩展性设计之数据切分、那么数据切分后会带来哪些问题呢?比如分布式事务、数据的一致性、垂直切分和水平切分应用场景

    Mysql 扩展性设计之数据切分.那么数据切分后会带来哪些问题呢?比如分布式事务.数据的一致性.垂直切分和水平切分应用场景 前言.什么是数据切分 垂直(纵向)切分.水平(横向)切分.他们各自的特点 垂 ...

  5. 开源分布式数据库中间件MyCat架构简介(一)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 开源分布式数据库中间件MyCat架构简介--MyCat源起 一.数据库切分概述:OLTP和OLAP 二.关系型数据库和NoSQL数据库 三.关系型数据库和NoSQL数据库的特点及优缺点 1 ...

  6. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  7. 分库与分表设计-垂直切分

    垂直切分 一个数据库由多个表构成,每个表对应不同的业务,垂直切分是指按照业务将表进行分类,将其分布到不同的数据库上,这样就将数据分担到了不同的库上(专库专用). 优点如下: 1).拆分后业务清晰,拆分 ...

  8. 关于数据库的水平切分和垂直切分的一些概念(转)

    垂直拆分 垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的.当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起, ...

  9. c#垂直投影法_【游戏开发】游戏后期特效#3:垂直雾(Vertical Fog)

    原标题:[游戏开发]游戏后期特效#3:垂直雾(Vertical Fog) 关注"indienova",挖掘独立游戏的更多乐趣 1开始之前 在之前的文章中有前辈提到大萌喵的写作风格的 ...

最新文章

  1. git 基于发布分支的开发
  2. xml中的常用操作示例
  3. 前端学习(5):深入了解网站开发
  4. 离散数学图论旅行规划问题_《图论及其应用》(一)
  5. 有了MDL锁视图,业务死锁从此一目了然
  6. 转 zookeeper启动为什么占用8080端口,修改哪个配置文件可以改变端口?
  7. 赚钱第一,投资第二,才是正确的财富获取方式
  8. Atitit ide的艺术 与新特性搜集大纲 目录 1. Prj mana 2 2. 界面布局自定义 2 2.1. 自定义 perspectives 2 3. 代码编写 2 3.1. 自动提示 2
  9. 22_粗粒度权限控制
  10. 熊猫烧香C语言源代码,熊猫烧香病毒源代码 1.0 完整版 (图文)
  11. 《HTTP权威指南》读书笔记---HTTP概述
  12. ENVI裁剪遥感图像
  13. MySQL多表联查常用函数数据库设计规范
  14. Git之reset、revert和cherry-pick
  15. 计算机多媒体专业就业现状,计算机多媒体技术就业前景怎么样
  16. win7取消计算机密码怎么设置,Win7取消开机密码的方法
  17. xp系统开启wlan服务器,XP系统笔记本怎么设置无线网络?
  18. java api 已取消到该网页的导航问题
  19. 皮特测评:蓝牙耳机哪个品牌最好?300元内最好的蓝牙耳机
  20. manjaro 中文输入法

热门文章

  1. 7-6 动物 (15 分)
  2. php字符集转换,php字符集转换
  3. VirtualBox虚拟机配置CentOS7网络图文详解教程
  4. Solidity编程 二 之Solidity安装
  5. SDN 前提知识:关于东西南北向接口
  6. Apache ab 压力测试工具
  7. 把一个sql where表达式转化为一个二叉树
  8. idea IDE 常用快捷键记录
  9. Log4j2进阶使用(Pattern Layout详细设置)
  10. Date型时间获取每周第一天,每月第一天,每季第一天,每年第一天