分布式数据库真的是伪需求吗
北冥有鱼  2025-04-21 15:15  发布于中国

文| 白鳝的洞穴

每隔一段时间分布式数据库是必须的还是伪需求这个问题就会被热炒一次,随着近期国产数据库替代工作的深入进行,最近很多用户对分布式数据库的应用场景问题都在做更加深入的思考,所以近期也有不少这方面的争论。其中最典型的观点是不少人甚至觉得对分布式数据库的需求是个伪需求。其主要观点是,任何应用,只要单元化工作做到位了,都可以用一系列集中式数据库拼凑出来,有没有分布式数据库的实现得了。而且目前很多用户在使用分布式数据库的时候,往往也采用单元化设计,一个数据库实例中跑一个相对独立的业务,尽可能少地产生分片数据。对于这种分布式数据库的使用方式又退回了10多年前分布式数据库的雏形-分库分表的模式。

 

上述两种情况确实在目前的很多用户侧出现,有些以前认为关键应用必须使用分布式数据库的用户也在反思其之前的观点。再加上近期OceanBase和TiDB这两个老牌的云原生分布数据库厂商都在大力推广单机一体化,这些现象都成为“分布式数据库是伪需求”最好的注解。

当前确实对于分布式数据库的应用场景的思考更加理性一些了,记得2-3年前我和一些金融、运营商和大型央国企的数据库主管领导交流的时候,他们都认为以他们的数据库规模和业务的重要程度来看,分布式数据库是他们的必选。最近这段时间与他们交流的时候,他们的观点务实了许多。

 

虽然如此,“分布式数据库是个伪需求”这句话也还是太武断了,我们对分布式数据库的应用场景做更理性的思考的时候,不能走向另外一个极端。一个企业是否需要使用分布式数据库,还是要看企业自身的特点和业务场景带来的真实需求。

 

具有互联网业务特征的应用我就不多说了,这些以高并发交易为主的业务,天然是分布式数据库所擅长的。这些系统中对于数据查询往往也是基于索引的单表或者两三张表的关联查询,这些系统很容易适配分布式数据库。

 

首先来看一个常见的场景,以前由数套Oracle RAC组成的系统迁移到国产数据库上的时候,可能可以分拆为一两百个集中式数据库,由应用改造后做分库分表。也可以将这些集中式数据库单元化存放到一套多节点分布式数据库上。两种方案虽然都在应用上需要做很多的单元化改造,不过区别还是很大的。对于这种需要上百个分片来替代的场景,分布式数据库在一体化管理、轻量级跨库关联查询、数据库备份、高可用管理、灾备管理等方面还是具有较大的优势。对于资金不是大问题的行业来说,选择分布式数据库还是有优势的。

 

另外一个场景是,现在很多企业使用了上千甚至上万个小型的开源数据库,比如MySQL/PostgreSQL,虽然跑在这些数据库上的系统并非关键系统,但是一旦出问题,也会影响业务,因此运维管理是必须的。那么多的数据库要去管理和运维其实是十分费劲的,如果用几套分布式数据库集群,利用租户来纳管这些小库,在运维管理上可以简化很多。有朋友会说这种情况下怎么不用容器?搞个k8s集群不一样解决吗。是的k8s集群也可以实现类似的问题,不过K8s集群只是一种底层容器设施,Operator可以让数据运管变得更加简单,但是对于这些数据的监控与运维需求依然存在,分布式数据库多租户的方式在整体运维便捷性方面还是有优势的。目前这两种应用场景在企业用户侧都是存在的。

 

还有一些企业应用场景,也属于OLTP,不过查询相对复杂,数据量较大,对于SQL执行延时要求并不严苛。这种系统使用TiDB这样的数据库来说是十分适合的,在数据库设计的时候不需要考虑SHARDING KEY的问题,可以通过TiDB的天然的分布式特性扩充计算和存储节点,来适应业务的增长。唯一的缺点是,无法适应较为极致的低延时业务需求。

 

这个场景如果换成OceanBase,在交易延时上可能会更好一些,不过数据库设计要复杂一些,分区键、表组等的设计对于研发人员来说要求会更高一些。不过OceanBase强大的数据压缩特性会让你在存储容量上节约大量的资金,在我们的一些用户侧,压缩比可以达到5:1。

 

从上面的几个例子来看,分布式数据库虽非万能,但是还是拥有十分丰富的应用场景的。可能有朋友觉得分布式数据库太贵了,很多企业用不起。确实与集中式数据库目前的价格相比,分布式数据库还是太贵。这是因为目前国产分布式数据库的用户都是比较有钱的,因此在销售策略上,分布式数据库的价格并不亲民。不过实际上很多分布式数据库的用户也并没有花你想象的价格购买产品,场地授权也是很普遍的。随着国产数据库的普及程度的增加,分布式数据库的单价也会下降的。目前分布式数据库厂商推出集中式版本,并为其制定了一个与集中式数据库可竞争的价格,其实是为了保护其高端市场的利润,随着数据库产品的日益成熟,以及国内数据库市场的发展,分布式数据库的价格也会进入大家用得起的区间的。

全部回复(
回复
回复
发布帖子
帖子标题
行业分类
场景分类
帖子来源
发送语言版本
可切换语言,在您的个人中心检查译文是否正确
发布文章
文章标题
文章分类
发送语言版本
可切换语言,在您的个人中心检查译文是否正确