Recent Posts

强制数据分布与导出prefix - 阿里云pg, hdb pg oss快速数据规整外部表导出实践案例

2 minute read

背景 批量数据导出在数据分析、数据圈选、广告系统、数据清洗系统、数据规整系统中是一个比较常见的需求,例如: 1、导出任务流。 2、广告系统,圈选人群。 3、数据清洗并导出。 4、数据按某些规则分类,规整并输出到不同的文件。 通常数据库的导出功能相对来说比较单一,例如可以导出query的结果,导出表,导出...

SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)

less than 1 minute read

背景 在流计算应用中,保持窗口和数据可重算(设置起点重新开始算)并覆盖已有计算结果。是两个比较特殊但又很有用的需求。 例如流数据来自多个业务线,数据在现实中的发生有先后逻辑,然而由于系统的问题可能有数据到达差异,例如先发生的事情,数据反而后到达,(比如说订单,先下单,后付款,在发货,这是多个业务线产生的数据,...

PostgreSQL 秒杀4种方法 - 增加 批量流式加减库存 方法

3 minute read

背景 秒杀,即对同一个商品,消减库存。 带来的数据库问题是热点行,由于数据库最细粒度的锁通常是行锁,同一行同一时刻只能被一个事务更新,其他事务如果要更新同一行,会等待行级排它锁。 PostgreSQL中有几种方法来处理秒杀: 1、暴力,直接更新 2、skip locked,跳过被锁的行,直接返回,防止会话...

PostgreSQL 大学选课相关性应用实践

1 minute read

背景 大学生选课,一门课程可同时有若干学生选修,一个学生可能同时选多门课程,学生和课程的关系是多对多的关系。 1、如何找出每一门课程相关的课程(即这门课程的学生,还选了其他一些什么课程?)同时要求按相关性排序。 2、如何找出每一门课程相关的课程(即这门课程的学生,还选了其他一些什么课程?这些课程的学生又选了一...

PostgreSQL json 任意位置 append 功能实现

less than 1 minute read

背景 在JSON的任意位置,插入或append一段。目前PG内置函数不支持,需要复杂的SQL。 目前支持的内置操作符和函数如下: https://www.postgresql.org/docs/current/static/functions-json.html 现在有一个这样的需求,在对应某个PATH的位...

航空公司数据库设计

6 minute read

背景 通过学习航空公司数据库设计,学习PostgreSQL的使用。 这个DEMO来自postgrespro: https://postgrespro.com/docs/postgrespro/10/demodb-bookings.html 加载航空公司数据 可以任选一个数据集,使用pg_restore还...

传统分库分表(sharding)的缺陷与破解之法

less than 1 minute read

背景 随着互联网的发展,数据爆炸性的增长,数据库逐渐成为了很多业务的绊脚石,很多业务也哭着喊着要上分布式数据库。 但是,传统的分库分表(sharding)带来的问题较多,得不偿失 传统分库分表问题 1、 扩容不方便(需要重分布数据) 2、 分布键变更很麻烦 3、 分布键选择(架构设计)需要谨慎,甚至...

PostgreSQL 3D City 应用

3 minute read

背景 空间应用在城市规划建设中,在发挥越来越重要的作用! PostGIS是一个开源的PostgreSQL空间数据库插件,遵循OGC的SQL协定设计,应用广泛。 PostGIS is an open source software program that adds support for geog...

PostgreSQL 图式搜索(graph search)实践 - 百亿级图谱,毫秒响应

14 minute read

背景 图式搜索是PostgreSQL在(包括流计算、全文检索、图式搜索、K-V存储、图像搜索、指纹搜索、空间数据、时序数据、推荐等)诸多特性中的一个。 采用CTE语法,可以很方便的实现图式搜索(N度搜索、最短路径、点、边属性等)。 其中图式搜索中的:层级深度,是否循环,路径,都是可表述的。 例子 创...