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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
关系型数据库 数据库 PostgreSQL
使用 Docker 在 Windows、Mac 和 Linux 系统轻松部署 PostgreSQL 数据库
使用 Docker 在 Windows、Mac 和 Linux 系统轻松部署 PostgreSQL 数据库
520 1
|
关系型数据库 Linux 数据库
Linux系统之安装PostgreSQL数据库
Linux系统之安装PostgreSQL数据库
1051 1
|
存储 NoSQL 网络协议
PG内核解读-第1节PostgreSQL系统概述
本文整理自阿里云数据库开源社区Maintainer于巍(花名漠雪),在PostgreSQL数据库内核解读系列的分享。本篇内容主要分为四个部分: 1. 本系列教程介绍 2. PostgreSQL概述(历史、架构) 3. PostgreSQL安装启动 4. PostgreSQL常用命令、调试
PG内核解读-第1节PostgreSQL系统概述
|
6月前
|
关系型数据库 Linux Shell
Centos系统上安装PostgreSQL和常用PostgreSQL功能
Centos系统上安装PostgreSQL和常用PostgreSQL功能
|
关系型数据库 分布式数据库 数据库
沉浸式学习PostgreSQL|PolarDB 8: 电商|短视频|新闻|内容推荐业务(根据用户行为推荐相似内容)、监控预测报警系统(基于相似指标预判告警)、音视图文多媒体相似搜索、人脸|指纹识别|比对 - 向量搜索应用
1、在电商业务中, 用户浏览商品的行为会构成一组用户在某个时间段的特征, 这个特征可以用向量来表达(多维浮点数组), 同时商品、店铺也可以用向量来表达它的特征. 那么为了提升用户的浏览体验(快速找到用户想要购买的商品), 可以根据用户向量在商品和店铺向量中进行相似度匹配搜索. 按相似度来推荐商品和店铺给用户. 2、在短视频业务中, 用户浏览视频的行为, 构成了这个用户在某个时间段的兴趣特征, 这个特征可以用向量来表达(多维浮点数组), 同时短视频也可以用向量来表达它的特征. 那么为了提升用户的观感体验(推荐他想看的视频), 可以在短视频向量中进行与用户特征向量的相似度搜索.
315 0
|
JSON 安全 关系型数据库
PostgreSQL的优势:为何它成为主流数据库管理系统
PostgreSQL的优势:为何它成为主流数据库管理系统
2303 0
|
SQL 关系型数据库 数据库
PostgreSQL 12 文档: 系统表
系统目录是关系型数据库存放模式元数据的地方,比如表和列的信息,以及内部统计信息等。PostgreSQL的系统目录就是普通表。你可以删除并重建这些表、增加列、插入和更新数值, 然后彻底把你的系统搞垮。 通常情况下,我们不应该手工修改系统目录,通常有SQL命令可以做这些事情。(例如,CREATE DATABASE向 pg_database表插入一行 — 并且实际上在磁盘上创建该数据库。)。 有几种特别深奥的操作例外,但是随着时间的流逝其中的很多也可以用 SQL 命令来完成,因此对系统目录直接修改的需求也越来越小。
120 0
|
SQL JSON 关系型数据库
1 PostgreSQL系统概述与编译安装|学习笔记
快速学习1 PostgreSQL系统概述与编译安装
1 PostgreSQL系统概述与编译安装|学习笔记
|
存储 SQL 安全
2 PostgreSQL 物理,逻辑,进程结构以及系统表系统函数|学习笔记
快速学习2 PostgreSQL 物理,逻辑,进程结构以及系统表系统函数
2 PostgreSQL 物理,逻辑,进程结构以及系统表系统函数|学习笔记
|
SQL 存储 缓存
【视频】PostgreSQL 系统概述 | 学习笔记(二)
快速学习【视频】PostgreSQL 系统概述
【视频】PostgreSQL 系统概述 | 学习笔记(二)
下一篇
无影云桌面