Skip to content

Files

Latest commit

Dec 15, 2023
f400df2 · Dec 15, 2023

History

History
67 lines (39 loc) · 3.58 KB

20210726_02.md

File metadata and controls

67 lines (39 loc) · 3.58 KB

重新发现PostgreSQL之美 - 46 既要又要还要

作者

digoal

日期

2021-07-26

标签

PostgreSQL , SaaS , 低代码 , 实时分析 , 物化视图 , 存储引擎


背景

视频回放: https://www.bilibili.com/video/BV1oM4y1P7QT/

场景:

  • 实时分析行业SaaS, 低代码场景满足客户个性化分析的诉求.
  • 单个用户的数据总量T级别.
  • 业务数据需要实时写入.
  • 用户分析师拖拽式试错, 产生合理的分析模板. 结果则需要实时高并发查询(例如为不通属性用户定制的动态页面, 需要实时识别用户的属性(即分析结果)), 结果还有二次分析诉求.

挑战:

  • 既要又要还要:
    • 用户拖拽式试错, 需要实时分析计算能力.
    • 分析框架固定后, 需要实时查询, 结果有高并发诉求.
    • 业务数据实时写入, 用业务+大数据库成本高, 同步延迟高、一致性等问题突出.
    • 单个用户的数据总量T级别, 不大不小. 用大数据成本高.
    • 如果拖拽后的固定结果使用普通视图, 那么它只是SQL语句, 不存储结果数据, 也无法支持索引, 查询视图时耗费计算, 效率低, 无法支持高并发.
    • 如果存储结果, 那么对于采用逻辑复制的数据库, 需要等事务结束客户端才能apply事务, 只读实例延迟高. 物化视图刷新是大事务, 因此这种场景无法通过只读实例扩展性能.

PG解决方案:

  • 并行计算+JIT满足TB级别拖拽式实时分析需求.
  • 物化视图, 已经算好, 查询效率高.
  • 支持在物化视图上创建索引, 效率高.
  • 定时任务增量刷新物化视图, 可以反映基表变更实时信息.
  • 流复制只读实例, 流式复制, 不需要等事务结束, 解决只读实例延迟高问题.
  • 支持物化视图与基表采用不一致的存储引擎, 例如基表要高并发dml使用行存储, 物化视图如果要大量二次分析可以使用列存储. 使得可以适合最好的效率.

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat