数据库与存储 · 一页分清谁是谁

把一堆名字
放回各自的货架

MongoDB、Supabase、Neon、R2、S3、阿里云……这些名字被摆在一起讨论时,几乎总是错位比较——它们根本不站在同一层。先把层分清,选型就只剩三个问题。

// 面向产品、运营与刚接触后端的同学 · 全文价格取自厂商官方定价页,2026-08-05 核

POSTGRES · MYSQL MONGODB · 文档型 REDIS · 键值 PGVECTOR · 向量 S3 · R2 · OSS SUPABASE · NEON SERVERLESS · BAAS
SCROLL / 向下滚动
01
The Category Error

为什么这份清单没法横着比

「MongoDB 和 Supabase 哪个好」这个问题本身是坏的——就像问「柴油发动机和 4S 店哪个好」。一个是引擎,一个是买法,还有一个是停车场。任何一次数据库选型,其实是三个独立的问题叠在一起。

L1 · SHAPE

数据形状

// 你要存的东西长什么样?

表格?JSON 文档?一个键换一个值?一张关系网?一串时间点?还是一坨谁也不关心内容的文件?这一层决定了引擎类型,改起来最贵——换形状 = 重写数据模型。

关系型文档型键值宽列向量时序对象存储
L2 · OPERATING MODEL

产品形态

// 谁替你运维?

同一个 PostgreSQL,可以自己装在服务器上、可以买云厂商的托管实例、可以买一个闲着会自动缩到零的 Serverless 版本、也可以买一个把认证和文件存储一起打包的后端平台。引擎没变,买法变了

自建云托管实例ServerlessBaaS 后端即服务
L3 · VENDOR

供应商与机房

// 数据落在谁的地盘?

AWS、Google、Azure、Cloudflare、阿里云、腾讯云……决定的不是技术,是延迟、合规、备案、发票和账单币种。同一个 Supabase,底下也是跑在别人的机房里。

国际超大规模云边缘网络派中国云独立专业厂商
你听到的名字它其实是什么站在哪一层
MongoDB一个文档型数据库引擎(也卖托管版 Atlas)L1 形状
PostgreSQL一个关系型数据库引擎,开源,谁都能装L1 形状
Supabase一个后端平台——底下就是 Postgres,外加认证、文件存储、实时订阅、自动生成的 APIL2 形态
Neon一家 Postgres 托管商——底下也是 Postgres,卖点是闲了缩到零、能像 Git 一样开数据库分支L2 形态
Amazon S3对象存储(存文件的),AWS 出品。「S3 API」已经成了行业事实标准L1 形状 + L3 供应商
Cloudflare R2对象存储,和 S3 同类同接口,卖点是出网流量不要钱L1 形状 + L3 供应商
阿里云一整个云厂商——里面有 OSS(对象存储)、RDS(托管数据库)、Tair/Redis、PolarDB……不是一个产品,是一排货架L3 供应商
Takeaway

正确的比较是同层比同层:MongoDB 该和 Postgres 比(形状),Supabase 该和 Firebase 比(形态),R2 该和 S3、OSS 比(同形状不同供应商)。跨层比出来的结论,基本都是错的。

0
种数据形状
(其中 1 种严格说不是数据库)
0
档「谁替你运维」
从自己装到全托管
0×
同一份用量
最贵与最便宜的月账单差
$0
R2 的出网流量单价
这是它存在的全部理由
02
Layer 1 · Data Shapes

第一刀:你要存的东西长什么样

数据库的分类不是按「新旧」或「快慢」,是按它假设你的数据长什么样、你会怎么问它。每一种形状都是在某个假设下把性能做到极致,同时在别的假设下变得很难用——没有一种是「更先进」的

Relational · SQL关系型

数据是规整的表格,表和表之间用外键连起来。会算数、会保证「要么全成要么全不成」(事务)、会拦住不合法的数据。

代表:PostgreSQL · MySQL · SQLite · SQL Server

默认答案ACID 事务任意维度查询
不擅长:每秒几十万条写入的日志洪水;schema 每天都在变形的野生数据。

Document文档型

一条记录就是一份 JSON 文档,可以深层嵌套,每份长得不一样也没关系。整份读、整份写最舒服。

代表:MongoDB · Firestore · CouchDB · DynamoDB(文档模式)

形状天生不齐整份读写水平分片
不擅长:跨集合 join、跨文档强一致报表——那些要么做不了,要么要你在应用层自己缝。

Key-Value键值

一个键换一个值,没有查询语言、没有条件筛选。放弃了一切灵活性,换来微秒级读写。常驻内存。

代表:Redis · Memcached · Upstash · Cloudflare KV

缓存会话/登录态限流排行榜
不擅长:当主库。它的定位是「挡在主库前面的那层」,不是「代替主库的那个」。

Wide-column宽列

「写得比读得多得多」设计:数据按分区键散到几十上百台机器上,写入几乎线性扩展。

代表:Cassandra · ScyllaDB · HBase · Bigtable

海量写入时间线/消息IoT
代价:查询模式必须提前定死——建表时就要想好将来怎么查,事后想换个维度问,往往只能重灌一遍数据。

Graph

把「关系本身」当成一等公民存起来。问「谁的朋友的朋友买过这个」时,关系型要 join 五层,图库一次遍历。

代表:Neo4j · Amazon Neptune · TigerGraph

社交网络风控团伙识别知识图谱
现实:绝大多数业务的关系深度不超过两跳——两跳以内,Postgres 加个索引就够了,多养一个系统不划算。

Vector向量

AI 时代新增的一类。把文字/图片压成一串数字,然后按「意思像不像」而不是「字面等不等」来找——RAG、语义搜索的地基。

代表:pgvector(Postgres 插件)· Pinecone · Qdrant · Milvus · Weaviate

语义检索RAG 知识库推荐去重
先别急着上专门的:百万级向量以内,pgvector 直接让你现有的 Postgres 兼职就够,能少一个系统就少一个。

Time-series时序

数据永远只按时间往后追加,查询永远是「最近 N 小时的平均值/峰值」。针对这个模式做了极致压缩和窗口聚合。

代表:InfluxDB · TimescaleDB(Postgres 插件)· Prometheus

监控指标设备上报行情
不擅长:改历史数据、按非时间维度做复杂关联。它的世界里时间是主键。

Columnar · OLAP列存分析型

把同一列的数据连着放。扫十亿行只取两列时,比行存快一到两个数量级。为报表而生,不为交易而生

代表:ClickHouse · BigQuery · Snowflake · DuckDB

报表看板行为分析日志检索
不擅长:单行更新、高频小事务。它跟业务库是两套东西,见下一节。

Object Storage对象存储 · 不是数据库

整个文件:图片、视频、PDF、备份包。给一个 key 换回一坨字节,不能按内容查询。便宜到可以当垃圾桶用,也确实该当垃圾桶用。

代表:S3 · Cloudflare R2 · 阿里云 OSS · Google GCS · Backblaze B2

图片视频备份归档数据湖
标准配法:文件放对象存储,「这个文件是谁的、叫什么、什么时候传的」放数据库——两边各存各的,用一个 key 串起来。
一条务实的经验

没想清楚之前,选 PostgreSQL。它能当关系型(本行)、当文档型(JSONB 字段)、当向量库(pgvector)、当时序库(TimescaleDB)、当队列(表 + FOR UPDATE SKIP LOCKED)、当全文搜索(tsvector)。这些兼职每一项都不是同类里最强的,但「少一个要运维的系统」这件事的价值,通常大于那点性能差。等某一项真的成了瓶颈,再把它单独拆出去。

03
A Second Axis · Transactions vs Analytics

还有一条正交的线:交易 vs 分析

这条线经常被忽略,然后在某个周一早上以「运营点开报表页,全站卡了 40 秒」的形式出现。它和上一节的八种形状互相垂直——同样是关系型,为交易设计的和为分析设计的是两种生物。

OLTP · 联机事务(业务库)

  • 典型问题:把第 8848 号订单的状态改成已支付
  • 访问特征:极高频、每次只碰几行、读写混合
  • 存储方式:行存——一行数据物理上连着放
  • 衡量指标:单次响应几毫秒、每秒几千次
  • 代表:PostgreSQL / MySQL / MongoDB
  • 它怕什么:一条 GROUP BY 扫了两亿行,把连接池和内存全占了

OLAP · 联机分析(分析库)

  • 典型问题:过去 90 天各城市各渠道的转化率排名
  • 访问特征:低频、每次扫上亿行、几乎只读
  • 存储方式:列存——同一列的数据连着放,压缩率极高
  • 衡量指标:单次几秒到几十秒、吞吐优先
  • 代表:ClickHouse / BigQuery / Snowflake / DuckDB
  • 它怕什么:让它一行一行地改数据
