Perik Rigoudy:PostgreSQL扩展,我们在Adjust的参与方式

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

这篇文章介绍了由Adjust开发的不同的PostgreSQL扩展,包括ajbool、first_last_agg、istore、pg-base62和pg-base36、pg-country、pg-currency、pg-device_type、pg-lock_pool、pg-mvtbl和pg_telemetry扩展。文章鼓励读者使用这些扩展或创建自己的扩展,并与其他用户分享。

🔎

延伸解读

扩展的公开与私有:平衡共享与保密

Adjust 开发了约30个 PostgreSQL 扩展,其中13个公开。公开扩展分享给社区,促进协作;私有扩展因包含敏感数据而不公开。这种模式既贡献了开源生态,又保护了公司内部信息。读者可以借鉴这种策略,在分享通用工具的同时,对涉及业务逻辑或敏感数据的部分保持私有。

数据类型扩展:提升数据建模的精确性

ajbool、pg-country、pg-currency 和 pg-device_type 等扩展引入了新的数据类型,分别处理三态布尔、国家代码、货币代码和设备类型。这些类型基于标准(如 ISO 3166-1 和 ISO 4217),并提供了比较和索引支持,有助于在数据库层面保证数据一致性,并优化查询性能。

聚合与存储优化:应对分析工作负载

first_last_agg 扩展确保在分组中可靠地获取第一个和最后一个值,需配合 ORDER BY 使用。istore 扩展则优化了整数键值对的存储和操作,适合需要快速计算和聚合的分析场景。两者都针对特定分析需求提供了比标准功能更高效的解决方案。

运维与管理扩展:简化日常任务

pg-lock_pool 提供了锁池功能,用于管理并发访问和连接控制;pg-mvtbl 允许将表及其索引移动到指定表空间;pg_telemetry 则用于监控 PostgreSQL 使用情况,提供系统统计信息,并可与 Zabbix、Munin 等监控工具集成。这些扩展帮助管理员更轻松地执行常见运维任务。

❓

Q&A

Adjust 开发了哪些公开的 PostgreSQL 扩展?

Adjust 公开的 PostgreSQL 扩展包括:ajbool、first_last_agg、istore、pg-base62、pg-base36、pg-country、pg-currency、pg-device_type、pg-lock_pool、pg-mvtbl、pg_telemetry,以及一个增强版的 ltree 模块。

ajbool 扩展有什么作用?

ajbool 扩展引入了一种特殊的布尔数据类型,允许使用 'unknown' 值,与 NULL 不同。它有三种状态:'true' (t)、'false' (f) 和 'unknown' (u),简化了布尔值的操作。

如何使用 first_last_agg 扩展获取分组中的第一个和最后一个值?

first_last_agg 扩展提供了 first 和 last 聚合函数,可以在聚合表达式中使用 ORDER BY 子句来确保结果的一致性。例如:SELECT akey, first(val1 ORDER BY val2) AS first, last(val1 ORDER BY val2) AS last FROM agg_test GROUP BY akey ORDER BY akey;

istore 扩展适用于什么场景?

istore 扩展适用于需要以整数表示元素分布的分析工作负载。它优化了整数键值对的存储和操作,提供了操作符和聚合函数(如 sum、min、max),适合快速计算和聚合操作。

pg-base62 和 pg-base36 扩展支持哪些编码方案?

pg-base62 和 pg-base36 扩展支持 base62 和 base36 编码方案,用于编码和解码值。它们提供了特定的数据类型来存储编码后的值,并支持与整数类型(int 或 bigint)之间的转换。

pg-country 扩展引入了什么数据类型?

pg-country 扩展引入了 country 数据类型,实现为枚举类型,其值遵循 ISO 3166-1 alpha-2 标准。该扩展还包括比较操作符和操作符类,用于 btree 和 hash 索引,以支持高效索引和搜索。

pg-currency 扩展支持哪些货币代码?

pg-currency 扩展支持 ISO 4217 货币代码,大约支持 163 种货币。它提供了比较和索引操作,以及比较操作符来支持排序和 btree 索引。

pg-device_type 扩展包含哪些设备类型?

pg-device_type 扩展包含以下设备类型:Bot、Console、Ipod、Mac、Pc、Phone、Server、Simulator、Tablet、Tv、Unknown。它提供了比较操作符和操作符类,优化了 btree 和 hash 索引,适用于处理不同设备类型的数据。

pg-lock_pool 扩展如何管理并发访问?

pg-lock_pool 扩展通过锁池管理并发访问、连接控制和性能优化。它提供了 get_lock_pool 和 get_xact_lock_pool 函数,可以指定池大小和超时时间。返回正整数值可手动释放锁,-1 表示超时,否则在会话或事务结束时自动释放。

pg-mvtbl 扩展有什么功能?

pg-mvtbl 扩展提供了 mvtbl(tablename, tablespace) 函数,用于将表及其所有索引移动到指定的表空间,并返回移动数据的大小(字节)。

🏷️

标签

➡️

继续阅读