云数据库的确是智商税

RDS带来的数据库范式转变,

云数据库是不是天价大锅饭。

质量安全效率成本剖析核算,

下云数据库自建,如何实战!


RDS带来的数据库范式转变

上期内容老罗直播回顾

上期我们聊了老罗的直播。交个朋友淘宝直播间。先卖扫地机器人,姗姗来迟的老罗照本宣科念台词卖了四十分钟”云“,然后瞬间画风一转,马不停蹄地卖起了 高露洁无水酵素牙膏。这很明显是一场失败的直播尝试,超过千家企业在直播间下单了云服务器,如果是 100 ~ 200 块的云服务器,每家限购一台,也就是撑死了二十万的营收,说不定还没有罗老师出场费高。

我写了一篇文章《罗永浩救不了牙膏云》揶揄直播卖虚拟机的阿里云是个牙膏云,然后马上就有个朋友写了一篇《牙膏云?您可别吹捧云厂商了》说:“任何一家云厂商都不配牙膏云这个称号。从利润率,到社会价值,到品牌管理,质量管理和市场教育,公有云厂商们都被牙膏厂全方面吊打”。


云数据库是什么,是一种软件范式转移吗?

最初,软件吞噬世界,以 Oracle 为代表的商业数据库,用软件取代了人工簿记,用于数据分析与事务处理,极大地提高了效率。不过 Oracle 这样的商业数据库非常昂贵,一核·一月光是软件授权费用就能破万,不是大型机构都不一定用得起,即使像壕如淘宝,上了量后也不得不”去O“。

接着,开源吞噬软件,像 PostgreSQL 和 MySQL 这样”开源免费“的数据库应运而生。软件开源本身是免费的,每核每月只需要几十块钱的硬件成本。大多数场景下,如果能找到一两个数据库专家帮企业用好开源数据库,那可是要比傻乎乎地给 Oracle 送钱要实惠太多了。

开源软件带来了巨大的行业变革,可以说,互联网的历史就是开源软件的历史。尽管如此,开源软件免费,但 专家稀缺昂贵。能帮助企业 用好/管好 开源数据库的专家非常稀缺,甚至有价无市。某种意义上来说,这就是”开源“这种模式的商业逻辑:免费的开源软件吸引用户,用户需求产生开源专家岗位,开源专家产出更好的开源软件。但是,专家的稀缺也阻碍了开源数据库的进一步普及。于是,“云软件”出现了。

然后,云吞噬开源。公有云软件,是互联网大厂将自己使用开源软件的能力产品化对外输出的结果。公有云厂商把开源数据库内核套上壳,包上管控软件跑在托管硬件上,并雇佣共享 DBA 专家提供支持,便成了云数据库服务 (RDS) 。这诚然是有价值的服务,也为很多软件变现提供了新的途径。但云厂商的搭便车行径,无疑对开源软件社区是一种剥削与攫取,而捍卫计算自由的开源组织与开发者自然也会展开反击。


问:为什么云数据库是智商税?

用云数据库,实际上就是用五星级酒店米其林的价格,吃预制菜料理包。

你在家用微波炉加热黄焖鸡米饭料理包花费10元,餐馆老板替你用微波炉加热装碗上桌收费30元,你不会计较什么,房租水电人工服务也都是要钱的。但如果现在老板端出同样一碗饭跟你收费 1000 元并说:我们提供的不是黄焖鸡米饭,而是可靠质保的弹性餐饮服务,大厨品控掌握火候,按量付费想吃多少有多少,按需付费吃多少盛多少,不吃黄焖鸡还有麻辣烫串串香可选,反正就值这个价,你会不会有打一顿这个老板的冲动?这样的事情就发生在云服务器、块存储和云数据库上面。


问:为什么有此一说?为什么会觉得贵?

首先说一下立场,中大规模的企业级用户。探探的数据库例子,我们在云下,评估上云的价格。我们用的服务器,一台是……5年7.5万,每年TCO 1.5w。两台组个高可用,就是每年3万块钱,阿里云华东1默认可用区,独享的64核256GB实例:pg.x4m.8xlarge.2c,并加装一块3.2TB的ESSD PL3云盘。每年的费用在25万(3年)到75万(按需)不等。 AWS 总体在每年160 ~ 217万元不等。

不只是我们,Ruby on Rails 的作者 DHH 在 2023 年分享了他们 37 Signal 公司从云上下来的完整历程。

介绍 DHH 下云的例子,每年 300w 美元年消费。一次性投入60万美元买了服务器自己托管后,年支出降到了 100 万美元,原来的1/3 。五年能省下 700 万美金。下云花了半年时间,也没有使用更多的人手来运营。


问:比如经典商业数据库 Oracle,DB2, SQL Server 都卖的很贵,云厂商为什么不能卖贵?这不是正常的商业逻辑吗?

反问:商业数据库时代,数据库有多贵,给大家介绍一下。范式转移


问:你觉得卖的贵,我要 Argue 一下,这不是正常的商业逻辑吗?

卖的贵不是大问题 —— 有只要最好的东西,根本不看价格的客户。然而问题在于云数据库不够好,第一:内核是开源 PG / MySQL,实际上自己做的就是个管控。而且在其营销却宣传中,好像是包治百病的万灵药,存算分离,Serverless,HTAP,云原生,超融合…,RDS 是先进的汽车,而老的数据库是马车……,blah


问:如果不是马车和汽车,那应该是什么?

区别最多算油车和电车,阐述数据库行业与汽车行业的类比。数据库:汽车;DBA:司机;商业数据库:品牌汽车;开源数据库:组装车;云数据库:出租车+出租司机,嘀嘀打车;这种模式是有其适用光谱的。


问:云数据库的适用光谱?

起步阶段,流量极小的简单应用 / 2 毫无规律可循,大起大落的负载 / 3 全球化出海合规场景 ,租售比。小微企业别折腾,上云(但上什么云值得商榷),大企业毫无疑问,下云。更务实的做法是买基线,租尖峰,混合云 —— 主体下云,弹性上云。


问:这么看来,云计算其实是有它的价值与生态位的。

  1. 《科技封建主义》,垄断巨头对生态造成的伤害。 / 2. 云营销,吹牛是要上税的。

  2. 抛开宏大叙事不谈,但云数据库的费用可不便宜。…… (弹性/百公里加速),引出成本问题。


云数据库是不是天价大锅饭

问:我们先来聊聊第一个问题,成本,成本不是云数据库所宣称的一项优势吗?

看和谁比,和传统商业数据库 Oracle 比可以,和开源数据库比就不行了 —— 特别是小规模可以(DBA),有点规模就不行了。


问:云是不是可以省下DBA/数据库专家的成本?

是的,好DBA稀缺难找。但用云数据库不代表你就不需要DBA了,你只是省去了系统建设的工作与日常运维性的工作,还有省不掉的部分。第二,我们可以具体算一笔账,在什么规模下,雇佣一个 DBA 相比云数据库是合算的。(聊一聊几种价格的模型)


问:RDS 和DBA 是什么关系?

RDS 和 DBA 提供的核心价值不是数据库产品,而是用好开源数据库内核的能力。…… 只不过一个主要靠DBA老司机,一个主要靠管控软件。一个是雇佣,一个是租赁。我觉得生态里还缺一种模式 —— 拥有管控软件,所以我做的东西就是开源的数据库管控软件。


问:所以云数据库成本上不占优势?

极小规模有优势,标准尺寸或者大规模数据库没有任何成本优势。

比较成本你要看怎么比。云数据库的计费项:计算+存储,当然还有流量费,数据库代理费,监控费用,备份费用。

大头是计算与存储,计算的单位是……,存储的单位是……(一些关键数字)


问:实例部分的钱怎么算?

阿里 RDS: 7x-11x,PolarDB: 6x~10x,AWS: 14x ~ 22x

双实例高可用版价格 4x 核月单价 8x 核月单价
高可用RDS系列核月均价 ¥339 ¥432
AWS RDS 高可用参考价 ¥1,160 ¥1,582
阿里云 PolarDB 参考价 ¥250 ¥400
DHH探探自建1C算力(不含存储) ¥40

云服务器,云上按量,包月,包年,预付五年的单价分别为 187¥,125¥,81¥,37¥,相比自建的 20¥ 分别溢价了 8x, 5x, 3x, 1x。在配置常用比例的块存储后(1核:64GB, ESSD PL3),单价分别为:571¥,381¥,298¥,165¥,相比自建的 22.4¥ 溢价了 24x, 16x, 12x, 6x


问:存储部分的钱怎么算?

先来看零售单价,GB·月单价 ,两分钱,阿里云 ESSD 上分了几个不同的档次,从 1- 4块钱。

1TB 存储·月价格(满折扣):自己买 16 ,AWS 1900,阿里云 3200


问:上面聊了很多成本的问题,但你怎么能盯着成本呢?成本到底有多重要?

在你技术与产品有领先优势的情况下,成本没那么重要。但当技术与产品拉不开差距的时候,即 —— 你卖的是没有不可替代性的大路货标准品,成本就非常重要了。在十年前,云数据库也许是属于产品/技术主导的状态,可以心安理得的吃高毛利。但是在十年后的今天。云不是高科技了,云已经烂大街了。市场已经从价值定价转向了成本定价,成本至关重要。

阿里的主营业务电商,被“廉价”的拼多多打的稀里哗啦,拼多多靠的是什么?就是一个朴实无华的便宜。你淘宝天猫能卖的,我能卖一样还更便宜,这就是核心竞争力。你又不是爱马仕,劳力士,买个包买个表都要配几倍货才卖给你的奢侈品逻辑,在老罗直播间里夹在牙膏和吸尘器中间的大路货云服务器能拼什么,还不是一个便宜?


问:那么什么时候成本不重要呢?

第二个点是经济上行繁荣期,创业公司拼速度的发展期,扣成本可能为时过早。但现在很明显,是经济下行萧条期……。再比如说,如果你的东西足够好,那么用户也可以不在意成本。就好比你去五星级酒店,米其林餐厅吃饭,不会在意他们用的食材是多少成本;对吧,OpenAI ChatGPT 别无分号,仅此一家,爱买不买。但是,去菜市场买菜,那是是会看成本的。云数据库,云服务器,云盘,都是“食材”,而不是菜品,是要核算成本,比价的。(黄焖鸡米饭的故事)


质量安全效率成本剖析核算

问:性价比里的价格成本聊透了,那我们来聊聊质量、安全、效率

云数据库很贵,所以在卖的时候都有一些话术。虽然我们贵,但是我们好呀!数据库是基础软件里的皇冠明珠,凝聚着无数无形知识产权BlahBlah。因此软件的价格远超硬件非常合理…… 但是,云数据库真的好吗?


问:在功能上,云数据库怎么样?

只能 OLTP 的 MySQL 咱就不说了,但是 RDS PostgreSQL 还是可以聊一聊的。尽管 PostgreSQL 是世界上最先进的开源关系型数据库,但其独一无二的特点在于其极致可扩展性,与繁荣的扩展生态!不幸地是,云 RDS 阉割掉了 PostgreSQL 的灵魂》 —— 用户无法在 RDS 上自由加装扩展,而一些强力扩展也注定不会出现在 RDS 中。使用 RDS 无法发挥出 PostgreSQL 真正的实力,而这是一个对云厂商来说无法解决的缺陷


问:在功能扩展上,云上的 PostgreSQL 数据库有什么缺陷?

Contrib 模块作为 PostgreSQL 本体的一部分,已经包含了 73 个扩展插件,在 PG 自带的 73 个扩展中,阿里云保留了23个阉割了49个;AWS 保留了 49 个,阉割了 24 个。PostgreSQL 官方仓库 PGDG 收录的约 100 个扩展,Pigsty 作为PG发行版自身维护打包了20个强力扩展插件,在 EL/Deb 平台上总共可用的扩展已经达到了 234 个 —— AWS RDS 只提供了 94 个扩展,阿里云 RDS 提供了 104 个扩展。

在重要的扩展中,情况更严重。AWS与阿里云缺失的扩展有:(时序 TimescaleDB,分布式 Citus,列存 Hydra,全文检索 BM25,OLAP PG Analytics,消息队列 pgq,甚至一些基本的重要组件都没有提供,比如做 CDC 的 WAL2JSON),版本跟进跟进速度也不理想。


问:云数据库为什么不能提供这些扩展?

云厂商的口径是:安全性,稳定性,但这根本说不通。云上的扩展都是从 PostgreSQL 官方仓库 PGDG 下载打好包,测试好的 rpm / deb 包来用的。需要云厂商测试什么东西?但我认为更重要的一个问题是开源协议的问题,AGPLv3 带来的挑战。开源社区面对云厂商白嫖的挑战,已经开始集体转向了,越来越多的开源软件使用更为严格,歧视云厂商的软件许可证。比如 XXX 都用 AGPL 发布,云厂商就不可能提供,否则就要把自己的摇钱树 —— 管控软件开源。

这个我们后面可以单独开一期来聊这个事情。


问:上面提到了安全性的问题,那么云数据库真的安全吗?

1、多租户安全挑战(恶意的邻居,Kubecon 案例);2. 公网的更大攻击面(SSH爆破,SHGA);

3、糟糕的工程实践(AK/SK,Replicator密码,HBA修改); 4 没有保密性、完整性兜底。

5、缺乏可观测性,因此难以发现安全问题,更难取证,就更别提追索了。


问:云数据库的可观测性一团稀烂,怎么说?