什么时候该分家

小规模(几百万行以内)不用分——业务库上加索引、加只读副本,报表直接查就行,多养一套系统不值。真该分家的信号有三个: 报表查询开始拖慢线上写入; 单表过亿行、聚合动辄几十秒; 要把多个来源的数据合起来算(订单 + 埋点 + 广告消耗)。到那时的标准做法是:业务库照旧写,另起一条管道把数据同步到列存库里算报表。

04
Layer 2 · Who Runs It

第二刀:谁在凌晨三点起床

同一个 PostgreSQL,有四种买法。从下往上,你付的钱越来越多,你要操的心越来越少——而且这条曲线不是线性的,最陡的一段在第一档到第二档之间。

L0
自己装
租一台服务器,apt install postgresql 你管:装机、调参、备份、恢复演练、版本升级、主从复制、监控告警、磁盘扩容、安全补丁。账单是最低的(一台 4C8G 云主机几十块一个月),代价是凌晨三点磁盘满的时候起床的人是你。适合:有专职运维、或者纯个人项目挂了也不要紧。
L1
云托管实例
买一台「已经装好并且有人看着」的数据库 代表:AWS RDS / Aurora · 阿里云 RDS · MongoDB Atlas 专用集群。云厂商管机器、备份、故障切换、补丁;你还是要管 schema、索引、容量规划、连接数。计费是按小时算固定实例费——半夜没人用也照付。MongoDB Atlas 最小的专用集群 M10 是 $0.08/小时,约 $56.94/月
L2
Serverless
按真实用量计费,闲下来自动缩到零 代表:Neon · Aurora Serverless v2 · PlanetScale · Turso。Neon 的定价是存储 $0.35/GB·月 + 计算 $0.106/CU·小时(Launch 档),挂起状态的计算费用是 $0。真正的杀手锏其实不是省钱,是能像 Git 一样给数据库开分支——每个 PR 一套带真实数据的独立环境。代价:冷启动延迟、连接模型受限。
L3
BaaS 后端即服务
不只给你数据库,把整个后端一起给了 代表:Supabase · Firebase · Appwrite。除了数据库,还打包了用户认证、文件存储、实时订阅、自动生成的 REST/GraphQL 接口、边缘函数。一个前端工程师可以不写后端就上线一个产品。Supabase Pro 起价 $25/月。代价:认证体系和权限模型跟这家绑定,搬家成本主要不在数据,在这些周边。

// 注意:这四档不是「越往上越好」。团队里有运维、负载稳定又跑得久,L1 的固定实例通常比 L2 的按量计费更便宜也更可预测。

最常见的错位

「Supabase 和 Neon 哪个好」——它们不在同一个档。Neon 卖的是「一个会缩到零、能开分支的 Postgres」(L2);Supabase 卖的是「一整套后端,其中数据库部分是 Postgres」(L3)。如果你已经有完整后端、只缺一个数据库,Neon 更合身;如果你想少写一整层后端,Supabase 省下的是人月而不是几十美元。

05
Layer 3 · Where It Physically Lives

第三刀:数据落在谁的地盘

这一层跟技术几乎无关,跟能不能用、贵不贵、合不合规关系极大。而且它有个反直觉的地方:那些看起来「独立」的厂商,机房往往还是租的前三家的。

Hyperscaler国际超大规模云

AWS · Google Cloud · Azure

什么都有,企业采购和合规文档最齐全。代价是复杂度出网流量费——账单上最吓人的那一栏几乎永远是数据传出。

Edge Native边缘网络派

Cloudflare(R2 / D1 / KV / Durable Objects)

从 CDN 长出来的一整套存储。杀手锏只有一条但足够致命:出网流量不收费。代价是产品线年轻、单产品深度不如老牌。

China Cloud中国云

阿里云 · 腾讯云 · 华为云

国内用户访问延迟低、能开发票、能过等保。硬约束是域名备案与数据出境规定。接口大多兼容 S3 但不完全兼容,SDK 要用自家的。

Independent独立专业厂商

Supabase · Neon · MongoDB Atlas · PlanetScale · Upstash

开发体验最好、上手最快。但注意:它们大多跑在 AWS/GCP/Azure 的机房里——你以为绕开了超大规模云,其实只是多了一层中间商(换来的是好得多的产品)。

