尤里·拉什科夫斯基:Postgres中的Sum Types

尤里·拉什科夫斯基:Postgres中的Sum Types

💡 原文英文,约600词,阅读约需3分钟。
📝

内容提要

本文介绍了在Postgres中使用Sum Types的方法,通过使用通用机制来定义Sum Types,可以实现对值的多样性表示。作者以存储几何原语为例,说明了如何将不同的形状存储在单个列中。作者开发了一些扩展来支持Sum Types。

🎯

关键要点

  • 在Postgres中使用Sum Types可以简化多种类型值的表示。

  • 通过将几何原语存储在单个列中,可以避免复杂的数据库模式。

  • 作者开发了一些扩展来支持Sum Types,旨在使Postgres成为一个功能齐全的应用开发平台。

  • 基本思路是为每个Sum Type注册一个基础类型,并在扩展配置中列出所有变体类型的OID。

  • 如果所有变体都是固定大小,则Sum Type的大小也是固定的,等于最大变体的大小加上判别符。

  • 使用底层变体类型的输入/输出函数,并将输入/输出和转换函数调度到扩展提供的通用实现。

  • 可以通过创建表来存储不同的几何形状,并通过查询选择特定条件的形状。

  • 目前仍需解决一些问题,如添加二进制发送/接收支持和确保适当的TOAST支持。

  • 用户可以通过最新的Omnigres构建尝试使用Sum Types。

➡️

继续阅读