Relational · SQL关系型
数据是规整的表格,表和表之间用外键连起来。会算数、会保证「要么全成要么全不成」(事务)、会拦住不合法的数据。
代表:PostgreSQL · MySQL · SQLite · SQL Server
MongoDB、Supabase、Neon、R2、S3、阿里云……这些名字被摆在一起讨论时,几乎总是错位比较——它们根本不站在同一层。先把层分清,选型就只剩三个问题。
// 面向产品、运营与刚接触后端的同学 · 全文价格取自厂商官方定价页,2026-08-05 核
「MongoDB 和 Supabase 哪个好」这个问题本身是坏的——就像问「柴油发动机和 4S 店哪个好」。一个是引擎,一个是买法,还有一个是停车场。任何一次数据库选型,其实是三个独立的问题叠在一起。
表格?JSON 文档?一个键换一个值?一张关系网?一串时间点?还是一坨谁也不关心内容的文件?这一层决定了引擎类型,改起来最贵——换形状 = 重写数据模型。
同一个 PostgreSQL,可以自己装在服务器上、可以买云厂商的托管实例、可以买一个闲着会自动缩到零的 Serverless 版本、也可以买一个把认证和文件存储一起打包的后端平台。引擎没变,买法变了。
AWS、Google、Azure、Cloudflare、阿里云、腾讯云……决定的不是技术,是延迟、合规、备案、发票和账单币种。同一个 Supabase,底下也是跑在别人的机房里。
| 你听到的名字 | 它其实是什么 | 站在哪一层 |
|---|---|---|
| MongoDB | 一个文档型数据库引擎(也卖托管版 Atlas) | L1 形状 |
| PostgreSQL | 一个关系型数据库引擎,开源,谁都能装 | L1 形状 |
| Supabase | 一个后端平台——底下就是 Postgres,外加认证、文件存储、实时订阅、自动生成的 API | L2 形态 |
| Neon | 一家 Postgres 托管商——底下也是 Postgres,卖点是闲了缩到零、能像 Git 一样开数据库分支 | L2 形态 |
| Amazon S3 | 对象存储(存文件的),AWS 出品。「S3 API」已经成了行业事实标准 | L1 形状 + L3 供应商 |
| Cloudflare R2 | 对象存储,和 S3 同类同接口,卖点是出网流量不要钱 | L1 形状 + L3 供应商 |
| 阿里云 | 一整个云厂商——里面有 OSS(对象存储)、RDS(托管数据库)、Tair/Redis、PolarDB……不是一个产品,是一排货架 | L3 供应商 |
正确的比较是同层比同层:MongoDB 该和 Postgres 比(形状),Supabase 该和 Firebase 比(形态),R2 该和 S3、OSS 比(同形状不同供应商)。跨层比出来的结论,基本都是错的。
数据库的分类不是按「新旧」或「快慢」,是按它假设你的数据长什么样、你会怎么问它。每一种形状都是在某个假设下把性能做到极致,同时在别的假设下变得很难用——没有一种是「更先进」的。
数据是规整的表格,表和表之间用外键连起来。会算数、会保证「要么全成要么全不成」(事务)、会拦住不合法的数据。
代表:PostgreSQL · MySQL · SQLite · SQL Server
一条记录就是一份 JSON 文档,可以深层嵌套,每份长得不一样也没关系。整份读、整份写最舒服。
代表:MongoDB · Firestore · CouchDB · DynamoDB(文档模式)
一个键换一个值,没有查询语言、没有条件筛选。放弃了一切灵活性,换来微秒级读写。常驻内存。
代表:Redis · Memcached · Upstash · Cloudflare KV
为「写得比读得多得多」设计:数据按分区键散到几十上百台机器上,写入几乎线性扩展。
代表:Cassandra · ScyllaDB · HBase · Bigtable
把「关系本身」当成一等公民存起来。问「谁的朋友的朋友买过这个」时,关系型要 join 五层,图库一次遍历。
代表:Neo4j · Amazon Neptune · TigerGraph
AI 时代新增的一类。把文字/图片压成一串数字,然后按「意思像不像」而不是「字面等不等」来找——RAG、语义搜索的地基。
代表:pgvector(Postgres 插件)· Pinecone · Qdrant · Milvus · Weaviate
数据永远只按时间往后追加,查询永远是「最近 N 小时的平均值/峰值」。针对这个模式做了极致压缩和窗口聚合。
代表:InfluxDB · TimescaleDB(Postgres 插件)· Prometheus
把同一列的数据连着放。扫十亿行只取两列时,比行存快一到两个数量级。为报表而生,不为交易而生。
代表:ClickHouse · BigQuery · Snowflake · DuckDB
存整个文件:图片、视频、PDF、备份包。给一个 key 换回一坨字节,不能按内容查询。便宜到可以当垃圾桶用,也确实该当垃圾桶用。
代表:S3 · Cloudflare R2 · 阿里云 OSS · Google GCS · Backblaze B2
没想清楚之前,选 PostgreSQL。它能当关系型(本行)、当文档型(JSONB 字段)、当向量库(pgvector)、当时序库(TimescaleDB)、当队列(表 + FOR UPDATE SKIP LOCKED)、当全文搜索(tsvector)。这些兼职每一项都不是同类里最强的,但「少一个要运维的系统」这件事的价值,通常大于那点性能差。等某一项真的成了瓶颈,再把它单独拆出去。
这条线经常被忽略,然后在某个周一早上以「运营点开报表页,全站卡了 40 秒」的形式出现。它和上一节的八种形状互相垂直——同样是关系型,为交易设计的和为分析设计的是两种生物。
GROUP BY 扫了两亿行,把连接池和内存全占了小规模(几百万行以内)不用分——业务库上加索引、加只读副本,报表直接查就行,多养一套系统不值。真该分家的信号有三个:① 报表查询开始拖慢线上写入;② 单表过亿行、聚合动辄几十秒;③ 要把多个来源的数据合起来算(订单 + 埋点 + 广告消耗)。到那时的标准做法是:业务库照旧写,另起一条管道把数据同步到列存库里算报表。
同一个 PostgreSQL,有四种买法。从下往上,你付的钱越来越多,你要操的心越来越少——而且这条曲线不是线性的,最陡的一段在第一档到第二档之间。
apt install postgresql
你管:装机、调参、备份、恢复演练、版本升级、主从复制、监控告警、磁盘扩容、安全补丁。账单是最低的(一台 4C8G 云主机几十块一个月),代价是凌晨三点磁盘满的时候起床的人是你。适合:有专职运维、或者纯个人项目挂了也不要紧。
$0.08/小时,约 $56.94/月。
$0.35/GB·月 + 计算 $0.106/CU·小时(Launch 档),挂起状态的计算费用是 $0。真正的杀手锏其实不是省钱,是能像 Git 一样给数据库开分支——每个 PR 一套带真实数据的独立环境。代价:冷启动延迟、连接模型受限。
$25/月。代价:认证体系和权限模型跟这家绑定,搬家成本主要不在数据,在这些周边。
// 注意:这四档不是「越往上越好」。团队里有运维、负载稳定又跑得久,L1 的固定实例通常比 L2 的按量计费更便宜也更可预测。
「Supabase 和 Neon 哪个好」——它们不在同一个档。Neon 卖的是「一个会缩到零、能开分支的 Postgres」(L2);Supabase 卖的是「一整套后端,其中数据库部分是 Postgres」(L3)。如果你已经有完整后端、只缺一个数据库,Neon 更合身;如果你想少写一整层后端,Supabase 省下的是人月而不是几十美元。
这一层跟技术几乎无关,跟能不能用、贵不贵、合不合规关系极大。而且它有个反直觉的地方:那些看起来「独立」的厂商,机房往往还是租的前三家的。
AWS · Google Cloud · Azure
什么都有,企业采购和合规文档最齐全。代价是复杂度和出网流量费——账单上最吓人的那一栏几乎永远是数据传出。
Cloudflare(R2 / D1 / KV / Durable Objects)
从 CDN 长出来的一整套存储。杀手锏只有一条但足够致命:出网流量不收费。代价是产品线年轻、单产品深度不如老牌。
阿里云 · 腾讯云 · 华为云
国内用户访问延迟低、能开发票、能过等保。硬约束是域名备案与数据出境规定。接口大多兼容 S3 但不完全兼容,SDK 要用自家的。
Supabase · Neon · MongoDB Atlas · PlanetScale · Upstash
开发体验最好、上手最快。但注意:它们大多跑在 AWS/GCP/Azure 的机房里——你以为绕开了超大规模云,其实只是多了一层中间商(换来的是好得多的产品)。
国外的托管数据库在中国大陆不保证能连上,而且是「有时能有时不能」这种最难排查的形态。2026-07-28 我们在成都实测过一次:*.supabase.co 的 DNS 解析直接失败,同机 akke.vercel.app 超时。如果你的用户或员工在国内办公,这一条应该排在所有技术对比之前——它不是「慢一点」,是「打不开」。对应的解法只有几条:国内云 + 备案、双活部署、或者接受「这个系统只给能翻墙的人用」。
对象存储这一类里,四家的技术差别小到可以忽略——接口几乎都兼容 S3,功能都够用。真正把它们分开的是一件事:你把文件下载出去的时候,收不收钱、收多少。这一栏的差距不是百分之几,是几十倍。
用户主要在国内 → 阿里云 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,一行业务代码都没改。所以这一类不值得纠结太久——先跑起来,账单变难看了再换。
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 把存储和计算拆开后,开一个分支只是记一个指针——几秒钟给你一套「和生产数据一模一样」的独立库,用完删掉不留痕。
对应的工作流是:每开一个 PR,CI 自动开一个数据库分支跑迁移和测试,PR 合并即销毁。这是它相对其他 Postgres 托管商最难被抄走的一条。
行级安全(Row Level Security)是 Postgres 自带的能力,但 Supabase 把它做成了默认路径:隔离规则写在数据库里,由数据库强制执行,而不是散落在几百个接口里靠人记得加一句 WHERE org_id = ...。
差别在漏一次的后果:应用层过滤漏一个接口 = 跨租户串数据;RLS 漏一个接口 = 查出来是空的。一个是事故,一个是 bug。
MongoDB 常年被两种偏见夹击:一种说「NoSQL 更现代更快」,一种说「Mongo 玩具而已」。两种都不对。它是一个针对特定形状做到极致的正经数据库,问题在于那个形状比很多人以为的要窄。
null 列$lookup 能做但很难受,这活儿 SQL 一句就完了问自己:「我的数据是不是天生就不该被拆成表?」如果答案是「其实可以拆,只是懒得设计」——那就该用关系型,现在的懒会在半年后以「数据不一致」的形式还回来。如果答案是「真的拆不了,每份都长得不一样」——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 档不收出网流量费,专用集群按底层云厂商的费率收。
把前面三刀合起来,实际选型只需要顺着问下去。绝大多数项目会停在最左边那两条路上——这是好事,不是没追求。
这棵树的默认路径是「文件进对象存储 · 其余全进 Postgres」——90% 的项目到这里就该停了。往右边分叉之前,先确认你手上有具体的、量化的理由(比如「单表两亿行、聚合查询 40 秒」),而不是「听说这个更适合」。多养一个数据库的成本,是长期的、每天都在付的。
这些说法在会议室里出现的频率极高,而每一条都会在几个月后变成一笔具体的账单或一次具体的事故。
快在特定访问模式下,不是普遍更快。用同样的索引、查同样的东西,Postgres 通常不输,还多送你事务和 join。「快」这个词单独出现时,基本没有信息量。
schema 只是换了个地方住——从数据库挪进了应用代码,而且没人给它写迁移脚本。一年后你会有五个版本的文档形状同时存在,全靠 if (doc.v2) 兜。
定位像,数据模型完全不同。Supabase 底下是关系型的 Postgres,Firebase 的 Firestore 是文档型。照着 Firebase 的思路建 Supabase 的表,会得到一个很难查的数据库。
存便宜,取不便宜。1 TB 存一个月 $23,但被下载 10 TB 就是 $891。对象存储的账单杀手永远是出网流量和请求次数,不是存储量。
免费的只有出网流量这一项。存储 $0.015/GB·月照收,写请求 $4.50/百万、读请求 $0.36/百万照收。它解决的是账单里最大的那一项,不是全部。
百万级向量以内,pgvector 让你现有的 Postgres 直接兼职就够了。省下的不是订阅费,是又一套要备份、要监控、要和主库对账的系统。真到瓶颈再拆不迟。
波峰波谷大、经常闲置时确实省。但持续满载的生产库,按 CU-小时计费往往比同规格的固定实例更贵。Serverless 真正的价值常常是弹性和分支,不是省钱。
数据量小的时候确实行,这也是对的选择。但一条扫全表的聚合会把连接池和内存吃光,让线上写入一起卡住。这个故障几乎总是在业务变好之后才出现。
OSS 大体兼容 S3 API,但签名细节、部分头字段、生命周期规则并不完全一致,实际项目里通常还是用自家 SDK。「兼容」不等于「一样」,这个差别会在上线前一天冒出来。
为想象中的一亿用户选了一套要三个人运维的架构,是创业公司最常见的自伤。迁移的成本是确定的、可估算的;提前上重型架构的成本是每天都在付的。
Akke 是一套跑在生产上的多租户获客系统:抓评论、判意向、拟话术、真发私信。数据量不小、形状也不单一——但整套系统的存储只有两个:一个 Postgres,一个对象存储。这不是省事,是刻意的。
pgvector 插件,向量就存在同一个 Postgres 的同一张表旁边。好处非常具体:检索结果和业务数据能直接 join,不用跨两个系统对账,也不用担心两边数据不同步。
@aws-sdk/client-s3——因为 R2 兼容 S3 接口,SDK 都不用换。选它的理由就一条:这些图会被反复下载,而 R2 的出网流量不要钱。
scrape_jobs / message_queue)加一个状态字段,worker 轮询认领。到目前的量级完全够用,而且白捡了一个好处:任务状态和业务数据在同一个事务里,不会出现「消息发了但库没写成」。
// 取向:能不多加一个系统就不加。每多一个存储,就多一套备份、监控、权限、故障预案和「两边数据对不上」的可能。
这套选法的账不是没有:Supabase 在国内直连不稳(前面那条成都实测就是它);Postgres 当队列在吞吐量继续涨上去之后迟早要换;pgvector 到千万级向量会顶不住。这些都是已知的、可预期的、到时候再解决的问题——比起为了它们提前上三套中间件,我们认为现在这样更划算。
前面所有内容压成一张表。价格均为按量付费的公开牌价,取自各厂商官方定价页,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 | 文档型 | 托管 / Serverless | M0 免费 · 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 | 冷备份归档最便宜的一档 |