本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践(2)

时间:2017-03-20 10:42来源:本港台直播 作者:118KJ 点击:
自带分库规则,这里的用户标识 码 即为用户ID的后四位,在查询的场景下,只需要订单号就可以匹配到相应的库表而无需用户ID,只取四位是希望订单号尽

自带分库规则,这里的用户标识即为用户ID的后四位,在查询的场景下,只需要订单号就可以匹配到相应的库表而无需用户ID,只取四位是希望订单号尽可能的短一些,并且评估下来四位已经足够。

可排序,因为时间戳在最前面。

当然也有一些缺点,比如长度稍长,atv,性能要比int/bigint的稍差等。

  其他问题

事务支持:我们是将整个订单领域聚合体切分,维度一致,所以对聚合体的事务是支持的。

复杂查询:垂直切分后,就跟join说拜拜了;水平切分后,查询的条件一定要在切分的维度内,比如查询具体某个用户下的各位订单等;禁止不带切分的维度的查询,即使中间件可以支持这种查询,可以在内存中组装,但是这种需求往往不应该在在线库查询,或者可以通过其他方法转换到切分的维度来实现。

  数据迁移

数据库拆分一般是业务发展到一定规模后的优化和重构,为了支持业务快速上线,很难一开始就分库分表,垂直拆分还好办,改改数据源就搞定了,一旦开始水平拆分,数据清洗就是个大问题,为此,我们经历了以下几个阶段。

第一阶段

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践

数据库双写(事务成功以老模型为准),查询走老模型。

每日job数据对账(通过DW),并将差异补平。

通过job导历史数据。

第二阶段

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践

历史数据导入完毕并且数据对账无误。

依然是数据库双写,但是事务成功与否以新模型为准,在线查询切新模型。

每日job数据对账,将差异补平。

第三阶段

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践

老模型不再同步写入,仅当订单有终态时才会异步补上。

此阶段只有离线数据依然依赖老的模型,并且下游的依赖非常多,待DW改造完就可以完全废除老模型了。

  简单总结

并非所有表都需要水平拆分,要看增长的类型和速度,水平拆分是大招,拆分后会增加开发的复杂度,不到万不得已不使用。

在大规模并发的业务上,尽量做到在线查询和离线查询隔离,交易查询和运营/客服查询隔离。

拆分维度的选择很重要,要尽可能在解决拆分前问题的基础上,便于开发。

数据库没你想象的那么坚强,需要保护,尽量使用简单的、良好索引的查询,这样数据库整体可控,也易于长期容量规划以及水平扩展。

最后感谢一下棒棒的DBA团队和数据库中间件团队对项目的大力协助!

  活动彩蛋

华为软件开发云是一个智能化软件研发管理平台,

通过云服务的方式开放华为20多年积累的软件工程能力,

助力软件开发团队打造一流的软件产品。

风起云又聚,华为企业云邀你共赢未来,

3月22日,我们在华为青岛软件开发云大会见!

「 阅读原文 」,即刻报名!

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践

  今日荐号

  

wzatv:【j2开奖】一个可供参考的订单系统分库分表实践

  StuQ

  InfoQ推出的IT教育平台——斯达克学院(StuQ )为技术人提供系统实战课程学习微服务,机器学习,iOS开发最潮流技术回复“课程”获得热门课程介绍和优惠码

  微信ID:stuq2015

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容