写完数据库江湖(三):PostgreSQL 总在旧秩序快失灵时被重新想起,因为它一直在给关系型续命,接下来就得进入数据库史里最容易被写成口号大战的一段。
因为一提 NoSQL,中文世界立刻会冒出两种简化叙事:
- “关系型过时了”
- “NoSQL 只是营销骗局”
这两句话都太轻。
更准确的写法是:
NoSQL 真正拆掉的,不是 SQL 语法,而是关系型数据库长期占据的那种单一正统想象。
也就是:
默认认为所有重要数据问题,最终都应被同一种秩序、同一种一致性哲学、同一种数据模型统治。
NoSQL 爆发,说明这套想象开始不够用了。
不是突然不优雅了。
而是现实先撑不住了。
01|NoSQL 爆发的真实背景,不是大家突然厌倦 SQL,而是 Web 规模把旧默认值压到了边界
NoSQL 从来不是从真空里冒出来的。
它背后的现实压力非常具体:
- 数据量在涨
- 写入并发在涨
- 跨机房、跨地域问题在涨
- 半结构化数据越来越多
- 网站和应用的交互形态越来越不像传统企业系统
这意味着,过去那套“单库 + 关系模型 + 强事务默认”的世界观,开始在一些场景里显得越来越贵。
这里的“贵”,不只是钱。
更是:
- 延迟很贵
- 扩展很贵
- 运维很贵
- 心智负担很贵
尤其到了互联网平台型公司手里,这种“贵”会被放大。
因为当你面向的是:
- 海量用户
- 持续在线系统
- 大规模读写
- 频繁变动的数据结构
你很难再自然相信:
所有问题都应该先被塞回一套强约束、统一模式、事务优先的数据库秩序里。
NoSQL 之所以成立,首先不是因为它更酷。
而是因为很多人第一次公开承认:
旧默认值并不适合所有场景。
02|Bigtable、Dynamo 这些论文真正改变的,不只是产品路线,而是工程界可接受的代价表
NoSQL 时代绕不开几篇公开材料。
特别是:
BigtableDynamo
它们重要,不只是因为后来有很多产品模仿。
更因为它们公开改写了行业里一张很关键的表:
什么代价是可以接受的。
过去很多团队默认觉得:
- 一致性掉了,就是大事
- 模型不统一,就是退步
- 查询不灵活,就是缺陷
可当大规模平台系统开始把另一套现实摊开来讲,风向就变了。
新的重点变成:
- 在海量机器上能不能继续活着
- 节点挂掉时能不能继续服务
- 数据是否必须立刻一致,还是能分层讨论
- 某些场景里,模型灵活性能不能比规范化更重要
也就是说,这些论文没有简单宣布“关系型错了”。
它们做的事更像是:
把旧秩序一直试图隐藏的物理代价,重新摊到桌面上。
一旦物理代价被公开讨论,单一哲学就会松动。
03|NoSQL 不是一个阵营,而是一群不同类型数据库对不同成本的拆分回应
再强调一次,NoSQL 最大的问题之一,就是这个名字太容易让人误会它是统一战线。
其实不是。
它下面混着很多完全不同的路线:
- 文档数据库
- 键值数据库
- 列族数据库
- 图数据库
- 内存数据库 / 缓存系统
这些路线解决的也不是同一件事。
有的更看重:
- 模型灵活
- 迭代速度
有的更看重:
- 大规模可用性
- 横向扩展
还有的更看重:
- 极低延迟
- 特定访问模式的极致优化
所以真正该写的,不是“NoSQL 胜过关系型”。
而是:
当数据库世界承认单一秩序不够时,不同产品开始各自替不同场景省不同的成本。
MongoDB 省的是文档模型与业务对象之间的摩擦。
Cassandra 省的是某些分布式场景下的可用性焦虑。
Redis 省的是延迟与简单访问模式的性能账。
这三种“省”,根本不是一种省。
它们唯一共同的地方,是都在反对“必须先回到同一套正统关系模型里处理”。
04|NoSQL 真正吸引人的,不只是扩展性,而是它把部分数据库权力重新交还给应用团队
关系型数据库强大的地方,在于它替你守住很多秩序。
但反过来说,
它也意味着很多决定不在应用团队自己手里。
NoSQL 的诱惑,很大一部分来自另一种心理:
如果数据库别替我做那么多决定,我是不是就能更快贴着业务现实前进?
这会体现在很多地方:
- 模式不用一开始定死
- 应用对象可以更直接落盘
- 一部分一致性逻辑可以按业务场景自己拿捏
- 某些数据结构不必强行翻译成关系模型
从开发者角度看,这非常有吸引力。
因为它意味着:
数据库不再总像一个站在上面的秩序制定者。
它可以退后一点,让应用团队自己决定更多事情。
但这不是免费礼物。
因为数据库退后一步,
往往就意味着应用要往前补一步。
你拿回来的,不只是灵活性。
还包括:
- 更多边界判断
- 更多一致性责任
- 更多数据清洗和补丁
- 更多“以后再治理”的冲动
所以 NoSQL 的本质,从来不是“更简单”。
而是:
把原本由数据库集中承担的一部分复杂度,拆散后重新分配给应用、平台和业务团队。
05|它最重要的制度后果,是让数据库行业再也不敢假装“one size fits all”
NoSQL 爆发之后,数据库史里发生了一个非常深的变化。
不是哪家产品市占率变了。
而是整个行业的公共心智变了。
从此之后,谁再说“一个数据库解决所有问题”,都会天然显得有点可疑。
因为大家已经被历史教育过一次:
不同数据类型、访问模式、规模压力、组织能力,确实会需要不同答案。
也就是说,NoSQL 最大的遗产甚至不完全在 NoSQL 产品本身。
它更大的遗产,是把多种存储协作、按场景选型、分层处理一致性这套思路,永久写进了行业常识。
在这个意义上,
NoSQL 拆掉的不是 SQL。
它拆掉的是:
关系型数据库曾经独享的“唯一正统”位置。
06|但 NoSQL 也没有终结旧秩序,它反而把数据库世界推向了更复杂的混合现实
很多人后来会说:
- “NoSQL 失败了”
- “最后大家还是回到 SQL”
这也不准确。
更贴近现实的说法是:
NoSQL 没有终结关系型数据库,它只是让数据库世界从单一正统,变成了长期混合。
从那以后,团队越来越常见的现实变成:
- 主事务在关系库
- 缓存放 Redis
- 搜索放专门系统
- 文档数据放 MongoDB 或别的文档库
- 分析数据再进仓库或列式系统
这意味着数据库世界并没有变简单。
它只是把“所有复杂度压在一个系统里”改成了“复杂度拆给多个系统协作”。
这就是 NoSQL 留下的真正世界。
一个更灵活,也更分裂的世界。
今天遗产:为什么今天的团队已经默认接受“多种存储并存”这件事
NoSQL 的今天遗产非常明显:
- 很少还有团队真的相信一种数据库能覆盖所有场景
- 业务系统默认接受缓存、搜索、文档、消息流和主事务库并存
- 工程师谈一致性时,越来越习惯按场景和成本说话,而不只按教科书说话
- 许多新数据库产品不会再以“取代全部旧系统”为卖点,而会先强调“我负责其中一层”
也就是说,NoSQL 最终改变的,不只是技术栈。
它改变的是行业的现实主义程度。
从此以后,数据库世界很难再回到那种只有一种正统答案的年代。
小结
- NoSQL 爆发的背景,不是大家突然讨厌 SQL,而是 Web 规模与分布式现实把旧默认值推到了边界。
Bigtable、Dynamo一类论文的重要性,在于它们公开改写了工程界对代价的接受方式。- NoSQL 不是统一阵营,而是不同类型数据库分别替不同场景省不同的成本。
- 它最大的制度后果,不是取代关系型,而是永久拆掉了“one size fits all”的单一正统幻觉。
关键人物与组织速览
- Google:
Bigtable这条线极大改写了外界对大规模存储的想象。 - Amazon:
Dynamo把高可用与分布式现实的代价讲得非常直白。 - MongoDB / Cassandra / Redis 等产品团队:它们分别把 NoSQL 的不同分支带进了现实市场。
- 应用开发团队:真正让 NoSQL 成势的,不只是论文和厂商,而是那些愿意自己接过更多复杂度的业务团队。
参考与延伸阅读
Bigtable: A Distributed Storage System for Structured Data
https://research.google/pubs/pub27898/Dynamo: Amazon's Highly Available Key-value Store
https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdfApache Cassandra Documentation - Architecture
https://cassandra.apache.org/doc/latest/cassandra/architecture/MongoDB Manual - Data Modeling
https://www.mongodb.com/docs/manual/data-modeling/Redis Documentation
https://redis.io/docs/latest/MapReduce: Simplified Data Processing on Large Clusters
https://research.google/pubs/mapreduce-simplified-data-processing-on-large-clusters/
下篇预告:当行业尝过多模、多库和应用侧兜底的代价之后,为什么又开始重新怀念 SQL、事务和那种熟悉得近乎保守的秩序感。