一个我们踩过的真问题:大陆可达性

国外的托管数据库在中国大陆不保证能连上,而且是「有时能有时不能」这种最难排查的形态。2026-07-28 我们在成都实测过一次:*.supabase.co 的 DNS 解析直接失败,同机 akke.vercel.app 超时。如果你的用户或员工在国内办公,这一条应该排在所有技术对比之前——它不是「慢一点」,是「打不开」。对应的解法只有几条:国内云 + 备案、双活部署、或者接受「这个系统只给能翻墙的人用」。

06
Object Storage · Follow The Money

S3 / R2 / OSS:存钱不多,取钱要命

对象存储这一类里,四家的技术差别小到可以忽略——接口几乎都兼容 S3,功能都够用。真正把它们分开的是一件事:你把文件下载出去的时候,收不收钱、收多少。这一栏的差距不是百分之几,是几十倍。

Egress · 出网流量单价
把 1 GB 数据从存储里下载到公网,要付多少钱(美元)
Amazon S3US East · 首 10TB$0.090
阿里云 OSS忙时 ¥0.50≈$0.069
阿里云 OSS闲时 ¥0.25≈$0.035
Backblaze B2超出免费额度后$0.010
Cloudflare R2无上限$0.000
// S3 每月前 100 GB 出网免费,超出后首 10TB 为 $0.09/GB,量级越大单价越低(40TB 档 $0.085、100TB 档 $0.07)。
// B2 提供「每月免费出网额度 = 3 倍平均存储量」,超出部分 $0.01/GB。
// 阿里云 OSS 只收公网流出方向,上传与内网流量免费;闲时为 00:00–08:00。汇率按 ¥7.2/$ 折算。
Storage · 存储单价
存 1 GB 数据一个月要多少钱(标准/热存储档,美元)
Amazon S3Standard 首 50TB$0.0230
阿里云 OSS标准型 LRS ¥0.12≈$0.0167
Cloudflare R2Standard$0.0150
Backblaze B2$6 / TB / 月$0.0060
// 注意这一栏的差距只有 约 4 倍,而上一栏是无穷倍——所以「哪家便宜」几乎完全由你的下载量决定,而不是存量。
// 冷数据还能再便宜一个量级:S3 Glacier Deep Archive $0.00099/GB·月,但取回要等几小时且另收费。
Real Bill · 同一份用量的月账单
场景:常年存 1 TB 素材,每月被下载 10 TB(一个中等流量的图片/视频站)
Amazon S3≈$914
阿里云 OSS按忙时价≈$711
Backblaze B2≈$76
Cloudflare R2≈$15
// 算法:存储 1000 GB × 单价 + 出网 10000 GB × 单价(S3 扣掉 100GB 免费额度、B2 扣掉 3 倍存量的免费额度)。
// 未计入请求次数费(R2 的 Class A 写请求 $4.50/百万、Class B 读请求 $0.36/百万),量级通常在几美元内。
// 结论:同一份用量,最贵的比最便宜的贵约 61 倍,差额几乎全部来自出网流量。
怎么选

用户主要在国内 → 阿里云 OSS(备案 + 延迟 + 发票,这三条没有替代品)。面向海外、下载量大 → Cloudflare R2,出网免费这一条直接把账单的主要项抹平了。纯冷备份、极少取回 → Backblaze B2 或 S3 Glacier。已经重度绑定 AWS 生态(Lambda、Athena、EMR 都在用)→ 留在 S3,跨云搬运的隐性成本会吃掉省下的钱。

迁移成本几乎为零,这点很重要

这四家都兼容 S3 的 API。实际代码里换一家,通常只改三行:endpoint、access key、bucket 名。我们自己调 Cloudflare R2 用的就是 AWS 官方的 @aws-sdk/client-s3,一行业务代码都没改。所以这一类不值得纠结太久——先跑起来,账单变难看了再换

07
The Postgres Family Feud

同一个 Postgres,四种买法

Supabase、Neon、RDS、自建——底下跑的是同一个开源 PostgreSQL,SQL 一模一样,数据也能互相导。区别全在「附赠什么」和「怎么计费」。所以选错了不致命,但选对能省很多事。

方案它额外给你什么计费方式什么时候选它
Supabase 认证 · 文件存储 · 实时订阅 · 自动 REST API · 边缘函数 · 内置行级安全(RLS)后台 免费档 $0
Pro 起 $25/月
小团队想少写一整层后端;需要多租户隔离且愿意用 RLS 做硬边界
Neon 缩到零 · 数据库分支(像 Git 一样给每个 PR 开一套带真实数据的库)· 存算分离 免费档 $0
存储 $0.35/GB·月
计算 $0.106/CU·时起
已有完整后端只缺数据库;波峰波谷极大;预览环境要多套
AWS RDS / Aurora VPC 内网 · IAM 权限体系 · 与 AWS 全家桶深度打通 · 企业级 SLA 与合规文档 按实例小时数
不用也付
公司已在 AWS 上;有合规审计要求;负载稳定可预测
阿里云 RDS / PolarDB 境内低延迟 · 中文工单 · 发票与等保合规 · 与国内生态打通 按实例包年包月
或按量
用户和员工在国内;需要备案与合规落地
自建 PostgreSQL 什么都不给你,但也什么都不拦你——任意插件、任意版本、任意参数 一台云主机的钱 有专职运维;或纯内部工具挂了也不要紧;或成本压到极限

Neon 的「数据库分支」到底是什么

传统做法里,每个开发环境要么共用一个测试库(互相踩),要么各自灌一份假数据(跟线上不像)。Neon 把存储和计算拆开后,开一个分支只是记一个指针——几秒钟给你一套「和生产数据一模一样」的独立库,用完删掉不留痕。

对应的工作流是:每开一个 PR,CI 自动开一个数据库分支跑迁移和测试,PR 合并即销毁。这是它相对其他 Postgres 托管商最难被抄走的一条

Supabase 的 RLS 是真正值钱的那部分

行级安全(Row Level Security)是 Postgres 自带的能力,但 Supabase 把它做成了默认路径:隔离规则写在数据库里,由数据库强制执行,而不是散落在几百个接口里靠人记得加一句 WHERE org_id = ...

差别在漏一次的后果:应用层过滤漏一个接口 = 跨租户串数据;RLS 漏一个接口 = 查出来是空的。一个是事故,一个是 bug。

08
When Document Databases Are Actually Right

MongoDB 到底什么时候是对的

MongoDB 常年被两种偏见夹击:一种说「NoSQL 更现代更快」,一种说「Mongo 玩具而已」。两种都不对。它是一个针对特定形状做到极致的正经数据库,问题在于那个形状比很多人以为的要窄。

✓ 它真正对的场景

  • 数据形状天生不齐:每个客户的表单字段都不一样,硬塞进固定表结构会长出 60 个 null
  • 整份读、整份写:一个订单连着它的 12 个商品行一起取出来,天然就该是一份文档
  • 嵌套很深且不需要拆开查:产品目录、配置快照、第三方 API 的原始回包
  • 写入量大、要水平分片:分片是它的一等公民,不是后加的补丁
  • 团队全是 JS/TS:存进去取出来都是 JSON,心智负担确实低

✗ 它常被误用的场景

  • 「因为不用设计 schema」:schema 不会消失,只是从数据库挪进了应用代码,变成没人维护的隐式契约
  • 业务本来就是规整的表:用户、订单、商品、支付——这就是关系型的主场
  • 要跨集合关联出报表$lookup 能做但很难受,这活儿 SQL 一句就完了
  • 需要强约束:外键、唯一性组合、检查约束这类「数据库替你把关」的能力,关系型强得多
  • 只是想存点 JSONPostgres 的 JSONB 已经吃掉了这块的大半场景——能存能查能建索引,还不用多养一个系统
一句话判据

问自己:「我的数据是不是天生就不该被拆成表?」如果答案是「其实可以拆,只是懒得设计」——那就该用关系型,现在的懒会在半年后以「数据不一致」的形式还回来。如果答案是「真的拆不了,每份都长得不一样」——MongoDB 是对的,而且没有更好的替代。

价格档

MongoDB Atlas:M0 免费(512 MB,够学和做 demo)· Flex $0.011/小时起、按每秒操作数分档,上限约 $30/月 · M10 专用集群 $0.08/小时 ≈ $56.94/月(2 vCPU / 2 GB RAM / 10–128 GB 存储)。免费档和 Flex 档不收出网流量费,专用集群按底层云厂商的费率收。

09
Decision Tree

我这个东西该放哪