信息、数据、情报对于管理来说什么至关重要。但是云上提供的这个监控系统吧,质量只能说一言难进。早在 2017 年的时候我就调研过世面上所有 PostgreSQL 数据库监控系统 …… 指标数量,图表数量,信息含量。可观测性理念,都一塌糊涂。监控的颗粒度也很低(分钟级),想要5秒级别的?不好意思请加钱。

AustinDatabase 号主今天刚发了一篇《上云后给我一个 不裁 DBA的理由》聊到这个问题:在阿里云上想开 Ticket 找人分析问题,客服会疯狂给你推荐 DAS(数据库自动驾驶服务),请加钱,每月每实例 6K 的天价。

没有足够好的监控系统,你怎么定责,怎么追索?(比如硬件问题,超卖,IO抢占导致的性能雪崩,主从切换,给客户造成了损失)


问:除了安全和可观测性的问题,相当一部分用户更在意的是质量可靠性

云数据库并不提供对可靠性兜底,没有SLA 条款兜底这个。

只有可用性的 SLA ,还是很逊色的 SLA,赔付比例跟玩一样。 营销混淆:将 SLA 混淆为真实可靠性战绩。

乞丐版的标准版数据库甚至连 WAL 归档与 PITR 都没有,就单纯给你回滚到特定备份,用户也没有能力自助解决问题。

著名的双十一大故障,草台班子理论,降本增笑。中亭团伙……可观测性团队的草台班子,都是刚毕业的在维护。

业务连续性上的战绩并不理想:RTO,RPO ,嘴上说的都是 =0 =0,实际…… 。腾讯云硬盘故障导致初创公司数据丢失的案例。


问:云数据库真的好吗?(性能维度)

我们先来聊一聊性能吧。刚才聊了云盘的价格,没说云盘的性能,EBS 块存储的典型性能,IOPS,延迟,本地盘。更重要的是这个高等级的云盘还不是你想用就给你用的。如果你买的量低于1.2TB,他们是不卖给你 ESSD PL3 的。而次一档的 ESSD PL2 的 IOPS 吞吐量就只有 ESSD PL3 的 1/10 。

第二个问题是资源利用率。RDS 管控 2GB 的管控……,什么都不干内存吃一半。Java管控,日志Agent。

高可用版的云数据库,有个备库,但是不给你读。吃你一倍的资源对不对,你想要只读实例要额外单独申请。

最后,资源利用率提高的是云厂商白赚,好处让云厂商赚走了,代价让用户承担了。


问:其他的点呢?比如可维护性?

每个操作要发验证码短信,100套 PostgreSQL 集群怎么办?ClickOps小农经济,企业用户和开发者真正的正道是 IaC,但是在这一点上比较拉垮。K8S Pigsty 都做的很好,原生内置了 IaC。RPA 机器人流程自动化。糟糕的API 设计,举个例子,几种不同风格的错误代码实例状态表,(驼峰法,蛇形法,全大写,两段式)体现出了低劣的软件工程质量水平。

业务连续性,RTO RPO,比如做 PITR 是通过创建一个新的按量付费的实例来实现的。那原来的实例怎么办?怎么回滚?怎么保障恢复的时长?这种合格DBA都应该知道的东西,云RDS 为什么不知道?


云数据库有没有啥出彩之处?

问:云数据库就没有一些做的出色的地方吗?

有,弹性,公有云的弹性就是针对其商业模式设计的:启动成本极低,维持成本极高。低启动成本吸引用户上云,而且良好的弹性可以随时适配业务增长,可是业务稳定后形成供应商锁定,尾大不掉,极高的维持成本就会让用户痛不欲生了。这种模式有一个俗称 —— 杀猪盘。这个模式发展到极致就是 Serverless。 云厂商的假 Serverless。


问:还有一个与弹性经常一起说的,叫敏捷?

敏捷,以前算是云数据库的独门优势,但现在也没有了。第一,真正的 Serverless ,Neon,Supabase,Vercel 免费套餐,赛博菩萨。第二,Pigsty 管控,上线一套新数据库也是5分钟。云厂商的极致弹性,秒级扩容其实骗人的,几百秒也是秒……


问:聊聊 Serverless,这会是未来吗?为什么说这是榨钱术?

云厂商的 RDS Serverles,本质上是一种弹性计费模式,而不是什么技术创新。真正技术创新的 Serverless RDS,可以参考 Neon:

  1. Scale to Zero,
  2. 无需事先配置,直接连上去自动创建实例并使用。

RDS Serverless 是一种营销宣传骗术。只是计费模式的区别,是一个恶劣的笑话。按照云厂商的营销策略,我拿个共享的 PG 集群,来一个租户就新建一个 Database 给他,不做资源隔离随便用,然后按实际的 Query 数量或者 Query Time 收费,这也可以叫 Serverless。

