拓冰建站拓冰建站
首页 / 资讯中心 / 正文

pgrust 数据类型详解:从数值到 JSONB 的完整清单

pgrust 数据类型详解从数值到 JSONB 的完整清单【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrustpgrust 是一个用 Rust 重写 PostgreSQL 的开源数据库项目目标是兼容 PostgreSQL 18.3并通过超过 46000 条回归测试。对于想要了解 pgrust 数据类型的朋友来说好消息是pgrust 完整保留了 PostgreSQL 的数据类型体系无论是数值、字符串、时间日期还是 JSONB你都可以无缝迁移。本文为你整理一份 pgrust 数据类型详解清单从最常用的数值类型到进阶的 JSONB一次性讲清楚。为什么 pgrust 的数据类型值得关注pgrust 不是又一个数据库它的核心卖点有两个磁盘级兼容pgrust 可以直接读取现有 PostgreSQL 18.3 的数据目录这意味着你的数据类型、表结构、索引都不用重建。性能更强官方宣称在事务型负载上比 PostgreSQL 快 50%在分析型负载上快约 300 倍目前比 ClickHouse 慢 2 倍正在追赶。正因为类型体系 1:1 复刻你现有的 PostgreSQL 数据类型的知识可以 100% 复用。在 pgrust 的源码里这些类型定义分布在crates/_support/types/目录下比如types_core/src/primitive.rs定义了Oid、TransactionId、TimestampTz等基础别名。pgrust 数据类型总览和 PostgreSQL 一样pgrust 的内置数据类型可以按大类划分一张表看懂类别典型类型用途数值类型smallint、integer、bigint、numeric、real、double precision整数与高精度小数字符类型char、varchar、text定长与变长字符串日期时间date、time、timestamp、timestamptz、interval时间与时长布尔类型booleantrue / false二进制bytea原始字节数据JSONjson、jsonb半结构化数据UUIDuuid全局唯一标识网络类型inet、cidr、macaddrIP 地址与 MAC 地址位串类型bit、varbit定长/变长位序列几何类型point、line、polygon、circle二维空间数据范围类型int4range、tsrange 等区间数据复合/自定义enum、composite、domain用户定义类型在源码中pg_type系统表是所有这些类型的管理中枢相关 OID 常量定义在types_catalog/src/pg_type.rs如TypeRelationId 1247以及TYPTYPE_BASE、TYPTYPE_ENUM、TYPTYPE_DOMAIN等类型分类标记。pgrust 数值类型清单整数、小数与高精度计算数值类型是任何数据库的基石pgrust 数值类型清单如下smallintint22 字节范围 -32768 ~ 32767适合小型计数器。integerint44 字节最常用的整数类型范围约 ±21 亿。bigintint88 字节超大整数主键或大数统计的首选。numeric任意精度小数适合金额、科学计算等对精度敏感的场景。real / double precision单精度/双精度浮点适合科学数据。serial / bigserial自增整数建表时的便捷写法。值得一提的是 pgrust 对numeric的处理非常讲究。在源码types_numeric/src/lib.rs中numeric内部采用基数 10000NBASE 10000的数字表示法每个 digit 可以精确表示 4 位十进制数并且同时支持NumericShort短头和NumericLong长头两种磁盘存储格式兼顾小数字的紧凑与大数字的精度。CREATE TABLE prices ( product_id bigint, unit_price numeric(12, 2), -- 最多 10 位整数 2 位小数 stock_count integer );pgrust 字符类型char、varchar 与 text 怎么选字符串是使用频率最高的数据类型pgrust 字符类型完全对齐 PostgreSQLchar(n)定长字符串不足部分用空格填充适合固定格式编码。varchar(n)变长字符串带长度上限最常用的业务字段类型。text无限长度变长字符串无长度限制性能与 varchar 基本一致。name系统内部使用的 63 字节类型普通用户基本用不到。日常开发建议需要长度约束就用varchar(n)否则直接用text两者底层存储机制相同只是varchar多了长度校验。pgrust 使用 Rust 的字符串与 varlena 机制管理这些变长数据保证了与 PostgreSQL 一致的磁盘布局。pgrust 日期时间类型详解时间处理是业务系统的刚需pgrust 日期时间类型包括类型含义示例date日期年-月-日2026-08-16time时间不含时区08:45:24timetz时间含时区08:45:2408timestamp时间戳不含时区2026-08-16 08:45:24timestamptz时间戳含时区2026-08-16 08:45:2408interval时间间隔1 year 2 mons 3 days在 pgrust 内部TimestampTz被定义为i64见types_core/src/primitive.rs采用与 PostgreSQL 完全一致的微秒计数法从 2000-01-01 开始计时。这意味着你从 PostgreSQL 导出的时间数据pgrust 可以原样读取。PostgreSQL JSONB 数据类型详解半结构化数据的首选JSONB 是 PostgreSQL 生态中最受关注的类型之一也是 pgrust 路线图中重点优化的方向官方明确提到better JSON-heavy workload support。pgrust 的 JSONB 实现位于types_jsonb/完整复刻了 PostgreSQL 的 JSONB 存储格式。JSONB 与 JSON 的区别json原样保存文本每次操作都要重新解析不保留键顺序重复键会保留。jsonb解析后的二进制格式自动去重键、排序存储支持索引和高效查询。日常业务几乎都应该用jsonb除非你需要保留原始的键顺序或重复键。JSONB 的内部结构在源码types_jsonb/src/jsonb.rs中JSONB 的每个值都有一个类型标记jbvTypejbvNull 0x0, // null jbvString 0x1, // 字符串 jbvNumeric 0x2, // 数值 jbvBool 0x3, // 布尔 jbvArray 0x10, // 数组 jbvObject 0x11, // 对象 jbvBinary 0x12 // 二进制压缩等这种二进制化设计让 JSONB 在读取时无需重复解析配合 GIN 索引可以大幅提升查询效率CREATE TABLE events ( id bigint, payload jsonb ); -- 用 GIN 索引加速 JSONB 字段查询 CREATE INDEX idx_events_payload ON events USING gin (payload); -- 高效查询 SELECT * FROM events WHERE payload {status: success};pgrust 的目标是让 JSONB 密集型负载比 PostgreSQL 更快这是它主打的差异化能力之一。其他常用数据类型UUID、网络类型与几何类型除了上面几大类pgrust 还完整支持uuid128 位全局唯一标识适合分布式系统的主键。inet / cidr / macaddrIP 地址与 MAC 地址类型支持子网运算。bit / varbit位串类型适合权限位掩码等场景。几何类型point、line、lseg、box、path、polygon、circle定义在types_core/src/geo.rs比如Point就是一个包含x、y两个f64坐标的结构体。范围类型如int4range、tsrange用于表达区间并支持重叠检测。数组类型任何基础类型都可以作为数组使用如text[]、integer[]。如何查看 pgrust 中的数据类型pgrust 兼容 PostgreSQL 的系统目录你可以用熟悉的 SQL 查询pg_type系统表来查看全部内置类型SELECT oid, typname, typlen FROM pg_type WHERE typtype b -- 基础类型 ORDER BY oid;在 pgrust 源码中pg_type表的结构定义与属性编号Anum_pg_type_*都维护在types_catalog/src/pg_type.rs如果你想从源码层面了解类型系统的实现这是一个绝佳的入口。总结pgrust 数据类型兼容 PostgreSQL迁移零成本通过这份 pgrust 数据类型详解清单可以看到pgrust 在数据类型上做到了与 PostgreSQL 的像素级兼容——从数值类型的存储格式到 JSONB 的二进制布局再到时间戳的微秒计数全部保持一致。这意味着你现有的 PostgreSQL 数据可以无缝迁移到 pgrust你已有的 SQL 知识可以立即复用你还能享受到 Rust 重写带来的性能提升。无论你是想尝鲜用 Rust 重写的 PostgreSQL还是想找一个更快的数据分析引擎pgrust 的数据类型体系都值得你深入了解。下一步不妨从数值类型和 JSONB 开始上手体验一下这个更快的 PostgreSQL。【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门