pg_idkit

生成各式各样的唯一标识符:UUIDv6, ULID, KSUID

概览

扩展包名版本分类许可证语言
pg_idkit0.4.0FUNCApache-2.0Rust
ID扩展名BinLibLoadCreateTrustReloc模式
4500pg_idkit-
相关扩展pgx_ulid pg_uuidv7 pg_hashids sequential_uuids uuid-ossp permuteseq pg_cardano pg_base58

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.4.01817161514pg_idkit-
RPMPIGSTY0.4.01817161514pg_idkit_$v-
DEBPIGSTY0.4.01817161514postgresql-$v-pg-idkit-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
u22.x86_64
u22.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
u24.x86_64
u24.aarch64
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0
PIGSTY 0.4.0

构建

您可以使用 pig build 命令构建 pg_idkit 扩展的 RPM / DEB 包:

pig build pkg pg_idkit         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_idkit 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_idkit;          # 当前活跃 PG 版本安装
pig ext install -y pg_idkit -v 18  # PG 18
pig ext install -y pg_idkit -v 17  # PG 17
pig ext install -y pg_idkit -v 16  # PG 16
pig ext install -y pg_idkit -v 15  # PG 15
pig ext install -y pg_idkit -v 14  # PG 14
dnf install -y pg_idkit_18       # PG 18
dnf install -y pg_idkit_17       # PG 17
dnf install -y pg_idkit_16       # PG 16
dnf install -y pg_idkit_15       # PG 15
dnf install -y pg_idkit_14       # PG 14
apt install -y postgresql-18-pg-idkit   # PG 18
apt install -y postgresql-17-pg-idkit   # PG 17
apt install -y postgresql-16-pg-idkit   # PG 16
apt install -y postgresql-15-pg-idkit   # PG 15
apt install -y postgresql-14-pg-idkit   # PG 14

创建扩展

CREATE EXTENSION pg_idkit;

用法

pg_idkit: 生成各类新型/小众通用唯一标识符的多功能工具

CREATE EXTENSION pg_idkit;
SELECT idkit_uuidv7_generate();

可用函数

方法函数描述
UUID v6idkit_uuidv6_generate()UUID v6(RFC 4122)
idkit_uuidv6_generate_uuid()UUID v6,返回原生 UUID 类型
idkit_uuidv6_extract_timestamptz(TEXT)从 UUID v6 中提取时间戳
UUID v7idkit_uuidv7_generate()UUID v7(RFC 4122)
idkit_uuidv7_generate_uuid()UUID v7,返回原生 UUID 类型
idkit_uuidv7_extract_timestamptz(TEXT)从 UUID v7 中提取时间戳
NanoIDidkit_nanoid_generate()NanoID
idkit_nanoid_custom_generate_text()自定义长度和字母表的 NanoID
KSUIDidkit_ksuid_generate()K-可排序 UID
idkit_ksuid_extract_timestamptz(TEXT)从 KSUID 中提取时间戳
idkit_ksuidms_generate()毫秒精度的 KSUID
idkit_ksuidms_extract_timestamptz(TEXT)从 KSUID-ms 中提取时间戳
ULIDidkit_ulid_generate()通用唯一字典序可排序标识符
idkit_ulid_extract_timestamptz(TEXT)从 ULID 中提取时间戳
Timeflakeidkit_timeflake_generate()Snowflake + Instagram ID + Firebase PushID
idkit_timeflake_extract_timestamptz(TEXT)从 Timeflake 中提取时间戳
PushIDidkit_pushid_generate()Google Firebase PushID
XIDidkit_xid_generate()XID
idkit_xid_extract_timestamptz(TEXT)从 XID 中提取时间戳
CUIDidkit_cuid_generate()CUID(已弃用)
idkit_cuid_extract_timestamptz(TEXT)从 CUID 中提取时间戳
CUID2idkit_cuid2_generate()CUID2
idkit_cuid2_generate_with_len(length)自定义长度的 CUID2
TypeIDidkit_typeid_generate(TEXT)带前缀和 UUIDv7 的 TypeID
idkit_typeid_generate_text(TEXT)TypeID,返回文本
idkit_typeid_from_uuid_v7(TEXT, TEXT)从给定的 UUID v7 创建 TypeID
idkit_typeid_extract_timestamptz(TEXT)从 TypeID 中提取时间戳

示例

-- 生成不同类型的 ID
SELECT idkit_uuidv7_generate();           -- 018c106f-9304-79bb-b5be-4483b92b036c
SELECT idkit_nanoid_generate();            -- A8jFA0r3NC6FdalR4LEJ0
SELECT idkit_ksuid_generate();             -- 2HMQIBkTJmEN11JI7tvSTMwfYI3
SELECT idkit_ulid_generate();              -- 01HPYV2X17GM5SQP22M3DVFZY3
SELECT idkit_cuid2_generate();             -- clrjx3bwh0000fj3x4c2y1z0s

-- 提取时间戳
SELECT idkit_uuidv7_extract_timestamptz('018c106f-9304-79bb-b5be-4483b92b036c');

最后修改 2026-03-14: update extension metadata (953cbd0)