Sharding
来源:互联网 发布:手机移动数据自动开启 编辑:程序博客网 时间:2024/05/17 03:38
数据库分库分表
1. Sharding策略
按业务主键ID范围分表
例如按用户uid分段分布,例如0-1000000分在第1个表,1000001-2000000分在第二个表,以此类推。
优点:满足水平扩展能力,当一个表数据量太大需要再拆分时,其它表不受影响,扩容过程可控。 缺点:分表路由可能需要分段维护,分段不一定均匀。
按业务主键ID hash分表
例如按用户uid 100取模分表,分为100张表,看uid尾数就知道落在哪个表中,例如243就落在第44张表(命名可以从_0开始)中。
实际上,hash分表的hash函数可以设计得很复杂以满足需求。例如根据统计的用户活跃度,将相同的活跃度用户分在不同的表中,避免过多高活跃用户分在同一张表中。
优点:分表逻辑简单,直观看出数据落在哪张表中,分表效果均匀。 缺点:当数据需要扩容时,几乎所有数据都要移动,成本大风险大。
按时间范围分表
互联网的数据都有这个特点:时间离现在越近,数据访问次数越多。可以分一个当前的表,一个或多个历史表,按年或月为维度存放数据。
优点:符合互联网数据读写热点特征。 缺点:对同一用户的历史数据读取需要分开处理。如果分表逻辑简单,那么需要定时迁移数据。如果手工迁移数据,那需要持久化维护分表路由。
上述方式的组合
例如先按用户范围分段,分段里面再取模分表。一定程度上减少了hash重分表时对整体数据的影响。
0 0
- Sharding
- Sharding
- Sharding
- Sharding
- sharding
- Sharding
- mongodb sharding
- sharding 介绍
- MongoDB sharding
- MongoDB Sharding
- Sharding Scenario
- mysql sharding
- sharding技术
- Sharding-JDBC
- Sharding模式
- Sharding-JDBC
- 数据库Sharding
- sharding-jdbc
- AAAAAAA
- CI框架源码解析十三之语言类文件Lang.php
- VC获取当前运行目录
- 八大排序学习之一冒泡排序
- ViewPager +Fragment 中Fragment被预加载问题(ViewPager中Fragment的生命周期管理)
- Sharding
- 关于微信分享
- Linux 安装jdk
- Navicat premium MAC破解版
- css-02
- Ext Form用法详解
- MySQL修改语句嵌套子查询时的一个错误
- 小鸟开博了,从今与君共勉
- maven跳过单元测试--maven skip test