前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php为例 hash实现数据库水平分表问题

php为例 hash实现数据库水平分表问题

作者头像
躺平程序员老修
发布2023-09-05 16:16:10
2020
发布2023-09-05 16:16:10
举报

php为例 hash实现数据库水平分表问题

1.redis记录最大ID(单线程高并发下保持原子性)2.注册时取出当前最大ID,使用 num = sprintf("%u", crc32(

支付数据库设计

// 订单表:order_id, total_amount, pay_status(支付状态012)(下单先生成,支付成功回调中修改订单状态),支付方式,user_id, 等其他信息

// 订单产品关系表(可能一张订单有多个产品一起下单):order_id, product_id, product_name(冗余技巧),price(冗余技巧),等其他信息

// 支付订单表(收款单表):每次支付或者退款生成的表,payment_id(为order_id+随机6位数字组成),money(总价),user_id,status('ready','pay_success','refun_success'),支付方式,用户账户名,currency,paycost(支付多少,配合分期支付使用)... (每次提交支付的时候,通过关联表与支付订单表检查是否存在该条记录,时间不超过3分钟(支付时间,防止重复支付,在回callback修改状态之前再次付款),如果存在则返回‘已经支付或正在支付’,若没有或时间过时则重新生成支付订单记录,幂等操作。)

// 支付订单关联表:订单id,类型(是付款还是退款),payment_id,money...

生成订单信息(状态为未支付) - (生成支付订单和支付订单关联表) - 发送支付订单ID吊起支付服务 - 支付完成后通过callback接收支付结果 - 该callback更改订单状态(已支付),同时更改支付订单表状态status为已完成,(扩展可以更新用户表花费额度,用于计算共消费多少)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • php为例 hash实现数据库水平分表问题
  • 支付数据库设计
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档