把前面三刀合起来,实际选型只需要顺着问下去。绝大多数项目会停在最左边那两条路上——这是好事,不是没追求。

你要存的是什么? 整个文件 能查的数据 FILES / BLOBS 文件:图片 · 视频 · 备份 STRUCTURED DATA 业务数据:要按条件查 DOMESTIC 用户主要在国内 → 阿里云 OSS GLOBAL · EGRESS 出海 · 下载量大 → Cloudflare R2 STRUCTURED + ACID 形状规整、要事务 → PostgreSQL(默认) SHAPE VARIES 形状天生就不齐 → MongoDB SPECIAL ACCESS 缓存 / 指标 / 语义检索 → Redis · 时序 · pgvector WHO RUNS IT 要整套后端 → Supabase 只要库 / 要分支 → Neon
读法

这棵树的默认路径是「文件进对象存储 · 其余全进 Postgres」——90% 的项目到这里就该停了。往右边分叉之前,先确认你手上有具体的、量化的理由(比如「单表两亿行、聚合查询 40 秒」),而不是「听说这个更适合」。多养一个数据库的成本,是长期的、每天都在付的。

10
Ten Myths

十条最贵的误解

这些说法在会议室里出现的频率极高,而每一条都会在几个月后变成一笔具体的账单或一次具体的事故。

MYTH 01「NoSQL 比 SQL 快」

快在特定访问模式下,不是普遍更快。用同样的索引、查同样的东西,Postgres 通常不输,还多送你事务和 join。「快」这个词单独出现时,基本没有信息量。

MYTH 02「文档型不用设计 schema」

schema 只是换了个地方住——从数据库挪进了应用代码,而且没人给它写迁移脚本。一年后你会有五个版本的文档形状同时存在,全靠 if (doc.v2) 兜。

MYTH 03「Supabase 是开源版 Firebase」

定位像,数据模型完全不同。Supabase 底下是关系型的 Postgres,Firebase 的 Firestore 是文档型。照着 Firebase 的思路建 Supabase 的表,会得到一个很难查的数据库。

MYTH 04「S3 很便宜」

存便宜,取不便宜。1 TB 存一个月 $23,但被下载 10 TB 就是 $891。对象存储的账单杀手永远是出网流量和请求次数,不是存储量。

MYTH 05「R2 是免费的」

免费的只有出网流量这一项。存储 $0.015/GB·月照收,写请求 $4.50/百万、读请求 $0.36/百万照收。它解决的是账单里最大的那一项,不是全部。

MYTH 06「做 RAG 必须上向量数据库」

百万级向量以内,pgvector 让你现有的 Postgres 直接兼职就够了。省下的不是订阅费,是又一套要备份、要监控、要和主库对账的系统。真到瓶颈再拆不迟。

MYTH 07「Serverless 一定更省钱」

波峰波谷大、经常闲置时确实省。但持续满载的生产库,按 CU-小时计费往往比同规格的固定实例更贵。Serverless 真正的价值常常是弹性和分支,不是省钱。

MYTH 08「报表直接查业务库就行」

数据量小的时候确实行,这也是对的选择。但一条扫全表的聚合会把连接池和内存吃光,让线上写入一起卡住。这个故障几乎总是在业务变好之后才出现。

MYTH 09「阿里云就是国内的 AWS,接口一样」

OSS 大体兼容 S3 API,但签名细节、部分头字段、生命周期规则并不完全一致,实际项目里通常还是用自家 SDK。「兼容」不等于「一样」,这个差别会在上线前一天冒出来。

MYTH 10「先按最大规模选,免得以后迁移」

为想象中的一亿用户选了一套要三个人运维的架构,是创业公司最常见的自伤。迁移的成本是确定的、可估算的;提前上重型架构的成本是每天都在付的。

11
Case Study · What We Actually Run

我们自己是怎么选的

Akke 是一套跑在生产上的多租户获客系统:抓评论、判意向、拟话术、真发私信。数据量不小、形状也不单一——但整套系统的存储只有两个:一个 Postgres,一个对象存储。这不是省事,是刻意的。

