在过去的10年中,促进革新的云、软件即服务(software as a service,SaaS)交付模式和开源仓库被广泛采用,数据量呈爆炸式增长。
这些大型数据集迫使组织必须部署有效而可靠的DBMS,以最大程度地改善客户体验。然而,组织对DBMS的专注给新技术和新从业者带来了机会,也带来了众多的挑战。既然你正阅读本书,说明你很可能想提高自己的技能,并强化或拓展有关如何卓有成效地管理DBMS的知识。
数据库是为存储和检索信息而生的,因此对组织来说,熟悉存储和检索海量数据的最新方法、技术和最佳实践至关重要。另外,云存储导致数据集群被广泛使用,并催生了与数据存储策略相关的数据科学。通常,应用在一天中使用的数据量在不断变化。
为了收集和处理数据,数据库必须是可靠且可伸缩的,从而能够将大型数据集拆分成多个较小的数据集。这样的需求催生了数据库分片和分区等概念,它们都用于将大型数据集分割成较小的数据集,同时确保性能和正常运行时间不受影响。这些概念将在3.2节以及第10章进行讨论。
我们根据开源倡议(Open Source Initiative)的开源定义(The Open Source Definition)的说法,总结一下开源意味着什么。所谓开源,指的是以如下许可方式发布的软件:版权持有人赋予用户以合适的方式使用、修改和分发软件(包括其源代码)。
在数据库方面,开源不仅至关重要,还可能给很多人带来惊喜。在2021年6月,全球超过50%的DBMS都是以开源方式许可的。在开源数据库软件的最近发展动向中,有大量社区是致力于探讨云原生数据库软件的。
随着云计算时代的到来,云原生数据库变得日益重要,其优点包括高弹性以及能够满足应用的苛刻要求。这种发展趋势催生了对云迁移能力和技能的需求,以便企业能够将工作负载迁移到不同的云平台。
当前,混合云和多云环境已司空见惯,将近75%的组织都说自己使用的是多云环境。在依然存储在本地设备中的数据中,大都是敏感数据(组织对是否要将其迁移到云端持谨慎态度),或是与遗留应用或环境相关(将其迁移到云端过于困难)的数据。
这一现状改变了我们对数据库的看法,并给数据库赋予了新含义:它们包含位于本地设备和云端的数据,而工作负载运行在多种不同的环境中。在数据库和基础设施领域,出现的另一项重要技术是分布式云。所谓分布式云,指的是这样一种架构:从公有云同时使用多个云,并集中管理它们。这给组织带来了基于云的服务,同时让云系统和本地系统之间的界线变得模糊。
下面将介绍被称为行业痛点的挑战,你可能熟悉这些行业痛点,但即便不熟悉,也没有关系。介绍完这些痛点,将接着介绍其他同样重要的需求,这些需求当前还未得到满足,给行业带来了新机会。
由于数据库类型的数量在不断增多,开发人员不得不花更多的时间来学习软件开发工具包(software development kit,SDK)和SQL方言,给开发留下的时间也就更少了。对企业来说,由于技术栈更复杂了,并且选择的技术必须与企业使用的应用框架匹配,因此对技术做出选择变得困难,而这可能导致架构过于庞大。
接下来介绍一些著名的行业痛点,再说说给DBMS带来了新机会的行业新需求。
DBA需要将大量时间用于研究和使用新数据库,以便知道其协作和监控方法有何不同,并搞明白如何优化性能。
外部服务和使用体验因数据库而异,这增加了在生产环境中使用和维护数据库的开销。企业部署的数据库类型越多,需要的投资也越多。出现新场景时,如果企业根据其需求不看具体情况就采用新数据库,投资迟早会呈几何级数增长。
为满足看起来类似的需求,需要编写不同的代码,而这些代码唯一的差别在于支持的数据库类型不同。在本书编写期间,ShardingSphere社区期望的代码迭代频率已急剧提高,但开发人员的响应速度降低了,因为响应速度与使用的数据类型的数量成反比。相同的需求和数据类型的数量都呈几何级数增长,这极大地降低了迭代速度。数据库数量越多,迭代的步伐越慢,同时迭代的性能水平也越低。
如果目标是同时对所有敏感数据加密,但无法在一对多数据库中这样做,那么唯一的解决方案是在业务应用端修改代码。大型企业通常运营着数十乃至数百个系统,要对所有系统的数据加密,开发人员将面临严峻的挑战。
数据加密只是开发人员可能面临的众多类似挑战之一,在异构数据库中,其他常见的通用需求还包括权限控制、审计等。
众所周知,当前的现状是异构数据库共存,这种情况还将持续很长时间。然而,没有统一的标准,就无法以协调一致的方式使用这些数据库。这里统一的标准,指的是普遍接受(至少是大都接受)的技术参考,如针对外部硬件设备的USB 2.0和USB-C;在软件方面,一个技术参考的例子是,为帮助创建iOS或Android应用而发布的SDK。
在数据库方面,ShardingSphere社区提出了Database Plus。简单地说,Database Plus指的是让用户能够管理和改善任何类型的数据库,甚至能够在同一个系统中集成不同的数据库类型。
在数据计算方面,对跨异构数据库的协作查询引擎和事务管理计划的需求在日益增长,但就目前而言,开发人员只能在业务应用端编写相关的代码,难以涉足基础设施。
企业的运营环境在不断变化,这必然会影响它们的业务决策和运营流程。变化的根源在于前面提及的数据量增加和互联网普及。本节介绍各行各业的企业对DBMS有何期望,然后说说DBA角色的演变情况。
海量数据可能导致单机数据库崩溃。为存储当前的海量数据(未来还将增加),需要更多的存储空间和服务器。为容纳这样的海量数据,单个数据库根本无法胜任。
DBMS必须存储海量的数据,同时为满足客户和用户对使用体验和响应时间的期望,DBMS不能为逐步组织数据而停机。因此,一个重大的问题是,如何从数据湖检索数据。
数据类型多种多样,关系数据结构只是其中之一。文档、JSON、图和键值对等都引人注目,这合乎情理,因为它们都来自各种业务场景。这些新的变化和需求都必将给数据库本身及其运维带来挑战。
你可能知道这些需求,甚至在自己的职业生涯中遇到过。如果你刚开始工作,不管从事的是哪个行业,都必然会遇到这些需求。这是因为DBA的角色变了,更准确地说是发生了演变。1.2节将介绍DBA角色具体是如何演变的。