当前位置: 首页 > 科技观察

说到数据库选型和规划,很多人在第一步就犯了错误……

时间:2023-03-21 13:41:43 科技观察

这周末一直在帮一个客户构思一个数据库应用的战术图。没说清楚。二十年前选择数据库会很容易,因为那时候我们主要是处理关系数据,现在不一样了。企业数据中有大量的结构化和非结构化数据,除了普通的表单数据外,还有文档、宽表、键值、时间序列、空间、图形、事件、全文搜索等一系列数据需要存储。如果这些不同类型的数据是不分青红皂白的,用数据库来处理它们其实是相当困难的。正是基于这一点,我刚接到这份工作的时候觉得这是一件很简单的事情,但是当我真正去做的时候,我发现要理清这个招数其实并不是一件容易的事情。就说说数据库分类这么简单的东西吧。客户要我主要从关系型和NOSQL两个维度来分析他们目前的数据库应用情况。一开始还好,但整理时序数据库就难了。时序数据库分类关系型还是NOSQL呢?一些时间序列数据库是NOSQL,而另一些是关系数据库。事实上,数据库的分类也很复杂,有多个不相容的维度。这么复杂的东西,连做数据库架构的专业人士也常常搞不定,更何况是大企业IT部门的负责领导。这么说并不虚伪。很多数据库的职责不明确,很多业务在选择数据库类型时也没有唯一的答案。问一个简单的问题,文档数据库和宽列数据库在应用场景上有什么区别?这个问题容易回答吗?可能有朋友会说,企业数据库选型的问题,主要是领导不懂数据库。确实,领导可能不是DBA,对数据库可能了解不多。但是,如果企业数据库选型有问题或者你认为企业数据库选型有问题,责任不应该推给领导。一个企业的数据库选型工作其实是相当复杂的,涉及到企业的EA规划、数据架构规划和IT部门的长远规划。数据库选型在企业EA中其实只是一件小事,甚至可以不考虑。企业的数据库选型不仅仅考虑数据库技术的问题,还与企业的IT发展历程、存量体系、未来企业发展蓝图、企业研发、运维支撑、外部协作生态等密切相关。一个企业的IT部门主管,不可能深入到数据库技术的角度来考虑问题。去年参加沙龙的时候遇到了一个企业的IT主管,问了他们数据库更换的问题。近两年来,他们在开源数据库替代甲骨文方面取得了长足的进步,甚至他们的技术选型也对整个行业产生了深远的影响。不过从交流中,我感觉他们现在的数据库选择方向发生了一些变化。后来通过沟通得知,他们在做数据库替换的时候,将一些关键系统迁移到开源数据库后,出现了一些问题。以他们当时的技术能力,很难解决这些问题。因此,他们在数据库选择问题上变得更加谨慎,同时认为一个企业不应该被单一的数据库所束缚。对于一些特殊的高并发、高负载的系统,要根据其应用特点来选择数据库。上述案例可以说明两个问题。一是数据库迁移改造,运维技术是绕不开的坎。如果我们要迁移的系统不是很重要,那么即使遇到一些问题,IT部门也可以处理,但是如果是关键系统,那么我们还是要谨慎一些。企业关键系统迁移改造时,首先要进行配套技术能力的前期建设。第二个问题是对于大型企业来说,数据库选择不能一刀切。对于大型企业,一些数据量大、负载高、业务逻辑复杂的系统,如果一刀切采用一种原则进行迁移,那么最终会出现大问题。其实在这一点上,对数据库技术不太了解的领导可能比你想象的走得更远。因为数据库选型不仅关系到数据库技术的高低,更关系到整个企业的整体IT规划,包括IT系统整个生命周期的拥有成本,系统改造后的安全稳定运行,企业研发团队、运维能力。支撑能力、存量系统改造、企业业务发展的支撑能力等。在这样的情况下,很多企业都把希望寄托在了云平台上。既然企业IT基础设施要上云,那就让云来解决这个问题。近年来,许多大型企业都非常迅速地发展了他们的私有云。大量系统从传统物理机迁移到云平台,数据库也选择了非常方便的RDS。大量的新系统就这样建立起来,看起来很和谐。连领导都忘记了数据库的头疼,企业连购买数据库授权的头疼都没有了。“不如去云端!”在这样的情况下,有些人甚至下意识地认为云上的数据库是免费的,殊不知RDS并不是免费的午餐。现在几乎大部分私有云提供商都对RDS不满意。他们根据物理服务器每年收费。比如知名私有云RDSFORMYSQL的物理服务器年服务费在10万以上。仔细算一算,你会发现这东西可能是个无底洞。但是,对于企业来说,这些成本都包含在云平台的建设成本中。从统计报表上看,数据库license这一项已经看不到了。多年来,我与许多用户讨论过数据库本地化或数据库选择的问题。不同规模的企业可能会面临各种各样的问题,但企业所关心的问题的本质是相似的。首先是数据库与应用的契合度;二是采购成本;三是运维成本;四是服务生态。其实,虽然考虑了很多问题,但还是不够。数据库是连接到企业应用程序和连接到IT基础设施的关键IT组件。它的选择影响到应用开发和云平台,所以不得不慎之又慎。互联网公司可以花很多钱去整合整个系统,但是我们传统的公司,不管是大公司还是小公司,都很难像互联网公司那样去整合,因为IT已经成为了互联网公司的生命线,而传统的行业公司没有。因此,近几年,综合研究互联网公司的传统公司,并没有特别成功的应用案例。对于数据库的选择,我们或多或少都低估了这个问题。我们觉得这个事情很简单,太技术化,太理想化了。面对企业的数字化转型,我们在这方面稍微谨慎一点也不为过。对于一些新建的小系统,无论是使用RDS还是开源数据库,根据开源数据库的特点优化应用应该问题不大,足以满足现在信息化的需求系统建设。至于关键的核心业务系统,其模式的选择需要多加思考,哪怕慢一点也没关系。选择方向,一定要抓紧应用改造、运维支撑、人才培养和储备。也许最麻烦的问题是大量现有系统。这些系统维持现状是没有问题的。但是随着时间的推移,这些系统使用的旧数据库迟早会被淘汰,这些系统的迁移也是很有必要的。要面对的问题,虽然这个问题可以拖延,但我觉得早点开始会更主动一些。