PB级云数据仓库服务Amazon Redshift发布近十年之际,Amazon Science采访了亚马逊云科技数据分析副总裁Rahul Pathak和亚马逊云科技高级首席工程师Ippokratis Pandis,他们分享了Amazon Redshift的起源、过去近十年的成长及其未来展望。
十年前,时任亚马逊云科技高级副总裁的Andy Jassy(现任Amazon CEO)在首届亚马逊云科技re:Invent大会上宣布推出Amazon Redshift预览版。与昂贵、缺乏弹性并需要投入大量的运营人力和资金的传统本地数据仓库解决方案相比,Amazon Redshift有了质的飞跃。
亚马逊首席技术官Werner Vogels在2012年11月28日的博文里表示:“我们很高兴推出了Amazon Redshift预览版,这是一个高性能、全托管的PB级云数仓服务。该服务的性能将显著提升客户的数据分析效率。Amazon.com的数据仓库团队一直在试用Amazon Redshift,他们对规模高达20亿行的数据集进行了一系列的典型查询,并将Amazon Redshift与本地数据仓库进行比较,结果显示Amazon Redshift将速度提高了10-150倍!”
这也是为何当时还是高级产品经理的Rahul Pathak以及整个Amazon Redshift团队,在该服务宣布推出之日充满信心。Rahul Pathak现任亚马逊云科技数据分析副总裁,他回忆:“我们没料到的是它会这么受客户欢迎。在提供预览版时,我们先让客户注册,了解他们的数据量和工作负载。约三天左右,我们就发现客户对Amazon Redshift的需求量比原先预计的整年需求量还多10倍。于是,我们在re:Invent一结束就迅速增加硬件订单,以确保在2013年初Amazon Redshift正式可用时能有充足的数据中心硬件支持。还好提前提供了预览版,否则我们将应接不暇。”
从那时起,Amazon Redshift团队一直加紧创新,满足客户不断增长的各种需求。如今,数以万计的客户每天使用Amazon Redshift处理EB级的数据,为高性能商业智能(BI)报告、仪表板应用程序、数据探索和实时分析等分析工作负载提供支持。
关于Redshift的起源
Rahul:在Amazon Redshift推出的前几年,我们的很多客户就已经把除了数据仓库之外的所有工作负载迁移到了云端。数据仓库常常是客户在企业本地运行的最后一个应用,而且他们仍面临如成本高昂、带有惩罚性质的许可费、难以扩展,并且无法分析所有数据等重重挑战。客户的诉求之一便是希望在云中大规模地运行具备足够性价比的数据仓库来分析所有数据,同时兼顾性能。
随后,我们开始着手构建、运营一个代号为Cookie Monster的全新项目。当时,客户数据量正在爆炸式增长,这些数据不仅来自关系型数据库,还包括各种各样的数据源。客户试用了Redshift的一个早期测试版,发现结果返回速度快得惊人,比他们之前使用的系统快了10到20倍,以至于他们还以为系统出现了问题。当然,我们也收到一些客户对某些早期功能不满意的反馈。我们及时与这些客户取得联系,了解他们面临的挑战、反馈,并在2013年2月该服务正式上线之前进行了调整。
当我们推出Amazon Redshift,并宣布定价为每年1000美元/TB时,人们简直不敢相信我们推出了一个性价比如此之高的服务。我们在几分钟内而不是几个月就能为客户提供一个数据仓库,这吸引了所有人的关注,被业界称为一个真正的游戏规则改变者。
Ippokratis:当时,我在IBM研究院从事数据库技术工作,我们意识到,以云服务的方式提供数据仓库将颠覆游戏规则。使用客户的本地系统通常需要几天或几周时间才能解决的问题,使用像Redshift这样的云数据仓库则只需要几分钟,应用云服务明显加快了创新的速度。
就传统的本地数据仓库而言,通常需要花费几个月甚至几年时间才能将新功能更新到最新的软件版本中;而在云端,新功能可以在几周内推出,客户无需改变其应用程序中的任何一行代码。Amazon Redshift的发布是一个拐点,让我对云和云数据仓库产生了真正的兴趣,并选择加入了亚马逊云科技。[Ippokratis于2015年10月作为首席工程师加入Amazon Redshift团队]。
关于Amazon Redshift在过去的十年中的发展
Ippokratis:为了满足客户的需求,Amazon Redshift已进入快速迭代过程。我们主要聚焦四个维度:1)满足客户高效处理日益复杂的分析查询的需求;2)客户需要处理更多数据,需要从数据中获得洞察的用户数量也大幅增长;3)客户需要更易于操作的系统;4)客户希望将Amazon Redshift与亚马逊云科技其他服务进行集成。
Amazon Redshift从诞生之日起,我们就致力于让它能为客户提供卓越的的高性价比。团队从一开始,就专注于尽最大可能降低核心查询执行延迟,以便系统能够响应更多作业请求,客户能够运行更多工作负载,并支持日常分析。为此,Amazon Redshift生成高度优化的C++代码,然后将其发送到并行数据库中的分发器,并执行这些高度优化的代码。这种方法让Amazon Redshift在查询执行方式上独树一帜,也使它一直成为服务的核心。
我们从来没有停止过创新,一直竭力为客户提更好的性能。另一个让我感兴趣的点是,客户在传统商业智能中,通常会为需要长时间运行的作业进行系统优化。但当我们从深入分析客户行为时,我们发现在每天运行的数十亿次查询中,90%的查询执行时间不到一秒。这一惊人发现打破了人们对数据仓库期望的传统认知,同时也改变了我们着力优化的代码方向。
Rahul:正如Ippokratis提到的,客户需要处理更多的数据,并使用这些数据为整个组织挖掘数据价值,这是我们重点关注的第二个方向。数据分析一直非常重要,但在八或十年前,却不一定是客户的关键任务应用。现在,这种情况已经改变,企业核心业务流程依赖于Amazon Redshift的高可用性和高性能。过去十年中,为支持这一目标,Amazon Redshift在架构上最大的变化是引入Redshift Managed Storage (RMS),将计算和存储分离,并聚焦各自领域,大举创新。
RMS支持跨多个可用区,具有99.999999999%的耐久性和99.99%的可用性。RMS既管理用户数据,也管理交易元数据。
另一个重大趋势是客户希望在不同的数据集之间进行查询和整合。我们在2017年推出了Redshift Spectrum,让Amazon Redshift成为云中第一个支持查询Amazon S3数据的数据仓库。之后Amazon Redshift运行查询的能力也得到进一步证实,该服务能够扫描Amazon S3以及集群中EB级的数据进行查询。这是另一个改变游戏规则的重要时刻。
像纳斯达克这样的客户已经广泛使用这种方式来查询本地磁盘上的数据,获得最高的性能,同时利用Amazon Redshift与数据湖的完美集成,实现对整个历史数据的高性能查询。除了查询数据湖,Amazon Redshift还支持对Amazon Aurora和Amazon RDS等交易型数据存储的综合查询,这也是一大创新。客户真正意义上拥有一个高性能的分析系统,能够查询所有重要数据,无需像其他系统那样管理复杂的集成过程。
Ippokratis: 易用性是我们关注的第三个方向。传统本地数据仓库需要企业IT部门配备专门的数据库管理员。过去十年中,客户期望已经发生了变化。现在,如果把数据仓库作为一种服务来提供,系统必须能够自动调整、修复和优化。这已经成为我们关注的一个重要领域,通过将机器学习和自动化纳入系统,增强易用性,减少管理员的工作量。
Rahul:在易用性方面,我想到了三个创新。第一是并发扩展。与工作负载管理类似,客户以前必须手动调整并发,或重置手动分割的工作负载集群。现在,系统会自动部署新的资源,自动伸缩,客户无需采取任何行动。
第二是自动表优化功能。系统能够通过查看工作负载和数据布局,并自动建议数据应该如何在集群节点中排序和分布。这个优化是一个不断学习的过程,它能够持续根据工作负载的变化进行调整,这是一个非常厉害的功能。
客户总是在增加更多数据集和更多用户,昨天的最优选到明天可能就不复存在了。Amazon Redshift可以自动识别,并根据数据存储进行调优。关于如何分析数据在多节点并行处理系统中的最佳分布键,这是个非常有趣的话题,我们在几年前发布的一篇图优化论文中专门进行了分析。我们对最佳分布键进行了自动优化,并加入了对数据压缩编码的处理。在一个分析系统中,如何压缩数据对结果有很大影响,因为扫描的数据越少,查询就越快。过去,客户必须自己决定选择什么样的压缩编码格式。现在,Amazon Redshift可以自动确定如何正确编码数据,为数据和工作负载提供尽可能高的性能。
第三个创新是去年re:Invent上推出的Amazon Redshift Serverless。Redshift Serverless可在几秒钟内自动设置和扩展资源,让客户无需管理数据仓库集群,即可以为PB级数据规模运行高性能分析工作负载,更轻松地从数据中快速获取洞察。通过Redshift Serverless,客户只需要配置一个endpoint即可与他们的数据进行互动,Redshift Serverless将自动扩展并自动管理系统,从根本上消除了复杂性。
客户可以只关注他们的数据,设置限制参数来管理预算,我们可在设定好的限制条件之下提供最佳性能。这是在易用性方面取得的另一个巨大进步,因为它无需客户进行任何操作。就目前客户对Redshift Serverless预览版的反馈来看,客户对该服务的表现非常满意。我们也很高兴推出了Amazon Redshift Serverless正式可用版本。
Ippokratis: 第四个重点是与其他亚马逊云科技服务的集成。集成是客户的使用行为从传统BI向前进化的重要方向。如今,云数据仓库是一个中心枢纽,与广泛的亚马逊云科技服务紧密集成。首先,我们为客户提供了将数据仓库中的数据与数据湖连接起来的能力。之后,客户表示需要访问Amazon Aurora和Amazon RDS等运营数据库中的高速业务数据,于是,Amazon Redshift增加了对OLTP交易数据库的访问支持。然后,我们增加了对流数据的支持,以及与Amazon SageMaker和Amazon Lambda的集成,客户就可以在不移动数据的情况下运行机器学习训练和推理,并进行通用计算。很明显,我们已经从传统BI系统转化成为深度集成的一组亚马逊云科技服务。
Rahul:集成的另一个重要方面是与机器学习服务。通过Redshift ML,数据分析师和数据库开发人员可以在Amazon Redshift中使用熟悉的 SQL 命令轻松创建、训练和应用机器学习模型。我们构建了从SQL语言创建模型的能力,它将数据摄取到Amazon S3并调用Amazon SageMaker,使用自动机器学习建立最合适的模型,并基于数据提供预测。
模型经高效编译并返回数据仓库,让客户无需额外的计算和成本,即可运行高性能推理。这种集成的优势在于,Amazon SageMaker中的每一次创新也就意味着Redshift ML变得更好。这是客户可以从我们的服务集成中受益的另一种方式。
集成的另一个重要的方向是Data Sharing。一旦使用 RA3 实例,将计算和存储层分离,就可以打开Data Sharing,让客户有能力与同一账户、其他账户、或者跨区域的集群共享数据。这意味着可以将数据消费者和生产者分开,实现现代化的数据网格等等架构上的创新。客户可以在不复制数据的情况下分享数据,从而达成不同账户间的数据一致性。
例如,数据科学家组别的用户可以安全地在共享数据中工作,报表或营销组的用户也可以。我们还将Data Sharing与Amazon Data Exchange整合在一起,客户可以搜索并订阅最新的第三方数据集,并在Amazon Redshift中立即进行查询。从释放数据潜能的角度来看,这种整合再次改变了游戏规则,帮助第三方供应商数据变现,更为用户提供安全、实时的数据访问和许可,方便在内部和跨组织进行高性能分析。Amazon Redshift是一个极其丰富的数据生态系统的一部分,这是一个巨大的优势,能满足客户在公司的各个组织之间更方便的提供/获取数据的需求。
展望Redshift及云数据仓库的发展前景
Rahul:未来,客户将产生越来越多的数据,他们希望更经济高效地分析这些数据。虽然数据量呈现指数级增长,但很显然,客户并不希望他们的成本也以指数级增长。这就要求我们继续创新,进一步提升性能以确保单位数据处理成本持续下降。
我们将继续在软件、硬件、芯片和机器学习应用等方面进行创新。在过去的10年中,我们已经兑现了这一承诺,今后亦将如此。
我非常自豪于我们团队目前取得的诸多成就,同时,我也同样对我们正在执着努力的事业而热血沸腾。
客户总是希望拥有更好的可用性,希望他们的数据是安全的以及与更多数据源整合的可能性,我们也计划继续围绕这些方向优化服务体验。可以确定的是,我们有能力提供极具高性价比、深度集成和安全可靠的服务,帮助客户创造更多价值。
Ippokratis: 这是一段不可思议的旅程。我们一直在与客户一路前行,不断重构。这背后离不开亚马逊云科技领导团队的支持,但更重要的是团队中出色的工程师、经理和产品团队,他们让一切成为可能。
更多阅读: