下面来说说 DBMS 面临的机会及其发展方向,这包括数据库安全和行业新生事物(如DBaaS)等主题。
对DBMS来说,数据库安全已成为重要的关注领域之一。数据库厂商正努力对既有解决方案进行迭代,旨在解决数据库存在的问题。云厂商致力于对其云基础设施中的数据和应用进行保护。在传输过程中,数据需要经过网络、软件、负载均衡器以及其他各种组件,而它们都在逐步升级安全措施。
考虑到这个不断改进的过程,一个自然而然的问题是,如何才能无缝地集成使用不同语言和数据库开发的项目?为应对这个问题以及随之而来的挑战,无论是行业领先的企业,还是前途光明的初创企业,都投入了大量的资源。云会带来什么样的新约束呢?超过2/3的首席信息官都关心这个问题。鉴于此,开源数据库正逐渐成为不二的解决方案。
数据安全不仅对企业来说至关重要,还可能成为企业存亡的分水岭:是得以幸存下来,还是成为另一个就此关门大吉、被人永远遗忘的企业。只要想想勒索软件及其日益广泛传播的情况,就能够明白开源技术是如何让组织远离这种风险的。开源给组织提供了必要的权限和灵活性,让它们能够访问源代码,并以合适的方式配置和扩展软件,从而全面地满足其安全需求。这无疑反驳了多年前开源安全性被诟病的观点。开源数据库被企业快速采用,给开源争端画上了句号。数据库开源趋势浩浩荡荡,任何企业都无法置身事外。
说到SQL时,大家马上想到的是“古老”的关系数据库,它们在过去20年中始终支持高级服务。然而,关系数据库已开始尽显疲态,很多人都认为它们难以满足企业当前面临的需求。鉴于此,灵活的数据库行业巨头已采取积极措施,力图重塑其既有产品或提供新的解决方案。
NoSQL就是一个这样的例子。它是非关系数据库的始作俑者,提供了存储和检索非关系数据(如键值对、图、文档、宽列)的机制。然而,很多NoSQL产品都为支持可用性和分区容错性而牺牲了一致性:考虑到新时代的重要关切,NoSQL实现了高可用性和弹性伸缩,但不支持事务,也不具备SQL的标准优点。Couchbase、HBase、MongoDB及其他NoSQL数据库的成功,充分表明了人们对这种做法的支持。NoSQL数据库有时也强调如下两点:它们不仅是SQL(Not Only SQL),也认识到了传统SQL数据库的价值。出于这种认识,NoSQL数据库逐步吸纳了主流SQL产品的一些优点。
NewSQL可被定义为这样一种关系数据库管理系统(relational database management system,RDBMS):致力于让NoSQL系统是可伸缩的,可用于执行联机事务处理(online transaction processing,OLTP)任务,同时具备传统数据库系统的原子性、一致性、隔离性和持久性(atomicity, consistency, isolation, and durability,ACID)特性。
对于NewSQL,学术界和数据库行业还在讨论中,因此前述的说法并非最终的定义。有关这方面的一项出色资料是论文“What's Really New with NewSQL”,它致力于根据架构和功能对数据库进行分类。所有宣称自己为NewSQL产品的数据库都致力于在一致性、可用性和分区容错性(capability, availability, and partition tolerance,CAP)定理之间取得良好的平衡。然而,什么样的数据库产品可归类为NewSQL呢?
DBMS面临众多的机会,有些将在中短期内给行业带来翻天覆地的变化,而新的数据库架构无疑是其中之一。通过使用新架构,可卸下遗留系统在架构方面的包袱,使用全新的代码库来设计数据库,就像一张白纸提供了无限的可能性一样:新数据库是完全根据新时代的需求来设计并构建的。
透明的分片中间件将数据库分成多个分片(shard),这些分片存储在由单节点DBMS实例组成的集群中。ShardingSphere就是这样做的。
诸如ShardingSphere等分片中间件让用户(或组织)能够将数据库分成多个分片,并将它们存储在多个单节点DBMS实例中。本节将帮助你搞明白什么是数据分片。DBA始终在寻找对DBMS进行优化的途径;出现数据输入高峰时,必须有适当的处理策略。对于这种问题,最佳的处理方法之一是,将数据分成独立的行和列,这样的方法包括数据分片和数据分区。下面来介绍这两个概念以及它们之间的不同之处。
将大型数据库表分成多个小表时,便创建了分片。新创建的表被称为分片或分区。这些分片存储在多个节点中,这提高了可伸缩性和性能。这种可伸缩性被称为水平伸缩性。分片能够让DBA以尽可能高效的方式使用计算资源,这被称为数据库优化。
优化计算资源只是分片的重要优点之一,重要的是它可减少需要扫描的行数,让用户查询的响应速度比使用单个巨型数据库时快得多。
说到分区,你可能感到困惑,这是完全正常的,因为数据分区常常让人误解。所谓分区,指的是将数据库分成多个子集,但这些子集依然存储在单个数据库(单个数据库有时也被称为数据库实例)中。那么分片和分区有何不同呢?分片和分区都将大型数据集分成多个小型数据集,但一个重要的不同是,分片意味着划分后的数据分散在多台计算机中,无论是水平分片还是垂直分片都如此。
数据库即服务(DBaaS)不仅提供改造后的云数据库,还为维护数据库的物理配置提供服务。用户无须关心数据库位于什么地方,因为云让云数据库提供商能够负责物理数据库的运维工作。
NoSQL和NewSQL代表着DBMS的未来发展方向,大部分乃至所有数据库厂商都在向这个领域进军。很多初创企业也在进军这个领域,旨在填补其中的市场空白,它们提供的服务可与著名行业巨头提供的服务相互补充。
近10年的技术进步让机器学习和人工智能(artificial intelligence,AI)等新兴领域有了长足发展。生活的方方面面最终都将受到这些技术的影响,企业及其数据库也不例外。AI数据库运维将成为推动DBMS增长的主要动力。看起来AI和数据库管理之间似乎没有关系:当前AI已成为媒体热词,而数据库管理还与以前一样,需要投入大量的人力。等到AI技术被集成到数据库运维中,通往新天地的大门将被打开。通过学习人们以前执行数据库管理任务方面的经验,有AI助力的数据库将能够提供建议,并指出该采取的措施,从而指导你对数据库集群进行管理、运维和保护。
另外,AI数据库管理平台还将能够与监控和报警系统取得联系,甚至采取某些紧急措施,以避免严重的生产事故。对企业来说,提高效率和减少人员编制始终是关注的焦点。
说到数据库迁移,有一些好消息,还有一些坏消息。秉持对未来充满乐观的精神,我们先来说说好消息:有新的数据库可供选择,例如最近面市的所有NewSQL和NoSQL产品。至于坏消息,那就是必须能够以最低的开销完成数据迁移。
在这个从旧到新的过程中,数据迁移和数据库选择至关重要。为避免给生产带来负面影响,同时避免新数据库可能导致的不稳定性,很多企业选择继续采用陈旧的数据库架构。另外,遗留的IT系统过于复杂,企业不敢冒险,这是对数据迁移没有信心的一个重要原因。面对这样的情况,很多数据库厂商(数据库服务企业)将开发新产品并将其推向市场,力图从数据库行业这个数十亿美元的市场中分一杯羹。
总之,DBMS面临的一些重大机会包括数据库安全、新的数据库架构、数据分片和DBaaS以及数据库迁移。
结束本节前,还有最后一点要说,那就是将旧数据库迁移到新数据库时,有些需要考虑的问题,包括:
● 选择本地还是云端;
● 迁移到新数据库的最低开销;
● 使用多个数据库导致的程序重构开销。
图1.2展示了从旧数据库切换到新数据库时可能带来的开销。
这些问题解决起来都绝非易事。可使用的工具和方式有很多,但大多数解决方案都要求投入大量的时间和资金,因为需要全面更换数据库类型(或厂商),重新配置整个系统,乃至为数据库开发定制补丁。别忘了,所有这些做法都面临风险,如丢失所有的数据。
图1.2 数据库迁移开销
鉴于此,我们打造了ShardingSphere,它被设计成尽可能灵活而非侵入性的,旨在让工作完成起来更加轻松。你可在不给系统带来任何负面影响的情况下快速安装它,进而解决前述所有问题,同时为本章前面提及的后续开发做好准备。下面来概述ShardingSphere及其涉及的主要概念。