订单系统订单表设计方案

大数据学习交流微信群

一年前,在上一家公司接手了一个含有订单系统的项目,业务并不复杂,但是当时令我比较困惑的是订单表的设计。

困惑的点主要是随着订单量增加,单表的存储能力将达到瓶颈,必然要采用分表的方案,那么按照什么维度拆分合适呢?

分表之后带来的最大的挑战是订单查询。如果以用户为中心,采用userId取模,可以很方便的处理用户查单诉求,但是对商家或产品而言,数据就比较分散,相反如果以商家或商品为中心,则用户查单比较困难。

由于对这样的业务没有成熟的经验,最后只能采取相对讨巧的方案,按照自然日期分表,考虑订单量并不大,当时是每个季度一张表,一年4张表。

为什么说讨巧?以用户查单为例,查询页默认要选择一个季度,也就是将用户订单数据限制在一张表中做查询。大多数时候用户也只是查看最近订单,所以勉强可以接受。

如果用户一定要查看全部订单,只能将所有订单表union all,当时想的是至少前几个年头订单表数量有限,性能问题不会太严重,以后再想办法进行优化。

前几天又想到了这个订单表的设计问题,于是和现在的同事进行了简单的沟通,也学到了非常宝贵的经验。在这里简单记录一下,说的不对的地方希望大家多多包涵并不吝赐教。

具体怎么做呢?

简单来说就是冗余+同步+检查。

数据冗余,非常有效的解决了数据分散的问题。将订单落库订单表(暂且称作订单表O),订单表按照日期分表,按天,周,月,季度或者年都可以,可根据实际业务量选择。分表首先解决了单表存储的瓶颈问题。如何冗余?以用户查单为例,新建用户订单表(订单表U-O),将userId取模分表,冗余一份订单数据,U-O表中的数据可以只包含重要信息如下单时间,数量,金额,订单状态等(列表页展示)。订单详情信息可以从O表中查询。

这样一来,用户查单自然就只限一张表中啦。这么简单的问题为什么我没想到呢?不过这样一来,新的问题出现了,就是如何保证这两份(也可能多份)订单表数据同步?虽然订单的大部分信息不会经常变更,但是在订单完成之前,必然有订单状态的变更或用户更新的可能。这就是我将要说的数据同步问题。

如何同步?可能大家会想到将几份订单数据放入事务处理,虽然事务可以有效的解决同步问题(事务一致性),但是我认为事务一方面影响了数据库性能,另一方便增加了接口复杂性(耦合)。同事给我的方案是通过消息组件同步,消息在分布式系统中是非常重要的存在,可以很好的将服务解耦,而且高可用,支持高并发,响应速度快。

但是消息同步还不能保证数据同步的绝对一致,比如消息延时,重复,丢失等。一方面要优化消息组件的稳定性,另一方面要做好监控。最重要的是要采取一个主动检查的手段。

做好数据检查。比如启一个job每天凌晨进行一次前一天的数据检查,比对所有订单的一致性。既然采用了消息机制,我们所有的对订单的更新操作都是对O表进行的,因此以O表数据为准即可。

以上就是同事那里收获到的比较不错的方案,因为没有深入剖析,加之我所说的比较肤浅,如果能亲自参与一次实际的开发,也许我会跟大家分享更多有价值的东西。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容