数据库切分(2)之垂直切分的粒度
来源:互联网 发布:山西教师网络研修网 编辑:程序博客网 时间:2024/05/16 11:41
垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响.
关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越大,但单表的路由会越简单,与业务的关联性会越小,就越容易使用统一机制处理.在此方向上的极端方案是:打断所有连接,每张表都配有路由规则,可以使用统一机制或框架自动处理.比如amoeba这样的框架,它的路由能且仅能通过SQL的特征(比如某个表的id)进行路由.
反之,若关联打断地越少,则join操作的受到的限制就小,应用程序需要做出的妥协就越小,但是表的路由就会变复杂,与业务的关联性就越大,就越难使用统一机制处理,需要针对每个数据请求单独实现路由.在此方向上的极端方案是:所有表都在一个shard里,也就是没有垂直切分,这样就没有关联被打断.当然这是非常极端的,除非整个数据库很简单,表的数量很少.
实际的粒度掌控需要结合“业务紧密程度”和“表格数据量”两个因素综合考虑,一般来说:
- 若划归到一起的表格关系紧密,且数据量并不大,增速也非常缓慢,则适宜放在一个shard里,不需要再进行水平切分;
- 若划归到一起的表格数据量巨大且增速迅猛,则势必要在垂直切分的基础上再进行水平切分,水平切分就意味着原单一shard会被细分成多个更小的shard,每一个shard存在一个主表(即会以该表ID进行散列的表)和多个相之相关的关联表。
总之,垂直切分的粒度在两个相反的方向上呈现优势与劣势并存并相互博弈的局面.架构师需要做的是结合项目的实际情况在两者之间取得收益最大化的平衡.
阅读全文
0 0
- 数据库切分(2)之垂直切分的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 关于垂直切分Vertical Sharding的粒度
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- vim操作汇总
- 实现原理-Connect
- java类型中的坑
- 冒泡排序算法
- HttpUtil工具类发送post请求
- 数据库切分(2)之垂直切分的粒度
- Android Binder机制原理(史上最强理解,没有之一)
- 练习1-7 编写一个打印打印EOF值的程序
- Java多线程(七)之同步器基础:AQS框架深入分析
- Remote Desktop Connection for mac 报错:证书或相关链无效。
- EasyUI+MySQL+Struts2实现省市二级联动
- “不允许指针指向不完整的类类型”问题
- 数据提取方法
- warpctc error