digoal
2023-01-15
PostgreSQL , PolarDB , undo
PostgeSQL 的undo存储引擎, 特别是单纯的undo存储引擎研发(例如zheap)可能没那么重要了.
为什么这么说?
任何一个产品功能都应该是市场导向的, undo存储引擎解决的问题是: 高频更新操作对数据页造成的垃圾, 如果未及时回收, 会导致表膨胀, 增加碎片, 增加空间占用, 增加buffer占用, 影响性能, 增加索引膨胀概率(HOT除外).
一方面, 提高垃圾回收频率, 提高磁盘IOPS性能, 可以解决这个问题.
另一方面, 从市场角度, 如果高频更新的业务场景萎缩, 取而代之崛起的是append only、计算型的业务场景呢?
物联网端上报数据、业务端用户行为数据、交易数据等, 都是append only的时序、流式类数据. 这类数据的需求如下, 这些才是重要的:
- heap存储, 列存储, 块压缩, 多模类特性(扩展存储结构, 扩展检索算法, 流计算, 扩展运算算法), 自动数据分片, 分布式存储和分布式计算, 自动冷热分级存储等, 这些特性显得更为重要.
支撑这个观点的数据, 可以从dbgengine中找到, 时序、多模类数据库发展迅猛. 而且有些用户也会使用老牌关系数据库去覆盖这类场景, 实际份额应该比数值表述的还要大.
dbengine数据统计如下:
postgres=# select split_part(c5,',',1),sum (c8::numeric) filter (where c8 !~ '±'), sum (c6::numeric) , round (sum (c8::numeric) filter (where c8 !~ '±')/sum (c6::numeric),4)*100 || ' %'from b group by split_part(c5,',',1) order by 2 desc;
split_part | sum | sum | ?column?
------------------+--------+---------+------------
Time Series | 8.01 | 75.96 | 10.5500 %
Multi-model info | 6.90 | 268.31 | 2.5700 %
RDF | 3.86 | 8.65 | 44.6200 %
Object oriented | 3.29 | 14.12 | 23.3000 %
Key-value | 2.25 | 271.67 | 0.8300 %
Multivalue | 2.20 | 16.87 | 13.0400 %
Graph | 1.73 | 70.72 | 2.4500 %
Native XML | 0.99 | 4.20 | 23.5700 %
Navigational | 0.47 | 4.09 | 11.4900 %
Event | 0.26 | 1.48 | 17.5700 %
Content | -0.36 | 6.48 | -5.5600 %
Spatial DBMS | -2.04 | 32.60 | -6.2600 %
Wide column | -10.49 | 181.88 | -5.7700 %
Document | -30.28 | 571.22 | -5.3000 %
Relational | -33.64 | 5452.86 | -0.6200 %
Search engine | -34.61 | 318.50 | -10.8700 %
(16 rows)
- 《[直播]大话数据库终局之战》
- 《PostgreSQL 商业角度解读 - openapi 、 扩展能力 以及 插件开源协议 - 云数据库、商业数据库、开源数据库终局之战》
- 《PostgreSQL zedstore 行 列 混合存储使用》
- 《PostgreSQL 基于access method api的列存zedstore》
- 《PostgreSQL 存储引擎 - orioledb (undo, 基于b+tree, 支持copy on write checkpoint)》
- 《PostgreSQL 15 preview - 支持修改table access method (存储引擎)》
- 《PostgreSQL zheap 引擎最新进展》
- 《PostgreSQL appendonly 压缩 存储引擎 - pg_cryogen》
- 《PostgreSQL LSM-tree 引擎 - VidarDB (baseon rocksdb)》
- 《PostgreSQL Undo storage implementation - undam , zheap的另一轻量化选择》
- 《PostgreSQL 列存储引擎 susql (志铭奉献)》
pg tam, iam
- table access method
- index access method