- 设计资产表:关键资产的详细信息
- 原子性、没有函数依赖、传递依赖
- 适度冗余来加快搜索,减少关联查询
- 设计过程表:记录过程的关键新建
MeasureFile 1:N Measure 1:N MeasureItem
Pretreatment 1:N Measure
Offering 1:N Edition 1:1 PricingPlan
Offering 1:N Feature 1:1 PricingPlan 1:N PricingStrategy 1:N PricingMeasure
Service 1:1 ServicePrice 1:N BillSummary 1:N BillDetail
个人:user(uid, user_info, …)
好友:user_friends(uid, friend_id, …)
加入的群:user_groups(uid, group_id, …)
群:group(gid, group_info, …)
群成员:group_members(gid, uid, …)
个人消息:msgs_user(msg_id, uid, …)
群消息:msgs_group(msg_id, gid, …)
- 发消息:写操作
- 收消息:读操作
- 读扩散、写扩散原理
- 一定概率的读写锁冲突
高并发的扣款场景,可以使用CAS乐观锁,采用select&set方式进行扣款,既能够保证吞吐量,又能够保证一致性。
UPDATE t_yue SET money=$new_money,ver=$ver_new WHERE uid=$uid AND ver=$ver_old;
- 使用ver记录版本号,防止ABA问题
- 只有当同一个用户,同一秒钟,有大量扣减时,才有一定几率会冲撞,但也不会导致数据不一致