【重新发现PostgreSQL之美 】- 34 月老 - 撮合系统

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 大家好,这里是重新发现PostgreSQL之美 - 34 月老 - 撮合系统

背景


场景:

  • 交易撮合系

挑战:

  • 时间优, 单只股票只能串行操作, 容易致交易堵的瓶.
  • 一笔交易涉及多份, 例如200, 存在部分交易, 部分撤的需求.
  • 买卖双方的数量可能不匹配, 一笔撮合交易可能涉及多方.
  • 隐蔽问题: 价格挂太高或太低, 无法撮合, 源浪. vacuum, , 导致垃圾不能回收, 但是依旧要触发扫.
  • 业务层实现撮合的挑战: 与数据需要行很多交互, 并且需要在事中完成, RT和死锁问题增加. 性能弱.

PG解决方案:

  • 业务逻辑放在函数内完成, 大幅降低用与数据交互, 降低RT.
  • advisory lock, skip locked等技手段避免死.

DEMO:


约束:

  • 时间优
  • 价格
  • 买低不买
  • 卖高不卖
  • 限价交易, 指定价格
  • 交易
  • 过期未完成交易则撤单

结构设计:

1、时价表

stockid  

price  -- 时价  

ts  

2、买方pipeline

pk  

uid  

stockid  

price  

cnt  

request_ts  

deadline_ts  

modify_ts  

3、卖方pipeline

pk  

uid  

stockid  

price  

cnt  

request_ts  

deadline_ts  

modify_ts  

4、交易明细

pk  

stockid  

buyer  

provider  

cnt  

price  

status  

request_ts  

5、过期订单历史

ops  -- or  

pk  

uid  

stockid  

price  

cnt  

request_ts  

deadline_ts  

modify_ts  

请求需求:

  • 新建交易订单
  • 修改订单内容

撮合函数逻辑:

参数: 输入stockid, batch次数(loop次数)  

逻辑:  

loop batch次数  

 删除过期订单写入过期订单历史表  

 按规则取出一条最早的待成交记录, 买方和卖方, 时间优先, 并且取待交易数额(cnt)小的.  

 撮合  

   更新买、卖表cnt  

   写交易明细  

   更新时价表  

end loop;  

参考


《如何用一个回形针换一栋别墅- openBarter (古人的物物交换市场) 类撮合交易系统》

 

 

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
9月前
|
关系型数据库 数据库 PostgreSQL
使用 Docker 在 Windows、Mac 和 Linux 系统轻松部署 PostgreSQL 数据库
使用 Docker 在 Windows、Mac 和 Linux 系统轻松部署 PostgreSQL 数据库
410 1
|
4天前
|
SQL 自然语言处理 关系型数据库
PolarDB上实现一个自然语言查询系统
PolarDB上实现一个自然语言查询系统
|
1月前
|
Oracle 关系型数据库 分布式数据库
PolarDB助力欧派家居核心系统去O上云,每秒处理万次事务
欧派家居选择阿里云PolarDB-PG数据库,因其顺应云趋势,提供稳定服务,提升扩容和运维效率。欧派运维负责人表示,PolarDB-PG云上运行优于自建Oracle,云运维响应更快,解决问题效率更高。
|
2月前
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB监控与报警系统构建:确保数据库健康运行
【5月更文挑战第23天】阿里云PolarDB因其存储计算分离、高兼容性等特性受企业青睐。为了确保其稳定运行,文章介绍了构建PolarDB监控与报警系统的做法。通过阿里云云监控服务开启和自定义监控视图,关注CPU、内存等关键指标,并设置告警规则。此外,通过自定义脚本与开源工具集成,满足特殊监控需求,实现全面、精准的监控报警,保障数据库健康运行。
266 2
|
10月前
|
关系型数据库 Linux 数据库
Linux系统之安装PostgreSQL数据库
Linux系统之安装PostgreSQL数据库
770 1
|
2月前
|
关系型数据库 分布式数据库 PolarDB
在PolarDB中,对于join操作,系统会采用拉取内表
【1月更文挑战第21天】【1月更文挑战第103篇】在PolarDB中,对于join操作,系统会采用拉取内表
36 1
|
8月前
|
缓存 关系型数据库 Serverless
数据库内核那些事,PolarDB HTAP Serverless,打造经济易用的实时分析系统
下本从IMCI Serverless核心优势角度的介绍各优化工作内容。
数据库内核那些事,PolarDB HTAP Serverless,打造经济易用的实时分析系统
|
2月前
|
关系型数据库 Linux Shell
Centos系统上安装PostgreSQL和常用PostgreSQL功能
Centos系统上安装PostgreSQL和常用PostgreSQL功能
|
7月前
|
容灾 关系型数据库 分布式数据库
|
2月前
|
存储 关系型数据库 分布式数据库
PolarDB IMCI助力云学堂实现高效HTAP系统
云学堂数据库全量使用PolarDB,成本节约30%以上
249 0