@clickup/pg-snowflake

中文文档
2.15.3发布于 2025/06/19MIT零依赖近 30 天下载 9.7万

生成带有可选集群编号的 Snowflake ID 标准相容 ID

此软件包已被标记为弃用

This package is no longer maintained

中文使用文档

pg- snowflake: 生成 Snowflake ID 标准与可选集群编号相容的 ids

展览 snowflake_gen() 函数生成 雪花标识 标准 兼容 ids (与 可自定义位数,见下文:

# Snowflake ID compatible (each letter is 1 bit):
0tttttttttttttttttttttttttttttttttt | CCCCC | iiiiiiiiii | ssssssssssssss
^                                     ^       ^            ^
35                                    5       10           14 bits

这里,

  • "t"表示时间戳的位数,即当前Unix时间在 毫秒减去数值 CONST_SNOWFLAKE_TS_START psql 变量 。 仅 CONST_SNOWFLAKE_TS_BITS 最高额 使用时间戳的位数.
  • "C"表示"集群号". 若为 CONST_SNOWFLAKE_CLUSTER_NO_BITS 是0,则 此字段不存在,整个最左边的区域用于 时间戳.
  • "一"是"没有"的"岛"aka"雪花机器ID", 必须是独一无二的 在所有 在同一集群内的主节点.
  • "s"是"序列数位".

您可以自定义您的位字段的长度 pg-snowflake.config.sql 文档,见下文.

也可以将自定义参数传递给 snowflake_gen() 函数本身.

库一般安装在计划中 public 在每个 PostgreSQL 节点上.

安装

第一,复制副本 pg-snowflake.config.sql.example 改为 pg-snowflake.config.sql 内 应用程序和可选更新的根 CONST_* 根据你的需求.

\set CONST_SNOWFLAKE_TS_START 1475796139634
\set CONST_SNOWFLAKE_TS_BITS 35
\set CONST_SNOWFLAKE_CLUSTER_NO_BITS 5
\set CONST_SNOWFLAKE_ISLAND_NO_BITS 10
\set CONST_SNOWFLAKE_SEQ_BITS 14

然后用 psql 控制台运行 :

-- The library is typically installed in schema "public".
SET search_path TO public;

-- Optional: if you don't want to pass PG_SNOWFLAKE_CLUSTER_NO environment
-- variable, create this configuration function manually.
--CREATE OR REPLACE FUNCTION snowflake_cluster_no() RETURNS integer LANGUAGE sql
--  SET search_path FROM CURRENT AS 'SELECT 1';

-- Optional: if you don't want to pass PG_SNOWFLAKE_ISLAND_NO environment
-- variable, create this configuration function manually.
--CREATE OR REPLACE FUNCTION snowflake_island_no() RETURNS integer LANGUAGE sql
--  SET search_path FROM CURRENT AS 'SELECT 1';

-- Install the library to the current schema.
\ir .../pg-snowflake-up.sql

这个 pg-snowflake-up.sql 安装脚本将搜索 pg-snowflake.config.sql 父文件夹中的文件( 如果文件失败 ) 未找到).

默认情况下,集群编号读取自 PG_SNOWFLAKE_CLUSTER_NO 外壳掩体 变量。 这样,你可以指定它 例如1用于发展, 2用于中转, 3 用于生产环境(或3,4,5.) 不同AWS区域。 如果你出于某种原因不想要这种行为 定义 snowflake_cluster_no() 函数.

这同样适用于 PG_SNOWFLAKE_ISLAND_NO 财务报告和审定财务报表 snowflake_island_no() 函数.

snowflake gen([seq name regclass][,ts start bigint][,ts bits][,集群 no bits][,岛屿 no bits][,seq bits]) [,seq bits]] (中文(简体) )

生成 a 雪花识别标准 兼容的标识.

  • seq_name: 默认情况下,函数使用 snowflake_seq 要避免的顺序 在毫秒内(或在秒内)相撞,但也可以通过自己的碰撞 序列名称.
  • ts_start:可选的时代开始时间戳以毫秒为单位. 默认为 CONST_SNOWFLAKE_TS_START (参见pg-snowflake.config.sql.example.).
  • ts_bits:时间戳部分的可选位数. 默认为 CONST_SNOWFLAKE_TS_BITS。 。 。 .
  • cluster_no_bits:集群编号部分的可选位数. 默认为 CONST_SNOWFLAKE_CLUSTER_NO_BITS。 。 。 .
  • island_no_bits:岛号部分的可选位数. 默认 改为 CONST_SNOWFLAKE_ISLAND_NO_BITS。 。 。 .
  • seq_bits:序列部分的可选位数. 默认为 CONST_SNOWFLAKE_SEQ_BITS。 。 。 .

默认格式是 t35-C5-i10-s14。要自定义,请使用命名的 PostgreSQL 参数语法,例如:

SELECT snowflake_gen(ts_bits:=30, cluster_no_bits:=10, island_no_bits:=10);

此函数的好处是,您可以通过 ID 命令获取大致 以时间戳为基础的顺序,甚至跨越微硬/节点. 它还在 (原始内容存档于2018-10-21). bigint id experient. 缺点是 ID 不容易解析 只是人类的眼睛,因为它是位数基(不是以小数位数为基数).

生成的 id 示例 :

  • 4705186322862407685

版本与发布记录

@clickup/pg-snowflake 共发布 3 个版本,首次发布于 2025/06/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.15.3latest2025/06/191.4 年前
2.15.22025/06/181.4 年前
2.15.12025/06/181.4 年前

关于 @clickup/pg-snowflake 的常见问题

@clickup/pg-snowflake 是什么?

生成带有可选集群编号的 Snowflake ID 标准相容 ID注意:该包已被作者标记为弃用——This package is no longer maintained

如何安装 @clickup/pg-snowflake?

在项目目录运行 npm install @clickup/pg-snowflake,或使用 pnpm add / yarn add / bun add。

@clickup/pg-snowflake 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/clickup__pg-snowflake 是否存在。

@clickup/pg-snowflake 可以商用吗?

@clickup/pg-snowflake 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@clickup/pg-snowflake 的下载量有多少?

根据 npm 官方下载统计,@clickup/pg-snowflake 在 2026/10/10 – 2026/11/08 这 30 天内被下载 97,324 次,日均约 3,244 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@clickup/pg-snowflake 还在维护吗?

最新版本 2.15.3 发布于 2025/06/19(1.4 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/06/18。作者已将其标记为弃用,新项目建议寻找替代方案。