主库
Supabase
PostgreSQL(BaaS 档)· 所有业务数据的唯一事实源 租户、账号池、抓来的视频与评论、会话状态机、消息队列、每日统计,全在一个库里。多租户隔离用 行级安全 RLS 做硬边界,而不是在几百个接口里手写过滤条件。
向量
pgvector
知识库检索没有独立向量数据库 装一个 pgvector 插件,向量就存在同一个 Postgres 的同一张表旁边。好处非常具体:检索结果和业务数据能直接 join,不用跨两个系统对账,也不用担心两边数据不同步。
文件
Cloudflare R2
图片、素材、图集全在 R2,数据库里只存 key 和元信息 用的是 AWS 官方的 @aws-sdk/client-s3——因为 R2 兼容 S3 接口,SDK 都不用换。选它的理由就一条:这些图会被反复下载,而 R2 的出网流量不要钱
队列
还是 Postgres
没有 Redis、没有 Kafka、没有 BullMQ 任务队列就是数据库里的两张表(scrape_jobs / message_queue)加一个状态字段,worker 轮询认领。到目前的量级完全够用,而且白捡了一个好处:任务状态和业务数据在同一个事务里,不会出现「消息发了但库没写成」。

// 取向:能不多加一个系统就不加。每多一个存储,就多一套备份、监控、权限、故障预案和「两边数据对不上」的可能。

代价也要说清楚

这套选法的账不是没有:Supabase 在国内直连不稳(前面那条成都实测就是它);Postgres 当队列在吞吐量继续涨上去之后迟早要换;pgvector 到千万级向量会顶不住。这些都是已知的、可预期的、到时候再解决的问题——比起为了它们提前上三套中间件,我们认为现在这样更划算。

12
Cheat Sheet

一页速查

前面所有内容压成一张表。价格均为按量付费的公开牌价,取自各厂商官方定价页,2026-08-05 核——只用于横向量级对比,实际账单请以厂商计算器为准。

产品数据形状运维形态入门价 / 关键单价一句话
关系型数据库 · Relational
PostgreSQL关系型开源引擎免费(自己找地方跑)没想清楚就选它,能兼职一大半别的活
Supabase关系型(Postgres)BaaS免费档 / Pro $25 起
超出:DB $0.125/GB、出网 $0.09/GB
把整个后端一起给你,RLS 是真值钱的那部分
Neon关系型(Postgres)Serverless免费档 / 存储 $0.35 GB·月
计算 $0.106 CU·时起
闲了缩到零,能给数据库开 Git 式分支
AWS RDS / Aurora关系型托管实例按实例小时数已在 AWS 上、要合规和 VPC 内网时的答案
阿里云 RDS / PolarDB关系型托管实例按实例包年包月 / 按量用户在国内、要备案和发票时的答案
其它形状 · Other Shapes
MongoDB Atlas文档型托管 / ServerlessM0 免费 · Flex $0.011/时起(≤$30/月)
M10 专用 $0.08/时 ≈ $56.94/月
数据形状真的不齐时最好的选择
Redis / Upstash键值托管 / Serverless按内存或按请求数缓存、会话、限流;不要拿它当主库
ClickHouse列存 OLAP开源 / 托管开源免费 · Cloud 按用量报表和行为分析扫亿行的场子
pgvector向量Postgres 插件免费(跟着主库走)百万级以内先用它,别急着上专门的向量库
Pinecone / Qdrant向量托管按索引规模 / 按用量向量真上量、或要复杂过滤检索时再来
Neo4j开源 / 托管社区版免费 · Aura 按实例关系深度超过两跳才划算
对象存储 · Object Storage(不是数据库)
Amazon S3对象存储托管存 $0.023/GB·月
出网 $0.09/GB(前 100GB 免费)
行业事实标准,生态最全,出网最贵
Cloudflare R2对象存储托管存 $0.015/GB·月
出网 $0 · 写 $4.50/百万、读 $0.36/百万
下载量一大就没有对手;兼容 S3 接口
阿里云 OSS对象存储托管存 ¥0.12/GB·月(标准 LRS)
出网 ¥0.50/GB 忙时 · ¥0.25 闲时
国内用户的默认答案,备案与发票齐全
Backblaze B2对象存储托管存 $6/TB·月
出网免费额度 = 3× 存量,超出 $0.01/GB
冷备份归档最便宜的一档
一句话总括:先分层——形状(存的东西长什么样)决定引擎、形态(谁替你运维)决定账单结构、供应商(在谁的机房)决定能不能用和合不合规;然后走默认路径——文件进对象存储,其余全进 Postgres;最后只在拿到具体的、量化的瓶颈证据时才分叉。多养一个数据库的代价是每天都在付的,而迁移的代价只付一次。