随着数字化时代的到来,数据已经成为企业和组织最重要的资产之一。为了有效管理、分析和利用数据,数据仓库技术应运而生。
随着大数据、云计算和人工智能等新兴技术的迅速崛起,数据仓库的构建正面临前所未有的挑战和机遇。传统数据仓库往往依赖固定的本地硬件资源,难以适应不断变化的业务需求和数据规模激增的状况,包括处理大规模数据的能力、支持快速变化业务需求的灵活性及资源配置的优化等。云计算的崛起为解决这些问题提供了新的契机。
云计算以其弹性、可扩展性和按需付费的特点,重塑了数据存储和处理的方式。与此同时,云原生技术的兴起强调了微服务、容器化和自动化管理,使数据仓库能够更好地适应不断变化的商业环境。
云原生数据仓库正是这样一种符合新时代需求的产品,它不仅是传统数据库在云计算平台上的一次重新部署,更是一次从整体架构上的彻底革新。
在云计算的基础设施中,数据仓库的计算资源和存储资源被高度解耦,构建了一种灵活、可伸缩的服务模式,并转向服务器无感知(Serverless)的计算模型,实现按需分配和实时扩展,从而智能地应对瞬息万变的业务负载。
云原生数据仓库的出现使企业能够在复杂的应用环境中快速调整其数据架构,从而在激烈的市场环境中保持竞争力。
随着技术的进步,云原生数据仓库在架构设计、计算引擎、存储及资源管理等方面也出现了众多的关键技术。这些技术不仅突破了原有的系统瓶颈,还通过实施细致入微的优化策略,使数据查询和分析能够以更高的性能和更低的资源成本完成。亚马逊的Redshift、谷歌的BigQuery及阿里巴巴的AnalyticDB等云原生数据仓库,都是这一技术演进的生动写照,充分体现了云原生架构在实际应用中的广泛适用性和巨大优势。
越来越多的企业选择将数据仓库迁移至云平台,借助云计算的弹性和高可用性,寻求更高效的决策支持和商业智能。
1.云原生数据仓库与传统数据仓库有何区别?
传统的数据仓库基于冯·诺依曼架构开发。在这种架构下,计算和存储为紧耦合。因此,当将传统的数据仓库部署在云主机上时,通常将云主机视为普通服务器。当用户遇到资源瓶颈时,可以通过增加云主机的方式来扩展性能,即水平扩展。然而,由于计算资源和存储资源紧密耦合,用户不得不同时扩展计算资源和存储资源。如果计算资源和存储资源的需求不同步增长,则必然会导致资源浪费。因此,这种架构无法实现按需分配的目标。总而言之,传统的数据仓库无法充分发挥云计算的最大优势,即计算与存储的分离和资源池化。
云计算的本质是利用虚拟化技术将资源解耦,并将其汇集为资源池。客户可以根据自身需求按需购买计算资源和存储资源,从而大幅降低前期的基础设施投入成本。同时,用户借助云计算的虚拟化和资源池化技术,能拥有弹性扩展资源的能力,快速应对业务流量的变化。
因此,云原生数据仓库需要能够充分利用云计算提供的弹性资源和按需分配的能力,动态地调整计算资源和存储资源。为了实现这一目标,云原生数据仓库需要根据云服务的特点重新设计传统架构,将数据仓库的计算和存储模块完全解耦,并将每层服务的资源池化。同时,还需要能够实时调整模块的大小,以适应实时工作负载,提供高性能和可伸缩的数据处理能力,以实现资源利用率的最大化。
云原生数据仓库与数据仓库上云是两个完全不同的概念。
数据仓库上云是将现有数据仓库迁移到云环境中;而云原生数据仓库是从根本上为云环境打造的,能更高效、灵活地满足企业在云计算时代的数据分析需求。“原生”表示数据仓库的架构必须构建在云环境的基础上,设计时充分利用和发挥云平台的资源池化和弹性扩展优势。云平台将每个服务层所需的资源进行资源池化,用户可以灵活地单独扩展或缩减计算资源和存储容量,以适应实时变化的工作负载,从而控制总成本,提高资源利用率。
通常来说,云原生数据仓库的架构主要分为三层,包括服务接入层、计算层和存储层,各层之间通过网络进行通信,如图1所示。
图1 云原生数据仓库架构
服务接入层中的每个节点由解析器、查询分析器、查询优化器、调度器、资源管理器和元数据管理器等构成,负责接收客户端请求、制订分布式执行计划、进行数据调度和查询调度,并将服务的请求接入计算层。
计算层由一个或多个计算集群(计算组)构成,每个计算集群有多个计算节点,不同计算集群的资源在物理上相互隔离,这保证了多租户间资源的隔离性,且多租户共享服务接入层和存储层。计算层负责处理和转换存储层中的数据,对查询语句进行解析和优化,为查询和数据处理任务提供可弹性扩展的计算资源。根据业务和负载的不同,可将业务或查询分发到适配的计算集群上,减少负载或业务之间的相互影响,提高服务的稳定性。
在云原生数据仓库中常用的数据存储层技术包括云提供的对象存储服务(如Amazon S3、Google Cloud Storage)和分布式文件系统(如Hadoop HDFS),为云原生数据仓库提供高可靠性、高可扩展性和低成本的数据存储能力。云原生数据仓库大多按列存储数据,提高了查询速度,方便对数据进行压缩和聚合计算。一些云原生数据仓库的服务商为冷/热数据提供了不同的存储介质,将在线分析场景所需的热数据放在高性能存储介质上,将离线场景需要的冷数据放在低成本存储介质上,以降低存储成本。
2.Data+AI融合时代如何驱动智能决策?
随着Data+AI成为行业发展的重要趋势,数据仓库不仅承担着数据存储和管理的职责,更成为智能分析和决策的重要平台。
云原生数据仓库利用启发式规则或者机器学习技术来诊断数据仓库在数据建模、数据准备、库表结构设计和数据查询分析等各个环节中存在的可优化点并给出优化建议,并通过自动化处理、分析和可视化展示,提供更自动化和更智能的数据管理和分析解决方案。
除了智能化优化数据仓库性能,还会考虑用户的财务成本及不同资源每时每刻的不同价格,因此可以智能化地选择资源以降低用户成本,并加强数据安全和隐私保护。
传统的数据仓库需要进行数据清洗、转换和集成等准备工作。数据仓库智能化利用机器学习和自动化算法,能够自动识别和处理数据质量问题,如缺失值、重复值和异常值等。它可以帮助数据仓库管理员和数据分析师更好地管理和维护数据质量。由于数据查询分析的规模越来越大、复杂度越来越高,库表结构设计的优化对降低数据仓库的存储成本和查询性能有巨大影响。云原生数据仓库可以利用人工智能技术自动分析数据库表的使用情况,对长期未使用的表进行存储成本方面的优化,将其迁移至冷数据层中进行存储以降低成本。它还可以自动分析出创建的索引是否合理,并智能地建议用户删除查询效率不高的索引或者不经常使用的索引。
云原生数据仓库为了诊断用户的SQL查询分析代码的性能问题,会记录用户执行的每个查询语句的具体情况,如每个查询语句的执行时间、各个阶段和各个算子所消耗的内存、网络和磁盘资源,以及耗时程度和并发度等。用户可以查看过去一段时间内慢查询的查询语句及其具体情况,从而进行针对性的优化;系统会自动识别资源消耗量非常大的查询语句或对应的算子,并提供相应的查询优化建议。数据仓库还可以利用人工智能技术发现数据中隐藏的模式和关联规则,帮助用户更好地理解数据中的规律,并自动调整资源分配和查询优化策略,以满足不同工作负载的需求。
图2 数据仓库的信息化与智能化
*以上内容摘自《云原生数据仓库:原理与实践》。