电商订单系统分库分表

一、两种方案分库分表

 一般业界,对订单数据的分库分表,有两类思路:按照订单号来切分、按照用户id来切分。

 方案一、按照订单号来做hash分散订单数据

   把订单号看作是一个字符串,做hash,分散到多个服务器去。

  具体到哪个库、哪个表存储数据呢?订单号里面的数字来记录着。

  如果要查询某用户的所有订单呢?

  由于是根据订单号来分散数据的。他的订单分散在了多个库、多个表中。

  总不能去所有的库,所有的表扫描吧。这样效率很低。(解决:维护uid和oid的关系表, 此表可以作为缓存,当数据量增大时此关系表也要进行分表)

  一般使用方案二的比较多,一个用户的所有订单,都在一张表里面,那么做分页展示的时候,就容易。

方案二、按照用户id打散订单数据

  以uid来切分数据,有两种思路:

第一种是,某个范围的uid订单到哪些库。0到2千万uid,对应的订单数据到a库、a表。2千万到4千万对应的订单到b库。

  为什么这种方案用得比较少呢?

  容易出现瓶颈吗。某个范围内的用户,下单量比较多,那么造成这个库的压力特别大。其他库却没什么压力。

第二种是,使用uid取模运算。第二种方案业界用得比较多。

  一方面、处理简单,程序上做取模运算就好了。

  另一方面、使用取模的方式,数据比较均匀分散到多个库去了。不容易出现单个库性能瓶颈。

  但是不好处也有:即要扩容的时候,比较麻烦。就需要

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值