在现代数据仓库架构中,数据湖和数据仓库各自服务于不同的目的。数据湖作为大量数据的低成本存储,支持数据科学、机器学习等探索性场景。数据仓库存储高价值数据,并为企业使用的智能仪表盘提供支持。BI用户还使用它来查询高度结构化的数据,以获取有关业务的见解。
数据首先被从各种来源(本地数据库、社交媒体源等)收集到数据湖。然后使用Hadoop和Spark等大数据分析框架对这些数据进行转换,可以聚合和过滤多个数据集以生成高价值的结构化数据。然后将这些数据加载到云数据仓库中,以支持智能仪表盘,包括BI分析师使用SQL支持的交互式仪表盘。此外,数据湖还支持一组全新的场景,包括数据科学家的探索性分析以及可以反馈到其应用程序中的机器学习模型。现代数据仓库架构的简化表示如图2-8所示。
图2-8:现代数据仓库架构
你可能会有一些疑问:为什么不直接使用云数据软件?为什么两者之间需要数据湖?如果只有结构化数据,还需要数据湖吗?这些都是很好的问题。在此架构中需要数据湖有以下几个原因:
· 数据湖的成本远低于数据仓库,可以作为你的长期数据存储库。记住,数据湖通常用于存储大量数据(例如数十或数百P B),因此成本差异很大。
· 数据湖支持围绕数据科学和机器学习的各种现代化工具和框架,可以使用这些工具和框架来实现全新的场景。
· 借助数据湖,你的设计可根据不断增长的需求进行扩展,经得起未来考验。例如,可以使用初始数据湖架构每晚从本地系统加载数据,并为BI用户发布报告或智能仪表盘。此架构可扩展以支持引入实时数据,而无须重新构建解决方案。
· 所有形式和结构的数据在很大程度上都与组织相关。即使你现在专注于结构化数据,如上一个示例所示,你也可能在其他各种数据中找到价值,例如天气、社交媒体等。
如果还没有观察到这一点,则需要记住使用模式的差异:将数据加载到数据仓库时,将使用提取、转换和加载(ETL)模式,在将数据加载至数据仓库之前,从源中提取数据并将数据转换为数据仓库所遵循的格式。在数据湖中,你遵循ELT模式,从源中提取数据,按原样加载到数据湖中,然后执行转换。
继续以虚拟公司Klodars公司为例。它将利用现代数据仓库架构,并开始将数据从其运营数据库加载到数据湖中。它现在可以创建每日备份,并在数据湖中存储长达一年的备份(如果需要,也可以存储更多)。Klodars可以在其服务器上的运营数据库继续为其现有应用程序提供服务的同时执行此操作,从而确保公司运营的连续性。此外,Klodars计划以分析模式从社交媒体上加载与雨具和冬季装备相关的数据。这一架构还将使公司能够使用Apache Kafka等实时获取技术将其他数据(例如点击流)实时加载到数据湖存储中。
随着数据集的启动和准备就绪,数据工程团队将使用Apache Spark等工具处理来自其数据库转储和网站点击流中的结构化数据,以生成显示购物和销售趋势的高价值数据。该团队还将处理社交媒体信息流,并提取与雨具和冬季装备相关的数据,以及相同信息流显示的任何相关购买数据。该架构将使数据工程团队能够按计划(例如,每天)生成高价值数据,数据包括销售趋势、库存和供应、网站浏览趋势以及围绕雨水和冬季装备的社交媒体趋势。然后,此数据将被加载到数据仓库中,并定期(例如,每天)刷新。
存储在数据仓库中的数据是非常有价值的结构化数据。业务分析师将使用这些高价值数据来构建智能仪表盘,显示季度或月度销售趋势,以便销售团队可以根据销售趋势预测最近一段时间的销售情况。业务分析师还可以按地区、销售覆盖、合作伙伴和其他属性等因素对数据进行切片和切块,以便领导团队能够了解增长动力,并根据数据做出公司扩张战略的决策。营销团队通过在数据仓库上运行交互式查询来利用社交媒体和网站浏览趋势,从而了解要开发的下一组有针对性的营销活动。团队还可以通过将营销活动与销售结果相关联来了解其营销活动的影响。
影响并不止于此。Klodars现在已经组建了一个数据科学团队,该团队可以基于现有的数据集(如销售、社交媒体趋势和网站浏览趋势)进行构建,以找到各种因素的有趣相关性和影响,这些相关性和影响不容易通过手动分析进行处理。团队可以将其他数据集(例如天气数据、滑雪等冬季活动的数据等)引入数据湖,以便向领导团队提供有趣的见解。这些数据可以反馈给数据工程团队,以加载到仓库中,供领导、营销和销售团队使用。
图2-9展示了Klodars公司的现代数据仓库架构。
图2-9:Klodars公司如何利用现代数据仓库架构
凭借基于现代数据仓库架构的数据湖战略,借助数据提供的重点领域信息,Klodars公司能够通过优先扩展以满足其不断增长的客户需求。其现代化的数据仓库战略使公司能够进行创新,同时保持现有业务的更好的正常运行。将现有应用程序分阶段地迁移到现代化云架构中,使团队有时间深思熟虑地设计和实施这一过渡。
现代数据仓库的一个重要优势是,可以帮助业务分析师利用熟悉的BI工具集(基于SQL),同时围绕数据科学和机器学习实现更现代的场景,这些场景最初在数据仓库的本地实现中是不可能的。这主要是通过数据湖实现的,数据湖充当无孤岛数据存储,支持使用云原生服务的高级数据科学和机器学习场景,同时保留熟悉的数据仓库,例如面向BI用户的基于SQL的界面。此外,数据管理员可以使用熟悉的数据仓库访问控制方法,隔离BI团队对数据仓库的访问。随着时间的推移,本地运行的应用程序也可以迁移到云中,以完全消除维护两组基础设施的需要。此外,通过将运营数据长期备份到数据湖中,企业可以降低总体成本。
这种方法也存在一些挑战。数据工程师和管理员仍然需要维护两组基础设施:数据湖和数据仓库。在数据湖中存储各种数据的灵活性也带来了挑战。在数据湖中管理数据并保证数据质量是数据工程师和数据管理员现在必须解决的巨大挑战,这些是他们以前没有的问题。如果数据管理不当,数据湖还面临着发展成数据沼泽的风险,从而像大海捞针一样隐藏见解。如果BI用户或业务决策者需要新的数据集,则他们必须依靠数据工程师来处理这些数据并将其加载到仓库中,从而引入关键路径。此外,如果数据科学家想要将仓库中感兴趣的数据切片包含在探索性分析中,则他们需要将其以不同的数据格式以及不同的数据存储重新加载回数据湖,从而增加了共享的复杂性。