然后按照这个定义,云厂商的各种产品一下子就全部都变成 Serverless 了。然后 Serverless 这个词的实质意思就被篡夺了,变成平庸无聊的计费技术。真正做的好的 Serverless ,应该去看看赛博菩萨 Cloudflare。

这里我还提一点,Serverless 说是要解决极致弹性的问题,但弹性本身其实没有多重要


问:为什么弹性不重要,传统企业如何应对弹性问题?

弹性峰值能到平时的几十上百倍,我觉得弹性有价值。否则以现在物理资源的价格,直接超配十倍也没多少钱……云厂商的弹性溢价差不多就是十几倍。大甲方的思路很清晰,有这个钱租赁,我干嘛不超配10倍。小用户用 serverless 可以理解。弹性转折点,40 QPS 。唯一场景就是那些 MicroSaaS。但那些 MicroSaas 可以直接用免费套餐的 Vercel,Neon,Supabase,Cloudflare……

传统企业如何解决?我们有 15 % 的 机器 Buffer 池,如果不够用,把低利用率的从库摘几台就够了,机器到位,PG 5分钟上线。服务器到上架IDC大概两周左右,现在 IDC 上架已经到 半天 / 一天了。


问:所以云数据库整体来看,到底怎么样?

刚才,我们已经从质量、效率、安全、成本剖析了云数据库的方方面面。基本上除了弹性,表现都很一般,而唯一能称得上出彩的弹性,其实也没他们说的那么重要。我对云数据库的总体评价就是 —— 预制菜,能不能吃?能吃,也吃不死人,但你也不要指望这种大锅饭能好吃到哪里去。

草台班子,也没有什么品牌形象。例如 IBM DeveloperWorks。 《破防了,谁懂啊家人们:记一次mysql问题排查


下云数据库自建,如何实战!

问:什么时候应该用云数据库,什么时候不应该。或者说,什么规模应该上云,什么规模应该下云?

光谱的两端,DBaaS 替代,开源自建。经典阈值,团队水平。

平均水准的技术团队:100 ~ 300 万年消费,云上 KA。没有任何懂的人,服务器厂商给出的估算规模是1000万。

优秀的技术团队:一台物理机 ~ 一个机柜的量,下云,年消费几万到几十万。


问:小企业用数据库有什么其他选择?

Neon,Supabase,Vercel,或者在赛博佛祖 Cloudflare 上直接托管。


问:你给云数据库旷旷一顿批判,那是你站在头部甲方,顶级DBA的视角去看的。一般企业没有这个条件,怎么办?

做好三件事:管控软件的开源替代怎么解决,硬件资源的置备供给怎么解决,人怎么解决?


问:开源管控软件,怎么说?

举个例子,管理服务器的开源管控软件, KVM / Proxmox / OpenStack,新一代的就是 Kubernetes。对象存储的开源平替 MinIO,或者物美价廉的 Cloudflare R2


问:硬件资源如何置备管理?

IDC:Deft,Equinix,世纪互联。IDC 也可以按月付费,人家很清楚,一点儿都不贪心,30% 的毛利明明白白。

服务器 + 30% 毛利,按月付费,机柜成本:4000 ~ 6000 ¥/月(42U 10A/20A),可放十几台服务器。网络带宽:独享带宽(通用) 100 块 / MB·月 ;专用带宽可达 20 ¥ / MB·月

你也可以考虑长租公有云厂商的云服务器,租五年的话,比 IDC 贵一倍。请选择那些带有本地 NVMe 存储的实例自建,不要使用EBS云盘。


问:还有个问题,在线的问题如何解决?云上的网络/可用区不是一般 IDC 可以解决的吧?

Cloudflare 解决问题。


问:人怎么解决,DBA ?

当下的经济形势与就业率背景,用合理的价格想要找到能用的人并不难。初级的运维与DBA遍地都是,高级的专家找咨询公司,比如我就提供这样的服务。


问:专业的人做专业的事情,从云上集中管理到云下自建,是不是一种开倒车的行为?

云厂商是不是最专业的人在做这件事,我相当怀疑。1. 云厂商摊子铺得太大,每个具体领域投入的人并不多;2. 云厂商的精英员工流失严重,自己出来创业的很不少。3. 自建绝不是开是历史倒车,而是历史前进的一个过程。历史发展本来就是钟摆式往复,螺旋式发展上升的一个过程。


问:云数据库的问题解决了,但是想要从云上下来,需要解决的问题不止数据库,其他的东西怎么办?对象存储,虚拟化,容器

留待下一期来讨论!

Last modified 2024-05-03: update latest posts (d8358dc)