电商系统订单分表方案怎么设计更好

题目背景:
之前做电商运营,打算转行做开发,参加了几个面试,几乎每家都会问到大数据量时的解决方案。暂时不讨论问这个题目的合理性,既然有需求,那自己就加强吧。所以基于目前个人做的一个系统,计划向大数据量做扩展设计。

涉及的业务场景:
(1)市场中有多个卖家(seller),可查看、处理包含该卖家商品的订单(order)
(2)买家(user)可查看跟踪自己的订单

订单表设计方案及查询时处理逻辑
方案1(初始方案)
(1) 原始订单表按照买家id取模分表
(2) 新建买家与订单的映射关系表(也会数据量很大,可再按orderID取模分表)

查询处理逻辑:
1买家查询自己所有的订单:按照userId取模找到对应的订单分表,取数据
2买家按照订单号查询订单:根据orderId从买家订单映射中获得userId,然后仍然是按照userID取模找到对应的订单分表
问题:这样拆分后,与卖家有关的订单就被拆在多张表中,卖家查看自己的订单时还是要扫描所有数据

方案2(修改方案1)
对原始订单也按照卖家id取模分表,然后再建立卖家与订单的映射关系
问题:该方案虽然能实现设定的业务逻辑,但订单数据要保存两份,要维护两个映射表

方案3(修改方案2)
学习了淘宝的订单系统设计,将订单拆分为买家库、卖家库,消息中间件进行订单同步(类似于方案1、2的对买家、卖家分表么),似乎是不关注订单数据冗余,但没想明白如何按照订单查询,所以借鉴设计了方案3:
(1)按照userId取模分表
(2)按照sellerId取模分表
(3)按照orderId取模分表
相比方案1、2,少维护了一张表,但有两份数据冗余
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值