这两个系统之间的主要区别在于它们处理数据结构和使用的方式。数据湖用于存储原始非结构化数据,而数据仓库用于存储结构化的已处理数据。
特性 | 数据湖 | 数据仓库 |
数据类型 | 所有数据(原始数据、结构化数据、非结构化数据) | 经过处理的结构化数据 |
用途 | 尚未定义 | 明确具体 |
用户 | 数据科学家、数据工程师 | 数据分析师、商业智能分析师 |
无障碍功能 | 高度灵活,易于更改 | 更难改变,更僵化 |
正在处理 | 读时架构(使用时定义) | 写时架构(在保存之前定义) |
优势 |
|
|
特性
数据湖
数据仓库
数据类型
所有数据(原始数据、结构化数据、非结构化数据)
经过处理的结构化数据
用途
尚未定义
明确具体
用户
数据科学家、数据工程师
数据分析师、商业智能分析师
无障碍功能
高度灵活,易于更改
更难改变,更僵化
正在处理
读时架构(使用时定义)
写时架构(在保存之前定义)
优势
假设您正在开发一款移动游戏。您想要跟踪每位用户的每一次按钮点击。您还不知道哪些点击对下一次更新很重要。您可以将所有这些原始 JSON 事件直接发送到数据湖。稍后,数据科学家可以运行脚本来查找原始数据中的模式。
另一个例子是 IoT 传感器。如果有数千个传感器每秒发送一次温度数据,您可以将这些原始数据转储 (dump) 到数据湖中。这样,您就可以获得所有事件的完整历史记录,而无需先考虑格式设置问题。
假设有一家零售公司需要跟踪其销售情况。每天晚上,系统都会提取当天的所有订单,清理地址,计算税费,然后将这些信息保存到数据仓库中。然后,经理可以生成报告,准确查看在芝加哥售出了多少件蓝色衬衫。数据整齐有序,可用于制作图表。
银行也可能会使用数据仓库来跟踪账户。他们需要随时了解每位客户的确切余额。他们不想要原始日志,而是想要一个结构化表格,清楚地显示每笔交易。
数据科学家通常需要构建一个能够实时发现欺诈性预订的 AI 模型。由于数据来自许多来源,例如网站日志、移动应用事件和第三方合作伙伴,因此数据湖最适合用于训练 AI 模型。
首先,设置一个流水线,将每个原始事件发送到 Cloud Storage。这包括来自网站的杂乱 JSON 文件和来自移动应用的二进制日志。您无需担心数据的格式设置问题,因为 Cloud Storage 就是为处理这种规模的数据而构建的。
为了让数据对 AI 模型有用,您需要清理数据。您可以使用 Google Cloud Service for Apache Spark 运行无服务器 Apache Spark 作业。这样,您就可以将数百万条原始日志转换为结构化格式,而无需管理任何服务器或集群。
现在数据已准备就绪,您可以将其输入到机器学习工具中。由于最初的原始数据仍在数据湖中,因此您可以随时返回并查看可能有助于进一步优化模型的“隐藏”细节。
通过使用数据湖,您能够以低成本存储所有内容,并在构建模型时仅处理所需内容。
现在,我们来看看一个面向零售商的数据科学应用场景。您可以预测公司下个月将售出多少件冬外套,由于销售数据已经过清理并存储在数据库中,因此建议使用数据仓库来完成此任务。
首先是 BigQuery,它充当公司的中央数据仓库。销售数据已整理成整齐的表格,其中包含日期、价格和产品 ID 列。由于数据已经结构化,因此您无需花费任何时间来清理数据。
编写一个 SQL 查询,查看过去五年的冬季销售情况。即使有数十亿行数据,BigQuery 也能在几秒钟内找到答案。这种速度让您可以尝试不同的想法并快速优化预测。
预测准备就绪后,您可以使用内置工具创建信息中心。现在,营销团队可以准确地看到他们需要订购多少件外套。由于 BigQuery 是无服务器的,公司只需为运行的查询付费,从而降低了成本。
对于此应用场景,数据仓库是最佳工具,因为它使用已处于可用格式的数据,针对特定业务问题提供快速、可靠的答案。
选择数据湖还是数据仓库,取决于您要构建什么。如果您有大量原始数据,并希望使用代码进行探索,请从数据湖开始。如果您有特定的业务问题,并希望获得快速、可靠的报告,那么数据仓库可能是更好的选择。许多企业公司实际上将两者结合使用,以取长补短。