PostgreSQL
世界上最先进的开源关系型数据库。
PostgreSQL 是经过 30 多年实战检验、完全符合 ACID 的 SQL 数据库,原生支持 JSONB、全文搜索、地理空间索引以及庞大的扩展生态。Pier 部署官方 Docker 镜像,提供自动备份、时间点恢复以及一键副本。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 PostgreSQL。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。
什么是 PostgreSQL?
PostgreSQL(“Postgres”)是一个开源的对象关系型数据库,已持续开发 30 多年。 它是各行各业新应用后端的默认选择 — 从一人创业公司到 Apple、Instagram、 Reddit,以及欧洲银行业的大部分系统。
它与 MySQL 等”简易”数据库的区别在于类型系统、查询规划器和扩展模型的深度。 JSONB 让它表现得像文档数据库。PostGIS 把它变成地理空间服务器。pgvector 让它成为向量搜索引擎。TimescaleDB 添加时序能力。你很少”长大到超越”Postgres —— 你在它之上叠加扩展。
Pier 如何部署它
Pier 使用官方 postgres Docker 镜像,将 /var/lib/postgresql 挂载为
数据卷。默认版本为 latest(当前 PostgreSQL 18);也提供 18-alpine、
17-alpine 和 16-alpine。
单节点部署时,Pier 提供强密码、创建容器、在内部网络暴露 5432 端口, 并(可选)通过 Traefik 发布。集群部署时,Pier 切换到 bitnami/postgresql 镜像,开箱即用支持流复制 — 1 主 + N 只读副本,可配置 2 到 5 节点总数。
备份按计划运行(按数据库或集群级别),使用 pg_dump 自定义格式。备份
可上传到 Pier 的 S3 Storages 中配置的任何 S3 兼容存储。
何时不要使用 PostgreSQL
对于嵌入式单进程应用,SQLite 更简单更轻。对于无关联且亚毫秒延迟目标的 纯键值工作负载,Redis 或 Valkey 是更好的选择。对于无事务要求的 PB 级 OLAP,ClickHouse 在原始吞吐量上取胜。
对于几乎其他所有情况 — Postgres。
核心功能
完整 ACID 与 MVCC
真正的串行隔离、外键、触发器、存储过程(plpgsql、Python、JS、Rust)。多版本并发控制,读取无锁。
丰富的类型系统
原生 JSONB(带索引和运算符)、数组、范围、UUID、几何类型、自定义类型、枚举。JSONB 速度足够快,使 Postgres 经常替代文档数据库。
流复制与 WAL
同步或异步物理副本、跨版本迁移和 CDC 的逻辑复制、通过 WAL 归档实现时间点恢复。
任何规模都高性能
基于代价的查询规划器、并行扫描、十亿行表的 BRIN 索引、按范围/列表/哈希分区、部分索引和表达式索引。
扩展生态
PostGIS(地理空间)、TimescaleDB(时序)、pgvector(AI 嵌入)、pg_partman、pg_stat_statements、pg_repack、外部数据封装器 — Postgres 是一个可以"成长进入"的数据库。
Pier 支持集群
通过 bitnami/postgresql 镜像实现 1 主 + N 只读副本的流复制。Pier 处理健康检查和连接路由。
应用场景
SaaS 应用后端
新应用后端的默认选择。与 Prisma、Sequelize、SQLAlchemy、Hibernate、GORM、ActiveRecord、Diesel 等主流 ORM 兼容。
行级安全的多租户数据
原生行级安全策略在数据库层强制租户隔离 — 而非应用层 — 实现无懈可击的多租户。
地理空间工作负载(搭配 PostGIS)
地图、路线、地理围栏、车队跟踪 — PostGIS 添加 1000+ 空间函数、R 树索引、投影和拓扑。
AI / 向量搜索(搭配 pgvector)
通过 HNSW 或 IVFFlat 索引存储和查询 1536 维嵌入。如果 Postgres 已持有其他数据,可跳过专用向量数据库。
分析与 BI 数据源
直接连接 Metabase、Superset、Grafana、Tableau。物化视图和分区可轻松处理数亿行数据。
代码示例
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
profile JSONB NOT NULL DEFAULT '{}'::jsonb
);
CREATE INDEX users_created_idx ON users (created_at DESC);
CREATE INDEX users_profile_gin ON users USING gin (profile); SELECT id, email
FROM users
WHERE profile @> '{"plan": "pro"}'
AND (profile->>'signups')::int > 5
ORDER BY created_at DESC
LIMIT 50; ALTER TABLE invoices ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation
ON invoices
FOR ALL
USING (tenant_id = current_setting('app.tenant_id')::uuid);
-- 每个请求:
SET app.tenant_id = '550e8400-e29b-41d4-a716-446655440000'; CREATE TABLE events (
id BIGSERIAL,
occurred_at TIMESTAMPTZ NOT NULL,
payload JSONB
) PARTITION BY RANGE (occurred_at);
CREATE TABLE events_2026_05 PARTITION OF events
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01'); 对比
| vs MySQL / MariaDB | MySQL 更简单且基础速度仍然很快,但 Postgres 在 JSON、全文搜索、地理空间、部分索引、CTE 和 SQL 标准合规方面更胜一筹。任何非平凡场景都选 Postgres。 |
| vs MongoDB | Postgres 的 JSONB 与 Mongo 的灵活性相当,同时保留连接、事务和 SQL。大多数因"模式灵活"选 Mongo 的团队最终都迁移回来了。 |
| vs SQLite | SQLite 在嵌入式和单写入器应用中无可匹敌。Postgres 接管你需要并发写入、网络访问或复制的场景。 |
| vs 托管 Postgres(RDS、Cloud SQL、Supabase) | 在 Pier 上自托管为你提供相同的 Postgres,成本仅为零头 — 中小工作负载通常节省 10–30×。失去 SaaS UI,但获得控制权和可移植性。 |
常见问题
Pier 默认部署哪个 PostgreSQL 版本?
备份是自动的吗?
可以运行副本吗?
如何添加 PostGIS 或 pgvector 等扩展?
支持行级安全吗?
暴露哪些端口?
我现有的 ORM(Prisma、Sequelize、Diesel)能连接吗?
相关服务
在你的 VPS 上部署
PostgreSQL 是经过 30 多年实战检验、完全符合 ACID 的 SQL 数据库,原生支持 JSONB、全文搜索、地理空间索引以及庞大的扩展生态。Pier 部署官方 Docker 镜像,提供自动备份、时间点恢复以及一键副本。
部署此服务 →