数据库选型规划上,很多人第一步就做错了……

白鳝 2022-09-21 09:47:36
这个周末一直在帮一个客户构思一个数据库应用的战术图,改了几稿都不太满意,好像要说的东西还是没说清楚。数据库选型如果放到二十年前是件十分容易的事情,因为那时候我们要处理的主要是关系型数据,而现在不同了,企业的数据里结构化的非结构化的数据一大堆,除了普通的表单数据外,还有文档、宽表、键值、时序、空间、图、事件、全文检索等一系列的数据需要存储。这些不同种类的数据,如果都不分青红皂白,想要用一种数据库来搞定,其实还是相当困难的。

 

正是基于此,我在刚刚接到这个工作的时候觉得十分简单的一件事,真正做起来就发现实际上这个战术要梳理好并不是一件容易的事情。就说数据库分类这么简单的一件事吧,客户希望我从关系型和NOSQL两个维度为主分析他们当前的数据库应用情况,刚开始还好,梳理到时序数据库就犯难了,时序数据库归类到关系型呢还是NOSQL呢?有些时序数据库是NOSQL的,而有些则是关系型的。实际上数据库的分类也十分复杂,存在多个相互不兼容的维度。这么复杂的事情,连做数据库架构的专业人士很多时候也会弄不明白,更不要说大企业IT部门的负责领导了。说这话还真不是矫情,很多数据库都不是职责分明的,很多业务选择数据库类型的时候也不是只有一种答案。说个简单的问题,文档数据库和宽列数据库在应用场景上有啥区别?这个问题好回答吗?

 

有些朋友可能要说,企业数据库选型出问题,主要是因为领导不懂数据库。确实是的,领导可能不是DBA出身,可能不怎么懂数据库,不过企业数据库选型存在问题或者你认为企业数据库选型存在问题,不应该把责任都往领导身上推。一个企业的数据库选型工作实际上是相当复杂的,涉及到企业的EA规划,数据架构规划和IT部门的长远规划。数据库选型在企业EA里实际上只是一个小东西,甚至可能不会被考虑到。

 

一个企业的数据库选型,不仅仅是考虑到数据库技术这点问题,还和企业的IT发展历史,存量系统,未来企业发展蓝图,以及企业的研发、运维支撑、外部协作生态等密切相关。作为企业IT部门的主管,是不可能钻到数据库技术这一个点上来考虑问题的。

 

去年我参加一个沙龙的时候遇到一个企业的IT部门高管,就问起他们的数据库替代的事情。前两年他们在用开源数据库替代Oracle方面搞得轰轰烈烈的,甚至他们的技术选型对整个行业都产生了深远的影响。不过从沟通中,我感觉到他们目前的数据库的选择方向发生了一些改变。后来经过沟通,我了解到当初他们做数据库替代的时候,把一些关键系统迁移到开源数据库上后,出现了一些问题。以他们当时的技术能力,很难解决这些问题。因此他们随后对数据库选型问题更为谨慎了,同时认为一个企业不能死绑在一个数据库身上,有一些比较特殊的高并发高负载的系统还是要根据其应用特点去做数据库选择。

 

上面的案例可以说明两个问题,一个是数据库迁移改造,运维技术是绕不过去的坎。如果我们迁移的不是很重要的系统,那么IT部门哪怕遇到些问题也是可以扛过去的,而如果是关键系统,那么我们还是需要更为谨慎的。在企业关键系统迁移改造的时候,支撑技术能力的预先构建,应该是要先行的。

 

第二个问题是,对于大型企业来说,数据库选型也不能一刀切,选了就硬上。对于大型企业来说,一些大数据量、高负载、业务逻辑十分复杂的系统,如果一刀切的采用一种原则来迁移,那么最终是要出大问题的。实际上,在这一点上,不太懂数据库技术的领导可能比你想得更为深远。因为数据库选型不仅仅关系到数据库技术这一个点,是和整个企业的IT总体规划相关的,包括IT系统全生命周期拥有成本、系统改造后的安全稳定运行、企业研发队伍的能力、运维支撑能力、存量系统改造、企业业务发展的支撑能力等。

 

在这种情况下,很多企业把希望寄托于云平台,既然企业IT基础设施都要上云了,那么就让云来解决这个问题吧。很多大型企业这些年企业私有云的发展十分迅速,大量的系统从传统的物理机迁移到云平台,数据库也选择十分方便的RDS,大量的新建系统就这么建设起来了,似乎十分和谐。甚至领导们都忘记了数据库这个头痛的问题,企业甚至没有数据库许可证采购这个以前让人感到十分头痛的问题了。“还是上云大法好啊!”

 

在这种情况下,甚至有些人都潜意识里认为云上的数据库都是免费的,殊不知,RDS也不是免费的午餐,现在几乎大多数私有云供应商对于RDS都是按照物理服务器按年收费的,比如某著名私有云的RDS FOR MYSQL一台物理服务器的年服务费是十几万。大家如果仔细算下来,发现这玩意可能是个无底洞啊。不过对于企业来说,这些成本都算到了云平台的建设成本里去了,从统计报表里看,已经看不到数据库许可证这一项了。

 

这些年和许多用户讨论过数据库国产化或者数据库选型的问题,企业规模不同的企业面临的问题可能是方方面面的,不过企业关注的问题的本质上是差不多的。第一个是数据库与应用的适配度问题;第二个是采购成本的问题;第三个是运维成本问题;第四个是服务生态问题。实际上虽然考虑了很多问题,不过依然是不够的。

 

数据库是上接企业应用,下连IT基础设施的关键性IT组件,其选型的影响上到应用开发,下到云平台,所以不得不慎重。互联网企业可以投入大量的费用来整合整个体系,而我们的传统企业,无论企业规模大小,都很难像互联网企业那样来整合,因为互联网企业的IT已经成为企业的命脉,而传统行业企业不是。所以这些年,凡是全面学习互联网企业的传统企业,没有特别成功的应用案例。

 

对于数据库选型,我们或多或少的存在轻视的问题,把这件事想的简单了,过于技术化,过于理想化了。面临企业数字化转型,我们在这方面稍微谨慎一些也不为过。对于一些新建的小系统,采用RDS也好,采用开源数据库也好,基于开源数据库的特点把应用优化好,应该问题也不大,足以应付目前信息系统建设的需求了。而对于关键性的核心业务系统,其选型是需要多想一想的,哪怕稍微慢一点也没关系,如果选定方向,应用改造、运维支撑、人才培养与储备等一定要抓紧先行。最头疼的问题也许是大量的存量系统了,这些系统目前先维持现状是没问题的,不过随着时间的推移,这些系统使用的老旧的数据库早晚是要淘汰的,这些系统的迁移也是必须要面临的问题,这个问题虽然可以拖一拖,不过我想还是早点动手会更主动一些。

 

作者丨白鳝
来源丨公众号:白鳝的洞穴(ID:baishan755)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
 

活动预告