IBM-数据工程-II-笔记-全-

IBM 数据工程 II 笔记(全)

001:数据工程入门

在本课程中,我们将学习数据工程的基础概念、生态系统及其生命周期。数据工程是当今增长最快的技术职业之一,它专注于确保数据的准确性和可访问性,从而支持企业和组织做出关键决策。


🎯 数据工程的重要性

数据正以前所未有的速度增长,全球各地的企业、行业、机构和政府都在利用数据来指导未来决策。我们从数据中获取的价值主要取决于两点:数据的准确性在需要时高效访问所需数据的能力。这正是数据工程师的核心职责。

根据2020年Dice科技职位报告,数据工程师是增长最快的技术职业,年增长率高达50%


👥 适合人群

本课程适合所有希望成为数据工程师的学习者。无论你来自工程或计算机科学背景,还是非相关专业的毕业生,甚至是非毕业生但热爱编程的人,都可以通过本课程开启数据工程之旅。

如果你已经是数据领域的专业人士,对工程技术充满热情,或者是在技术岗位工作的专业人士,本课程将帮助你提升技能,并在这个领域获得更多机会。


📘 课程内容概述

本课程将介绍数据工程的核心概念、生态系统和生命周期。你将学习以下内容:

  • 数据数据存储库
  • 数据管道数据集成平台
  • 大数据基础
  • 数据平台的架构
  • 数据存储的设计考量
  • 如何提取、转换和清洗数据,使其适用于分析
  • 数据安全、隐私与合规性原则

🧠 专家分享

在课程的不同阶段,你将听到来自领域专家和实践者的分享。他们将分享专业知识,并为你提供成为数据工程师的可能路径建议。

以下是部分专家的介绍:

Ravahucha
“我是一名计算机工程师,经过培训成为数据工程师,目前负责IBM Skills Network的内容与战略团队。”

Amber Crooks
“我从事数据专业工作约20年。毕业后从IBM的DB2数据库管理员开始职业生涯,目前在一家专注于DevOps的组织担任首席数据库工程师。”

Xo Yang
“我是Coursera的数据工程师。”

Ragu Ckuru
“我在中西部一家大型零售商担任首席数据库管理员。”


🚀 开始学习

我们很高兴为你带来这门课程。祝贺你选择踏上这段学习之旅,祝你学习顺利!


📝 总结

在本课程中,我们一起探讨了数据工程的基本概念、其重要性以及适合学习的人群。我们还概述了课程的主要内容,并介绍了将在课程中分享经验的专家。数据工程是一个充满机遇的领域,掌握相关技能将帮助你在数据驱动的世界中脱颖而出。

002:现代数据生态系统

在本节课中,我们将要学习现代数据生态系统的构成、关键组成部分及其运作流程。我们将从数据来源开始,逐步了解数据如何被获取、处理并最终服务于各类用户,同时探讨新兴技术如何塑造这一生态系统。


根据《福布斯》2020年关于未来十年数据的报告,数据处理速度和带宽的持续提升,以及不断涌现的用于创建、共享和消费数据的新工具,加上全球范围内新增的数据生产者和消费者,共同确保了数据的增长势头不减。

数据在持续的良性循环中催生出更多数据。

一个现代数据生态系统包含一个由相互连接、独立且持续演进的实体构成的完整网络。

它包括了需要从不同来源整合的数据,生成洞察所需的不同类型的分析及技能,积极协作并根据生成的洞察采取行动的利益相关者,以及按需存储、处理和传播数据的工具、应用程序和基础设施。


🌐 数据来源

上一节我们介绍了现代数据生态系统的整体概念,本节中我们来看看数据的来源。数据以各种结构化和非结构化数据集的形式存在。

以下是主要的数据来源类型:

  • 文本、图像、视频
  • 点击流、用户对话
  • 社交媒体平台
  • 物联网设备
  • 流式传输数据的实时事件
  • 遗留数据库
  • 来自专业数据提供商和机构的数据

数据来源从未如此多样化和动态化。


📥 数据获取与整合

当你面对如此多不同的数据源时,第一步是将数据从原始来源复制到数据存储库中。

在此阶段,你的工作重点是获取所需的数据,处理数据格式、来源以及可以拉取这些数据的接口。

在此阶段需要应对的一些挑战包括:

  • 所获取数据的可靠性
  • 所获取数据的安全性
  • 所获取数据的完整性

🧹 数据组织与治理

原始数据汇集到一处后,需要对其进行组织、清理和优化,以便最终用户访问。数据还需要符合组织内执行的合规性和标准。

例如,遵守管理个人数据(如健康数据、生物识别数据或物联网设备中的家庭数据)存储和使用的准则。

另一个例子是遵循组织内的主数据表,以确保主数据在组织所有应用和系统中的标准化。

此阶段的关键挑战可能涉及:

  • 数据管理
  • 使用能提供高可用性灵活性可访问性安全性的数据存储库


🚀 数据消费与应用

最后,我们的业务利益相关者、应用程序、程序员、分析师和数据科学用例都需要从企业数据存储库中提取这些数据。

此阶段的关键挑战可能包括:

  • 能够根据用户特定需求将数据传递给最终用户的接口
  • 能够根据用户特定需求将数据传递给最终用户的API
  • 能够根据用户特定需求将数据传递给最终用户的应用程序

以下是不同用户的数据需求示例:

  • 数据分析师可能需要原始数据进行处理。
  • 业务利益相关者可能需要报告和仪表板。
  • 应用程序可能需要自定义API来拉取这些数据。

⚙️ 塑造生态系统的关键技术

必须注意到一些新兴技术正在塑造当今的数据生态系统及其可能性。

例如,云计算机器学习大数据等。

得益于云技术,当今每个企业都能获得:

  • 无限存储
  • 高性能计算
  • 开源技术
  • 机器学习技术
  • 最新的工具和库

数据科学家通过在历史数据上训练机器学习算法来创建预测模型。

此外,关于大数据:今天我们处理的数据集如此庞大和多样,以至于传统工具和分析方法已不再足够,这为新工具、新技术以及新知识和洞察铺平了道路。我们将在本课程后续部分进一步学习大数据及其对商业决策的影响。


📝 总结

本节课中我们一起学习了现代数据生态系统的完整流程。我们从多样化的数据来源开始,了解了数据获取与整合阶段的挑战,探讨了数据组织、清理与治理的重要性,最后看到了数据如何被不同的利益相关者和应用所消费。同时,我们也认识到云计算机器学习大数据等关键技术正在持续推动这一生态系统的演进与发展。

003:数据生态系统关键参与者

在本节课中,我们将学习数据生态系统中的关键角色及其职责。理解这些角色如何协作,是将数据转化为商业价值的基础。

如今,那些利用数据发现机遇、并应用这些知识实现差异化的组织,正引领着未来。无论是通过分析金融交易模式来检测欺诈,使用推荐引擎提升转化率,挖掘社交媒体帖子以了解客户心声,还是品牌根据客户行为分析提供个性化服务,商业领袖们都认识到,数据是获取竞争优势的关键。

要从数据中获取价值,需要大量不同的技能组合和扮演不同角色的人员。在本视频中,我们将探讨数据工程师、数据分析师、数据科学家、业务分析师和商业智能分析师在帮助组织利用海量数据并将其转化为可操作见解方面所扮演的角色。

👷‍♂️ 数据工程师

一切始于数据工程师。数据工程师是开发和维护数据架构,并使数据可用于业务运营和分析的人员。

数据工程师在数据生态系统内工作,负责:

  • 从不同来源提取、整合和组织数据。
  • 清洗、转换和准备数据。
  • 设计、存储和管理数据仓库中的数据。

他们使数据能够以各种业务应用以及数据分析师、数据科学家等利益相关者可以使用的格式和系统进行访问。

一名数据工程师必须具备良好的编程知识、扎实的系统和技术架构知识,以及对关系型数据库和非关系型数据存储的深入理解。

📈 数据分析师

上一节我们介绍了数据工程师,他们为数据应用搭建了基础。本节中我们来看看数据分析师,他们是数据的翻译者。

简而言之,数据分析师将数据和数字翻译成通俗语言,以便组织做出决策。

以下是数据分析师的主要工作内容:

  • 检查和清洗数据以获取见解。
  • 识别相关性,寻找模式。
  • 应用统计方法分析和挖掘数据。
  • 可视化数据,以解释和呈现数据分析的结果。

分析师负责回答诸如以下问题:我们网站上的搜索功能,用户体验总体是好是坏?人们对我们的品牌重塑举措普遍看法如何?一种产品的销售与另一种产品的销售是否存在关联?

数据分析师需要熟练掌握电子表格、编写查询语句,以及使用统计工具创建图表和仪表板。现代数据分析师还需要具备一定的编程技能,同时需要强大的分析和叙事能力。

🔬 数据科学家

了解了数据分析师如何解读现状后,我们再来看看数据科学家如何预测未来。

数据科学家分析数据以获得可操作的见解,并构建机器学习或深度学习模型,这些模型基于历史数据进行训练,以创建预测模型。

数据科学家负责回答诸如以下问题:下个月我可能会获得多少新的社交媒体关注者?下一季度我可能有多少客户会流失到竞争对手那里?这笔金融交易对该客户来说是否异常?

数据科学家需要具备数学、统计学知识,并对编程语言、数据库和构建数据模型有相当的理解。他们还需要具备领域知识。

👔 业务分析师与商业智能分析师

除了上述技术角色,业务分析师和商业智能分析师则更侧重于商业决策。

业务分析师利用数据分析师和数据科学家的工作成果,研究对其业务的可能影响以及他们需要采取或建议的行动。商业智能分析师的工作类似,但他们的重点是影响其业务的市场力量和外部因素。

他们通过组织和监控不同业务职能的数据,并探索这些数据以提取能改善业务绩效的见解和可执行方案,来提供商业智能解决方案。

🎯 总结

本节课中我们一起学习了数据生态系统中的五个关键角色及其协作关系。

简单总结如下:

  • 数据工程将原始数据转换为可用数据。
  • 数据分析利用这些数据生成见解。
  • 数据科学家使用数据分析和数据工程,基于过去的数据预测未来。
  • 业务分析师和商业智能分析师利用这些见解和预测来推动有利于其业务增长和发展的决策。

有趣的是,数据专业人士从数据领域的一个角色开始职业生涯,然后通过补充技能过渡到数据生态系统内的另一个角色,这种情况并不少见。

004:数据工程定义 📊

在本节课中,我们将深入探讨现代数据生态系统中数据工程的范围。我们将了解数据工程的核心任务、所需技能以及它在组织中的实际应用。


概述

数据工程的核心是处理数据的流动与访问机制,其目标是提供高质量数据,以支持基于事实和数据驱动的决策。随着数据量的增长,数据工程领域也从管理单一数据库扩展到处理广泛的数据源、结构和类型。

上一节我们介绍了数据工程的基本概念,本节中我们来看看数据工程的具体任务范围。


数据工程的核心任务

数据工程主要围绕四大任务展开:收集源数据处理数据存储数据安全地向用户提供数据

以下是每一项任务的详细说明:

1. 收集源数据

此任务涉及从不同来源提取、集成和组织数据,以收集所需的数据集。

  • 开发工具、工作流和流程:帮助从多个来源获取数据。
  • 设计、构建和维护可扩展的数据架构:用于存储数据。数据可以存储在数据库、数据仓库、数据湖或其他类型的数据存储库中。

2. 处理数据

此任务包括清洗、转换和准备数据,使其变得可用。

  • 实施和维护分布式系统:用于大规模数据处理。
  • 设计数据管道:用于将数据提取、转换并加载到数据存储库中。
  • 设计或实施解决方案:用于验证和保障数据的质量、隐私和安全性。
  • 优化工具、系统和流程:以提高性能、可靠性和可扩展性。
  • 确保数据符合所有法规和合规性指南

3. 存储数据

此任务旨在确保数据的可靠性和易于获取。

  • 架构或实施数据存储:用于存放处理后的数据。
  • 确保系统可扩展:同时考虑到数据和业务需求的不断演变。
  • 确保配备适当的工具和系统:以处理数据隐私、安全合规、监控、备份和恢复。

4. 安全地向用户提供数据

此任务确保最终用户能够安全、有效地访问和使用数据。

  • 使用API、服务和程序:根据定义的参数检索数据,供最终用户使用。
  • 开发报告和仪表板:向用户展示数据,帮助他们从中获取洞察。
  • 建立正确的措施和制衡机制:以保持数据安全,并为用户提供基于权限的访问。


数据工程是团队协作

需要强调的是,数据工程是一项团队运动。没有人被期望拥有数据工程广泛任务范围内所需的所有知识、技能和专业能力。

例如:

  • 要架构任何数据管理系统(无论是用于收集源数据还是存储已处理、可供分析的数据),你需要具备架构师的技能。
  • 要确保数据存储可用并优化使用,你需要具备数据库方面的专业知识。
  • 同样,熟练掌握数据库工具、编程语言和分布式系统都属于数据工程的范畴,但它们可能需要不同的技能组合。

此外,并非所有团队和组织都需要建立端到端的数据工程实践。市场上有许多工具、应用程序和解决方案(包括本地部署和基于云的),可以根据个人需求进行评估和选用。


总结

本节课中,我们一起学习了数据工程如何运作,以提供一个健壮且可扩展的结构,从而为决策提供高质量数据。与其他数据专业相比,数据工程更侧重于数据操作所涉及的工具和技术,但它同样关乎理解数据的复杂性,以及如何最终利用数据进行事实发现和决策制定。

005:数据工程的定义视角

在本节课中,我们将聆听几位数据专业人士的分享,了解他们如何定义数据工程,以及数据工程与数据分析和数据科学有何不同。


🏗️ 什么是数据工程?

上一节我们了解了课程的整体目标,本节中我们来看看数据工程的具体定义。

数据工程的任务是设计、构建和维护数据基础设施与平台。这些数据基础设施可以包括数据库、大数据存储库,以及用于在这些系统之间转换和移动数据的数据管道

因此,数据工程师是负责开发和优化数据系统,并使数据可用于分析的人。而数据分析师则是在这些系统中分析数据以生成报告和获取洞察的人。数据科学家则更进一步,对数据进行更深入的分析,并开发预测模型来解决更复杂的数据问题。


🔧 数据工程师的角色:数据的“管道工”

理解了基本定义后,我们来看看数据工程师的具体角色。

作为数据工程师,我们就像是数据的“管道工”。我们确保数据高度可用一致安全可恢复。我们不会花太多时间直接处理或分析数据,而是专注于确保数据已准备就绪,供其他人完成这些工作。

很多时候,数据科学和数据分析会利用我们存储的数据。这也意味着我们需要与其他数据专业人士紧密合作,以确保数据符合他们的需求,并以真正有助于他们的方式提供。


⚙️ 数据工程的核心工作

明确了角色定位,接下来我们深入探讨数据工程的核心工作内容。

数据工程的核心是设计、维护和优化系统,以帮助企业和公司充分利用其数据。具体而言,它涉及选择正确的数据库、正确的存储系统、正确的云架构或云平台。这样,当我们把所有这些东西整合在一起时,组织内部的数据流是无缝的,数据可以以最少的努力和尽可能快的速度,在任何时间交付给任何需要的人。

在一个拥有最佳数据工程流程的理想组织中,任何被授权的人都可以在瞬间访问任何数据。


🔄 数据工程与数据分析/科学的区别与联系

现在我们已经了解了数据工程的工作,本节中我们来看看它与其他数据角色的关系。

如果你谈论数据分析师和数据科学家,他们的工作可以被视为上游工作。也就是说,在数据工程师完成工作并使数据可用之后,数据分析师和数据科学家才能利用这些数据进行分析并得出预测。

以下是数据工程与数据分析/科学的关键区别:

  • 数据工程师:从多个来源提取和收集原始数据,对其进行转换,并以可用的形式存储。
  • 数据科学家/分析师:在数据工程师准备的数据基础上进行分析,并试图从中获取洞察。

你可以将数据工程视为数据分析和数据科学的前驱。数据工程师充当赋能者,使数据分析师和数据科学家的数据项目变为现实。例如,他们可以帮助数据分析师和数据科学家选择正确的数据和工具,并通过构建所需的数据管道来满足他们的数据需求,从而帮助他们构建报告和执行统计分析。


📝 课程总结

在本节课中,我们一起学习了数据工程的定义和视角。我们了解到,数据工程专注于构建和维护可靠、高效的数据基础设施,是数据价值链的基石。它确保高质量的数据能够顺畅地流向数据分析师和数据科学家,从而支持有效的分析和决策。记住,数据工程师是幕后英雄,他们搭建的“管道”让数据的价值得以释放。

006:数据工程的演进视角

在本节课中,我们将聆听几位数据专业人士的分享,了解数据工程在过去二十年间是如何演变的。

🌍 数据工程领域的巨变

与二十年前相比,数据工程的生态系统或格局已截然不同,甚至可以说是面目全非。

以下是当今数据工程场景与二十年前的主要区别:

  • 数据规模:我们今天处理的数据量,在二十年前是无法想象的。
  • 数据多样性:我们今天处理着各种类型和格式的数据,其中许多在二十年前甚至不存在。
  • 数据库技术:二十年前,我们并未讨论NoSQL数据库的概念,而今天我们使用多种NoSQL数据库。
  • 大数据概念:二十年前,“大数据”闻所未闻,而今天它已成为许多企业和组织的标配。

⏱️ 期望与工作方式的转变

我看到的另一个主要区别是,对数据工程的期望值大幅提高了。如今,当一项任务交给数据工程师时,要求的周转时间要短得多。以前,我们可能需要几天时间来提出解决方案,而现在的期望是能在几小时内给出方案。

此外,今天的数据工程服务离不开自动化工具。我们需要大量自动化工具来确保能够交付数据工程服务。

🚀 技术演进与角色扩展

我大约在25年前进入这个领域,见证了巨大的技术演进,尤其是在数据和数据技术系统方面。

  • 云计算:得益于云计算,数据基础设施现在可以作为服务提供。因此,今天的数据工程师需要从零开始搭建的工作大大减少。他们可以将更多时间花在有价值的事情上,而减少在系统设置和管理上的时间。
  • 数据存储:当我刚开始从事数据工程时,主要涉及使用关系数据库和数据仓库。现在则出现了许多NoSQL数据库和其他类型的数据存储库。
  • 大数据革命:围绕大数据发生了重大变革。今天的数据工程师需要知道如何使用多种不同的大数据处理系统和管道。
  • 技能广度:虽然仍有专业细分,但我认为今天的数据工程师需要了解更广泛的工具和数据系统,以及如何有效地利用它们解决不同类型的数据问题。

🔄 从集中规划到协作对话

在过去的几十年里,我们处理数据的方式发生了非常显著的变化。我刚开始时,采用的是非常层级化的方法:由顶层的架构师、企业架构师或数据架构师来决定组织内如何存储数据。通常只支持两三个平台,我们就严格遵循这些明确定义的方案。

而在过去的20年里,逐渐过渡到了另一种情况:数据存储方式的需求越来越多地来自开发人员。开发人员有特定的需求,并以特定的方式存储数据。有趣的是,需求来自不同的方向,这稍微改变了我们的角色。

因此,我们现在要做的不是确保自己精通之前定义好的那两三个平台,而是需要接纳开发人员提出的各种不同需求和需要,并与他们合作,确保他们所做的选择适合长期的数据操作、数据使用以及安全可靠的数据存储。这更像是一个关于“事情如何发生”的对话,对数据工程师来说,也更像是一次学习探索——走出去,找出满足开发人员需求的最佳新方法,同时仍能构建组织真正需要的可靠、高可用且安全的数据平台。

📈 数据源的多样化驱动角色演变

在过去的几十年里,数据工程发生了巨大的演变。我15年前作为一名数据库管理员起步时,数据工程还不是那么热门的话题。虽然有数据工程师,但不像现在这样需求旺盛。

这背后的原因基本上是各种数据源的演变。例如,现在我们有了物联网相关数据,各种传感器信息被输入到这些数据源中,还有来自Twitter或天气API等的API数据流,万物互联。因此,对多样化数据源的需求也随之演变。

例如,我们长期拥有关系数据库(可能已有四五十年),现在我们有了列式存储(如Cassandra或HBase)、键值对数据库、用于大数据的Hadoop,以及文档存储(如MongoDB或Couchbase)。作为一名数据工程师,你需要熟悉所有这些类型的数据源。随着数据源的演进和数据多样性的增加,数据工程师的角色在过去几十年里发生了显著变化。

🛠️ 现代数据工程师的新要求

我只在数据工程领域工作了两年,所以只能分享我在过去两年中的学习和观察。

我认为,传统上数据工程师主要专注于数据库管理、ETL管道和数据可视化。然而,近年来,我看到了越来越多的需求,要求数据工程师理解分布式计算和DevOps,并实现机器学习模型等。


本节课总结

在本节课中,我们一起学习了数据工程在过去二十年的演进历程。我们了解到,数据工程领域在数据规模、多样性、技术栈(如NoSQL和云计算)以及工作期望(如更快的周转时间和自动化)方面都发生了根本性变化。数据工程师的角色已从专注于少数特定平台,转变为需要与开发人员广泛协作,并掌握包括大数据系统、分布式计算在内的更广泛技能。这种演变是由数据源的爆炸式增长和技术的快速进步共同驱动的。

007:数据工程师的职责与技能 🛠️

在本节课中,我们将学习数据工程师的核心职责以及成为一名数据工程师所需具备的各项技能。数据工程师是数据生态系统中至关重要的角色,他们负责构建和维护数据基础设施,确保数据能够被高效、可靠地用于分析和决策。

概述

数据工程师的总体职责是向数据消费者提供“可用于分析的数据”。这意味着数据必须是准确、可靠、合规的,并且能够在消费者需要时被便捷地访问。

接下来,我们将详细探讨数据工程师的具体职责,并了解支撑这些职责所需的技术、职能和软技能。

数据工程师的核心职责

数据工程师的工作贯穿数据的整个生命周期。以下是他们的主要职责:

  • 提取、组织和集成数据:从各种不同的数据源中提取数据,并进行组织和集成。
  • 准备用于分析和报告的数据:通过转换和清洗数据,使其适合进行分析和生成报告。
  • 设计和管理数据管道:设计和维护数据从源头到目标系统的完整流转路径。
  • 设置和管理基础设施:搭建并管理用于数据摄取、处理和存储所需的基础设施。这包括:
    • 数据平台
    • 用于聚合源数据的数据存储
    • 用于大规模数据处理的分布式系统
    • 用于存储和分发“分析就绪”数据的数据仓库

数据工程师的技能组合

数据工程是软件工程和数据科学的交叉领域。要胜任这项工作,需要掌握多方面的技能。

技术技能

技术技能是数据工程师的基石。以下是关键的技术领域:

  • 操作系统知识:熟悉如 Linux 和 Windows 等操作系统,包括常用的管理工具、系统实用程序和命令。
  • 基础设施组件知识:了解虚拟机、网络以及负载均衡、应用性能监控等应用服务。同时,也需要熟悉亚马逊、谷歌、IBM 和微软等公司提供的云服务。
  • 数据库与数据仓库经验
    • 关系型数据库管理系统,如 IBM DB2、MySQL、Oracle Database 和 PostgreSQL。
    • NoSQL 数据库,如 Redis、MongoDB、Cassandra 和 Neo4j。
    • 数据仓库,如 Oracle Exadata、IBM DB2 Warehouse on Cloud、IBM Netezza Performance Server 和 Amazon Redshift。
  • 数据管道熟练度:熟练使用流行的数据管道解决方案,如 Apache Beam、Airflow 和 Dataflow。
  • ETL 工具经验:有使用 ETL 工具的经验,例如 IBM Infosphere Information Server、AWS Glue 和 Improvvado。
  • 数据查询与处理语言
    • 用于访问和操作数据库中数据的查询语言,如用于关系型数据库的 SQL,以及用于 NoSQL 数据库的类 SQL 查询语言。
    • 编程语言,如 PythonRJava
    • 脚本语言,如 Unix/Linux Shell 和 PowerShell。
  • 大数据处理工具:熟悉 Hadoop、Hive 和 Spark 等大数据处理工具。

数据工程流程涉及多种不同的工具和技术。对同类技术有实际了解,有助于你在不同工具之间权衡利弊,并做出合适的推荐。

职能技能

除了日常使用的工具和技术,数据工程师还需要深刻理解数据科学家、分析师和业务用户如何利用“分析就绪”的数据。以下是一些重要的职能技能:

  • 将业务需求转化为技术规格的能力。
  • 参与完整软件开发生命周期的能力,包括构思、架构、设计、原型制作、测试、部署和监控。
  • 数据在业务中潜在应用的理解。
  • 数据管理不善风险的理解,这主要涵盖数据质量、隐私、安全性和合规性。

软技能

数据工程是一项团队运动。一个项目中可能有多位各有所长的数据工程师协作,并与分析师、数据科学家、业务用户及其他技术团队等数据消费者紧密互动。因此,人际交往能力、团队合作与协作精神对数据工程师至关重要。

作为一名数据工程师,你需要能够与技术和非技术利益相关者进行有效沟通,以确保双方都能清晰理解。

总结

本节课我们一起学习了数据工程师的职责和所需的技能组合。数据工程需要广泛的技能,没有一位数据工程师能精通所有领域。这意味着你基本上需要选择一个或多个专业方向,但同时要对所有领域有良好的理解,以便做出更明智的决策。

你的技能会随着经验、你选择专注的领域以及你在自我提升上投入的时间而不断增长。

008:数据工程师的技能与素质视角

在本节课中,我们将学习成为一名成功的数据工程师所需具备的技术技能与软技能。课程内容分为两部分:第一部分聚焦于核心技术能力,第二部分探讨关键的个人素质与软技能。


🛠️ 第一部分:核心技术技能

上一部分我们了解了数据工程领域的概貌,本节中我们来看看数据工程师需要掌握哪些具体的技术技能。

数据工程是一项技术快速演进的领域。显然,你需要热爱数据,否则不应成为一名数据工程师。至于技术技能,它很大程度上取决于数据工程师需要完成的具体工作需求。

例如:

  • 如果你在零售行业工作,可能需要一套技能组合,比如关系型数据库CassandraGoogle BigTable这类架构相关知识,因为公司需要构建全年无休的应用程序,并使用Kafka流WebSphere MQ等工具构建管道来处理交易数据的后台处理。
  • 如果你在医疗保健行业工作,可能需要另一套不同的技能组合。
  • 如果你在像Twitter或Facebook这样的社交媒体公司工作,则需要其他类型的技能组合。

因此,数据工程是一个非常广泛的领域,其技术要求因职位角色而异。

技术部分实际上是相对容易的,因为你可以学习新技术、摸索新事物。重要的是,你需要掌握数据结构和数据处理背后的基本理论。如果你不喜欢变化、不喜欢学习,那么数据工程可能不适合你。任何数据领域都存在大量变化,你必须愿意适应这些变化。

以下是成为一名数据工程师需要具备的一些核心技能:

  • 网络技能:你需要具备良好的网络知识,包括局域网和广域网。
  • 存储理解:你需要擅长理解不同类型的存储,包括本地存储和云存储。
  • 操作系统知识:你需要对操作系统有非常深入的了解。
  • 数据库专家:你应该成为数据库专家,既包括关系型数据库管理系统,也包括NoSQL数据库。
  • 编程能力:编程知识非常有帮助,掌握任何一门语言,如JavaCPython,都会是极大的加分项。
  • 自动化技能:在当今的数据工程领域,自动化是一项非常重要的技术技能。

具体来说,数据工程师需要:

  1. 掌握编程语言与系统:能够使用一种或多种编程语言,熟悉操作系统,并了解IT基础设施和架构。这包括计算机架构、云、虚拟机、容器以及不同类型的存储及其使用方法。
  2. 精通SQL与数据库:需要非常熟练地掌握SQL,并对一种或多种数据库(包括关系型和NoSQL)具备实际工作知识。
  3. 了解数据工程生态系统:虽然不是入门必需,但拥有对更广泛数据工程生态系统的知识和经验非常有用。这包括ETL(提取、转换、加载)数据管道数据仓库数据湖以及其他大数据系统。

不同公司对数据工程师的要求各不相同,即使在同一家公司内,对每位工程师所需的技能也可能随着时间而变化。

但总的来说,我认为数据工程师必备的四项核心技术技能是:

  1. SQL数据建模
  2. ETL方法论
  3. 编程技能(如 Python

🤝 第二部分:关键素质与软技能

上一节我们探讨了技术硬技能,本节中我们来听听数据专业人士对成功数据工程师所需素质和软技能的看法。

要成为一名成功的数据工程师,你需要享受解决问题和故障排除的过程。你需要擅长团队合作、协作和沟通。此外,拥有良好的逻辑思维和对编码的兴趣对数据工程师非常有用。

从非技术的角度来看,我们期望数据工程师是一个问题解决者,并希望他/她具备出色的沟通能力。因为数据工程师需要持续与多个团队协作,良好的沟通能力至关重要。

你应该充满好奇心,能够向业务用户和技术用户提出大量问题,然后利用这些答案中的知识,基于可靠的数据源构建稳健的数据管道。

我的观点一直是,无论是作为DBA还是数据工程师,最优秀的人都是注重细节的控制狂。这是因为处理数据涉及大量细节,真正适应并深入细节、确保不遗漏任何环节非常重要。之所以是“控制狂”,是因为我的数据环境就像我的孩子,有时我花在它上面的时间甚至和陪伴孩子一样多。因此,我需要掌控或了解决策过程,以及这些特定选择所带来的权衡。

最重要的技能是软技能。你需要能够与开发人员互动,能够向管理层捍卫你的选择,能够为你所做的决策及其细节、重要性以及为何需要以特定方式完成工作进行辩护。因此,这些能力,加上职业道德和学习热情,是最重要的。

好奇心、良好的沟通能力和学习的渴望,对数据工程师来说至关重要。


📝 总结

在本节课中,我们一起学习了成为一名成功数据工程师所需的两大方面能力。

技术技能是基础,包括对数据库(SQL/NoSQL)、编程(如Python)、数据建模、ETL流程、系统架构和自动化工具的掌握。这些技能因具体行业和职位而异,但核心是处理和理解数据的能力。

软技能与个人素质则决定了你能否高效地运用技术。这包括强大的问题解决能力、出色的沟通与协作技巧好奇心注重细节的严谨态度,以及持续学习和适应变化的热情与能力。

技术可以学习,但对数据的热情、解决问题的思维以及与人协作的软实力,共同构成了优秀数据工程师的完整画像。

009:数据工程师的日常

在本节课中,我们将通过一个真实案例,了解数据工程师如何将数据科学家的原型转化为可运行的解决方案。我们将跟随一位数据工程师,看她如何从社交媒体收集数据、处理数据,并最终构建一个自动化的数据管道。


概述:一个洗发水新品发布的故事

我们的故事发生在一家跨国护发产品公司。公司即将推出一款新洗发水。在当今时代,社交媒体上的讨论会直接影响销售数据和品牌形象。因此,业务团队希望在产品发布第一天起,就能实时监控客户情绪。

数据科学家团队为此创建了一个仪表板原型,它使用情感分析算法和模拟数据来展示不同社交媒体和用户群体中的客户情绪得分。这个想法获得了认可,并交由业务团队实施。

接下来,数据工程师团队的任务就是将这个原型变为现实。


第一步:收集数据

上一节我们了解了业务需求,本节中我们来看看数据工程师如何开始工作。我的首要任务是将业务团队确定的所有社交媒体和在线来源的数据提取到公司的环境中。

以下是数据收集的具体步骤:

  1. 从社交媒体平台提取数据:我首先从Twitter等平台,使用产品相关的话题标签,将推文和帖子提取到临时存储中。
  2. 从电商和博客收集数据:接着,我转向电商门户和产品评测博客,收集与我们产品相关的数据,同样将其移至临时存储。这个活动被称为网络爬取

收集到的数据格式多样,包括推文、帖子、评论、文章甚至表情包。


第二步:处理与转换数据

收集到所有必要数据后,我对其进行检查,以评估在将其加载到数据库之前需要进行哪些转换。

我们决定创建一个Python程序来处理数据并将其加载到数据库。数据处理的核心是ETL过程:

# 伪代码示例:数据清洗与转换
def clean_and_transform(raw_data):
    cleaned_data = remove_duplicates(raw_data)
    transformed_data = standardize_format(cleaned_data)
    return transformed_data

我清理了数据,并将其转换为适合存入数据库的格式。这个数据库将是仪表板提取数据以生成报告的基础。


第三步:展示结果与构建自动化管道

现在,是时候向数据科学家展示成果了。结果完全符合他们的期望,这意味着工作完成得很好。

但工作并未就此结束。如果每次业务用户需要查看最新数据时,都必须向我们提出更新数据的请求,这种解决方案效率很低。理想情况下,他们应该能够实时了解客户情绪和品牌认知。

因此,我们的下一步行动是构建一个数据管道,能够持续地提取转换加载数据。

# 伪代码示例:自动化数据管道
while True:
    new_data = extract_from_sources()
    processed_data = transform(new_data)
    load_to_database(processed_data)
    time.sleep(update_interval)

一旦这个流程建立起来,业务团队每次登录仪表板时,都能看到实时的数据投影。


总结

本节课中,我们一起学习了数据工程师在一个完整项目中的日常工作流程:

  1. 理解需求:将业务目标(监控社交媒体情绪)转化为数据任务。
  2. 数据收集:从多种来源(社交媒体、电商、博客)提取原始数据。
  3. 数据处理:清洗、转换数据,使其适合存储和分析。
  4. 构建解决方案:不仅实现一次性需求,更要设计可重复、自动化的数据管道,确保数据的持续更新和可用性。

通过这个案例,你可以看到数据工程师是连接数据源与数据应用(如仪表板)的关键桥梁,他们确保数据流可靠、高效,并能最终赋能业务决策。

010:数据工程生态系统概览

在本节课中,我们将要学习数据工程师的生态系统。这个生态系统包含了从不同来源提取数据所需的基础设施、工具、框架和流程,涵盖了数据管道的架构与管理、数据的转换、集成与存储、工作流的自动化与优化,以及数据工程流程中所需应用程序的开发。


🗂️ 数据分类

首先,我们来看看数据。根据数据结构的明确程度,数据可以分为结构化数据半结构化数据非结构化数据

  • 结构化数据遵循严格的格式,可以整齐地组织成行和列。这类数据通常出现在数据库和电子表格中。
  • 半结构化数据混合了具有一致特征的数据和不遵循严格结构的数据。例如,电子邮件包含发件人、收件人等结构化数据,也包含邮件正文这类非结构化数据。
  • 非结构化数据是复杂且主要为定性信息的数据,无法简化为行和列。例如,照片、视频、文本文件、PDF和社交媒体内容。

数据的类型决定了可以收集和存储它的数据仓库类型,也决定了可用于查询或处理数据的工具。


🌐 数据来源与格式

数据来源广泛,格式多样。它们可以从各种数据源收集,包括关系型和非关系型数据库、API、网络服务、数据流、社交平台和传感器设备。


🗄️ 数据仓库

数据工程师的生态系统还包括数据仓库。数据仓库主要有两种类型:事务型系统分析型系统

  • 事务型系统,也称为在线事务处理(OLTP)系统,旨在存储大量的日常运营数据,例如网上银行交易、ATM交易和航空订票。虽然OLTP数据库通常是关系型的,但也可以是非关系型的。
  • 分析型系统,也称为在线分析处理(OLAP)系统,为执行复杂的数据分析而优化。这些系统包括关系型和非关系型数据库、数据仓库、数据集市、数据湖和大数据存储。

数据的类型、格式、来源和使用场景共同决定了哪种数据仓库最为理想。


🔄 数据集成与管道

一旦来自不同来源的数据被收集起来,就需要进行处理、清理和集成,以便用户可以通过接口访问。数据集成工具将来自不同来源的数据组合成一个统一的视图,供用户查询和操作。

这就引出了数据管道的概念。数据管道是一套覆盖数据从源系统到目标系统整个旅程的工具和流程。数据在管道内通过提取、转换、加载(ETL)提取、加载、转换(ELT) 等流程进行集成。


💻 编程与查询语言

该生态系统还包括各种语言,可分为查询语言编程语言以及Shell和脚本语言

从使用 SQL 查询和操作数据,到使用 Python 开发数据应用程序,再到编写Shell脚本以处理重复性操作任务,这些都是数据工程师工作台中的重要组成部分。


📈 商业智能与报告工具

商业智能(BI)和报告工具用于从多个数据源收集数据,并以可视化格式(如交互式仪表板)呈现。使用这些工具,您可以实时或按预定计划连接和可视化数据。这些通常是拖放式产品,不需要用户了解任何编程知识。虽然这些工具通常由数据和BI分析师使用,但它们由数据工程师启用和管理。


🛠️ 自动化工具与框架

数据分析过程所有阶段的自动化工具、框架和流程都是数据工程师生态系统的一部分。这是一个多样化、丰富且充满挑战的生态系统。在课程后续部分,我们将更详细地探讨这个生态系统的不同组成部分。


📝 总结

本节课中,我们一起学习了数据工程生态系统的核心组成部分。我们了解了数据的三种主要类型(结构化、半结构化、非结构化),认识了不同类型的数据仓库(事务型OLTP和分析型OLAP),并概述了数据集成、数据管道、关键编程语言以及BI工具在生态系统中的角色。这个生态系统为数据工程师提供了从数据收集到最终可视化的全套工具和框架。

011:数据类型详解

在本节课中,我们将学习数据的基本分类方式——结构化、半结构化和非结构化数据。理解这些数据类型是数据工程的基础,有助于我们选择合适的技术和工具来存储、处理和分析数据。


概述:什么是数据?

数据是未经组织的信息,经过处理后变得有意义。数据包含事实、观察、感知、数字、字符、符号和图像,这些都可以被解释以获取含义。对数据进行分类的一种方式是依据其结构。数据可以分为结构化数据半结构化数据非结构化数据


🏗️ 结构化数据

上一节我们介绍了数据的基本概念,本节中我们来看看第一种类型:结构化数据。

结构化数据具有明确定义的结构,或遵循特定的数据模型。它可以存储在定义良好的模式(如数据库)中,并且在许多情况下可以以行和列的表格形式表示。

结构化数据是客观的事实和数字,可以被收集、导出、存储和组织在典型的数据库中。

以下是结构化数据的一些来源:

  • SQL数据库
  • 专注于业务交易的在线事务处理(OLTP)系统
  • 电子表格,如Excel和Google Sheets
  • 在线表单
  • 传感器,如全球定位系统(GPS)和射频识别(RFID)标签
  • 网络和Web服务器日志

您也可以使用标准的数据分析工具和方法轻松检查结构化数据。


🧩 半结构化数据

了解了具有固定模式的结构化数据后,我们来看看半结构化数据。它具有一定的组织性,但缺乏固定或严格的模式。

半结构化数据不能像数据库中那样以行和列的形式存储。它包含标签元素元数据,用于对数据进行分组并以层次结构进行组织。

以下是半结构化数据的一些来源:

  • 电子邮件
  • XML和其他标记语言
  • 二进制可执行文件
  • TCP/IP数据包
  • 压缩文件(如ZIP)
  • 来自不同来源的数据集成

XML和JSON允许用户定义标签和属性,以分层形式存储数据,并被广泛用于存储和交换半结构化数据。


🌌 非结构化数据

最后,我们探讨最灵活但也最具挑战性的一种数据类型:非结构化数据。

非结构化数据没有易于识别的结构,因此无法以行和列的形式组织到主流的关系型数据库中。它没有任何特定的格式、顺序、语义或规则。

非结构化数据可以处理来源的异构性,并具有多种商业智能和分析应用。

以下是非结构化数据的一些来源:

  • 网页
  • 社交媒体信息流
  • 各种文件格式的图像,如JPEG、GIF、PNG
  • 视频和音频文件
  • 文档和PDF文件
  • PowerPoint演示文稿
  • 媒体日志和调查问卷

非结构化数据可以存储在文件和文档(如Word文档)中供人工分析,也可以存储在拥有自己分析工具的NoSQL数据库中,用于检查此类数据。


📝 总结

本节课中我们一起学习了三种主要的数据类型:

  • 结构化数据:组织良好,格式规范,可存储在数据库中,适用于标准的数据分析方法和工具。
  • 半结构化数据:具有一定组织性,依赖元标签进行分组和层次化。
  • 非结构化数据:没有以特定格式的行和列进行常规组织。

在下一个视频中,我们将学习不同类型的文件结构。

012:文件格式类型解析

在本节课中,我们将学习数据工程中常见的几种文件格式。理解这些格式的底层结构、优势与局限性,将帮助你为数据和性能需求选择最合适的格式。

我们将介绍以下标准文件格式:分隔文本文件、Microsoft Excel Open XML 电子表格(XLSX)、可扩展标记语言(XML)、便携式文档格式(PDF)以及 JavaScript 对象表示法(JSON)。


📄 分隔文本文件

上一节我们概述了课程内容,本节中我们来看看第一种文件格式:分隔文本文件。

分隔文本文件是以文本形式存储数据的文件,其中每一行(或每一行记录)的值都由一个分隔符隔开。分隔符是一个或多个字符的序列,用于指定独立实体或值之间的边界。

任何字符都可以用作分隔符,但最常见的分隔符是逗号制表符冒号竖线空格

以下是两种最常见的分隔文本文件类型:

  • 逗号分隔值(CSV):其分隔符是逗号。
  • 制表符分隔值(TSV):其分隔符是制表符。当文本数据本身包含字面逗号而无法用作分隔符时,TSV 可作为 CSV 格式的替代方案。

文本文件中的每一行都包含一组由分隔符分隔的值,代表一条记录。第一行通常作为列标题,每一列可以包含不同类型的数据(例如日期、字符串或整数)。

分隔文件允许字段值为任意长度,被视为提供直接信息模式的标准格式,几乎可以被所有现有应用程序处理。


📊 Microsoft Excel Open XML 电子表格(XLSX)

了解了基础的文本格式后,我们来看看更结构化的电子表格格式。

Microsoft Excel Open XML 电子表格(XLSX)是一种属于电子表格文件格式的 Microsoft Excel 开放 XML 文件格式。它是一个基于 XML 的文件格式,由 Microsoft 创建。

一个 XLSX 文件(也称为工作簿)可以包含多个工作表。每个工作表都组织成行和列,其交叉点就是单元格,每个单元格包含数据。

XLSX 使用开放文件格式,这意味着大多数其他应用程序通常都可以访问它。它可以使用并保存 Excel 中的所有可用功能,并且也被认为是更安全的文件格式之一,因为它无法保存恶意代码。


🏷️ 可扩展标记语言(XML)

上一节我们介绍了电子表格格式,本节中我们来看看另一种用于编码数据的标记语言。

可扩展标记语言(XML)是一种具有编码数据规则的标记语言。XML 文件格式对人类和机器都可读。它是一种为通过互联网发送信息而设计的自描述语言。

XML 在某些方面与 HTML 相似,但也有区别。例如,XML 不像 HTML 那样使用预定义的标签。

XML 独立于平台和编程语言,因此简化了不同系统之间的数据共享。


📑 便携式文档格式(PDF)

除了用于数据交换的格式,我们还需要了解一种用于文档呈现的通用格式。

便携式文档格式(PDF)是 Adobe 开发的一种文件格式,用于呈现独立于应用程序软件、硬件和操作系统的文档。这意味着它可以在任何设备上以相同的方式查看。

这种格式常用于法律和财务文件,也可用于填写数据,例如表单。


🔄 JavaScript 对象表示法(JSON)

最后,我们来看一种在现代网络应用中极其流行的数据交换格式。

JavaScript 对象表示法(JSON)是一种基于文本的开放标准,专为通过网络传输结构化数据而设计。该文件格式是一种独立于语言的数据格式,可以用任何编程语言读取。

JSON 易于使用,与广泛的浏览器兼容,并被认为是共享任何大小和类型数据(甚至是音频和视频)的最佳工具之一。这也是许多 API 和 Web 服务器以 JSON 格式返回数据的原因之一。


📝 总结

本节课中,我们一起学习了数据工程中五种常见的文件格式:

  1. 分隔文本文件(如 CSV/TSV):使用特定字符分隔值的简单文本格式。
  2. Microsoft Excel Open XML 电子表格(XLSX):基于 XML 的结构化电子表格格式。
  3. 可扩展标记语言(XML):用于编码和交换数据的自描述标记语言。
  4. 便携式文档格式(PDF):用于跨平台一致呈现文档的格式。
  5. JavaScript 对象表示法(JSON):轻量级、语言无关的数据交换格式,广泛用于 Web 服务。

理解这些格式的特点将帮助你在实际工作中根据数据的使用场景、共享需求和性能要求做出恰当的选择。

013:数据来源详解

在本节课中,我们将学习数据工程中各种常见的数据来源。数据来源是数据管道的起点,理解它们的类型和特点对于构建高效的数据处理流程至关重要。


🏢 内部数据源

在之前的视频中我们提到,当今的数据来源比以往任何时候都更加动态和多样。本节中,我们来看看一些常见的数据源,例如关系数据库、平面文件、XML数据、API、Web服务、网络爬虫、数据流和订阅源。

通常,组织内部会使用各种应用程序来支持其日常业务活动、客户交易、人力资源活动和工作流程的管理。

这些系统使用关系数据库(如 SQL ServerOracleMySQLIBM DB2)以结构化的方式存储数据。存储在数据库和数据仓库中的数据可以作为分析的数据源。

例如,来自零售交易系统的数据可用于分析不同地区的销售情况,而来自客户关系管理系统的数据可用于进行销售预测。


🌐 外部数据源

在组织外部,还存在其他公开或私有的可用数据集。

例如,政府机构会持续发布人口统计和经济数据集。此外,还有一些公司专门销售特定数据,例如销售点数据、金融数据或天气数据。

企业可以利用这些数据来制定战略、预测需求,并在分销或营销推广等方面做出决策。

这类数据集通常以平面文件、电子表格文件或XML文档的形式提供。

以下是几种常见的外部数据文件格式:

  • 平面文件:以纯文本格式存储数据,每行一条记录,每个值由逗号、分号或制表符等分隔符分隔。平面文件中的数据映射到单个表,这与包含多个表的关系数据库不同。最常见的平面文件格式之一是 CSV(逗号分隔值文件)。
  • 电子表格文件:一种特殊的平面文件,同样以表格格式(行和列)识别数据。但电子表格可以包含多个工作表,每个工作表可以映射到不同的表。虽然电子表格中的数据是纯文本,但文件可以以自定义格式存储,并包含格式、公式等附加信息。Microsoft Excel(存储为XLS或XLSX格式)可能是最常见的电子表格,其他还包括Google Sheets、Apple Numbers和Libre Office。
  • XML文件:包含使用标签标识或标记的数据值。与映射到单个表的平面文件数据不同,XML文件可以支持更复杂的数据结构,例如层次结构。XML的一些常见用途包括来自在线调查、银行对账单的数据集以及其他非结构化数据集。

🔌 API与Web服务

许多数据提供商和网站提供API(应用程序编程接口)和Web服务,多个用户或应用程序可以与之交互,以获取数据进行处理或分析。

API和Web服务通常监听传入的请求(这些请求可以是来自用户的Web请求形式,也可以是来自应用程序的网络请求),并以纯文本、XML、HTML、JSON或媒体文件的形式返回数据。

让我们看一些将API用作数据分析数据源的流行例子:

  • 使用TwitterFacebook API从推文和帖子中获取数据,用于执行意见挖掘或情感分析等任务,即总结对特定主题(如政府政策、产品、服务或总体客户满意度)的赞赏和批评数量。
  • 股市API用于提取股票和商品价格、每股收益和历史价格等数据,用于交易和分析。
  • 数据查找和验证API,这对数据分析师清理和准备数据非常有用,也可用于核心数据,例如检查邮政编码或区号属于哪个城市或州。
  • API还用于从组织内部和外部的数据库源中提取数据。

🕷️ 网络爬虫

网络爬虫用于从非结构化来源中提取相关数据,也称为屏幕抓取、网络采集和网络数据提取。网络爬虫使得根据定义的参数从网页下载特定数据成为可能。

网络爬虫可以从网站中提取文本、联系信息、图像、视频、产品项目等内容。网络爬虫的一些常见用途包括:从零售商、制造商和电子商务网站收集产品详细信息以提供价格比较;通过公共数据源生成销售线索;从各种论坛和社区的帖子和作者中提取数据;以及为机器学习模型收集训练和测试数据集。

一些流行的网络爬虫工具包括 Beautiful SoupScrapyPandasSelenium


🌊 数据流与订阅源

数据流是另一种广泛使用的数据源,用于聚合来自仪器、物联网设备、应用程序、汽车GPS数据、计算机程序、网站和社交媒体帖子等来源的持续数据流。这些数据通常带有时间戳,也可能带有地理标签用于地理识别。

一些数据流及其利用方式包括:

  • 用于金融交易的股票和市场行情数据流。
  • 用于预测需求和供应链管理的零售交易流。
  • 用于威胁检测的监控和视频流。
  • 用于情感分析的社交媒体信息流。
  • 用于监控工业或农业机械的传感器数据流。
  • 用于监控网络性能和改进设计的网络点击流。
  • 用于重新预订和重新安排航班的实时航班事件流。

一些用于处理数据流的流行应用程序包括 Apache KafkaApache Spark StreamingApache Storm

RSS(真正简易聚合)订阅源是另一种流行的数据源,通常用于从在线论坛和新闻网站捕获持续更新的数据。

使用订阅源阅读器(一种将RSS文本文件转换为更新数据流的接口),更新内容会流式传输到用户设备。


📝 总结

本节课中,我们一起学习了数据工程中多种多样的数据来源。我们从组织内部的关系数据库开始,探讨了外部的平面文件、电子表格和XML文档。接着,我们了解了如何通过API和Web服务以编程方式获取数据,以及如何使用网络爬虫从网页提取信息。最后,我们介绍了持续不断的数据流和RSS订阅源。理解这些数据源的特性和适用场景,是构建有效数据采集和集成流程的第一步。

014:数据专业人员的编程语言

在本节课中,我们将学习与数据专业人员工作相关的一些编程语言。这些语言可以分为查询语言、编程语言和Shell脚本语言。对于任何数据专业人员而言,精通每个类别中的至少一种语言都至关重要。

🔍 查询语言

上一节我们介绍了语言分类,本节中我们来看看查询语言。简单来说,查询语言是为访问和操作数据库中的数据而设计的。例如,SQL

💾 SQL:结构化查询语言

SQL是一种查询语言,主要用于(尽管不限于)访问和操作关系型数据库中的信息。使用SQL,我们可以编写一组指令来执行操作,例如在数据库中插入、更新和删除记录,创建新的数据库、表和视图,以及编写存储过程。这意味着你可以编写一组指令并稍后调用它们。

以下是使用SQL的一些优势:

  • 可移植性:SQL可跨平台使用,独立于平台。
  • 广泛适用:可用于查询各种数据库和数据存储库中的数据,尽管每个供应商可能有一些变体和特殊扩展。
  • 语法简单:其语法类似于英语,允许开发者使用SELECTINSERT INTOUPDATE等基本关键字,以比其他一些编程语言更少的代码行编写程序。
  • 高效检索:可以快速高效地检索大量数据。
  • 解释型系统:SQL在解释器系统上运行,意味着代码编写后即可执行,使得原型设计快速简便。
  • 社区与文档:由于其庞大的用户社区和多年来积累的大量文档,SQL是最流行的查询语言之一。它继续为全球所有用户提供一个统一的平台。

💻 编程语言

在了解了查询语言之后,我们转向编程语言。编程语言是为开发应用程序和控制应用程序行为而设计的。例如,PythonRJava

🐍 Python

Python是一种广泛使用的开源、通用、高级编程语言。与一些较旧的语言相比,其语法允许程序员用更少的代码行表达概念。

Python被认为是最容易学习的语言之一,拥有庞大的开发者社区,因为它注重简单性、可读性且学习曲线平缓。它是初学者的理想工具。它非常适合对海量数据执行高计算任务,否则这些任务可能极其耗时且繁琐。Python提供了如NumPyPandas这样的库,通过使用并行处理来简化任务。它内置了几乎所有常用概念的函数。

Python支持多种编程范式,如面向对象、命令式、函数式和过程式,使其适用于广泛的用例。

现在,让我们看看使Python成为当今世界上增长最快的编程语言之一的一些原因:

  • 易于学习:使用Python,你可以用比其他语言更少的代码行完成任务。
  • 开源:Python是免费的,并采用基于社区的开发模式。
  • 跨平台:可在Windows和Linux环境中运行,并可移植到多个平台。
  • 社区支持:拥有广泛的社区支持,提供了大量有用的分析库。
  • 丰富的库:拥有多个用于数据操作、数据可视化、统计和数学的开源库。其庞大的库和功能还包括用于数据清理和分析的Pandas,用于统计分析的NumPySciPy,用于网络爬虫的Beautiful SoupScrapy,用于以条形图、直方图和饼图形式可视化数据的MatplotlibSeaborn,以及用于图像处理的OpenCV

📊 R

R是一种用于数据分析、数据可视化、机器学习和统计的开源编程语言和环境,广泛用于开发统计软件和执行数据分析。它尤其以创建引人注目的可视化效果而闻名,这使其在该领域相对于其他一些语言具有优势。

R的一些主要优点包括:

  • 开源与跨平台:是一种开源、平台独立的编程语言。
  • 可配对性:可以与包括Python在内的许多编程语言配对使用。
  • 高度可扩展:意味着开发者可以通过定义新函数来持续添加功能。
  • 数据处理能力强:便于处理结构化和非结构化数据,意味着它具有更全面的数据处理能力。
  • 强大的可视化库:拥有如ggplot2Plotly这样的库,为用户提供美观的图形绘图。
  • 报告与交互应用:可以制作嵌入数据和脚本的报告,以及允许用户操作结果和数据的交互式Web应用程序。
  • 统计工具开发:在开发统计工具方面,R在其他编程语言中占主导地位。

☕ Java

Java是一种面向对象、基于类且平台独立的编程语言,最初由Sun Microsystems开发。它是当今使用最多的顶级编程语言之一。

Java在数据分析的多个过程中都有应用,包括数据清理、数据导入导出、统计分析和数据可视化。事实上,大多数用于大数据的热门框架和工具通常都是用Java编写的,例如HadoopHiveSpark。它非常适合对速度要求严格的项目。

🖥️ Shell与脚本语言

最后,我们来看看Shell和脚本语言。这类语言,如Unix/Linux ShellPowerShell,非常适合重复且耗时的操作任务。

🐚 Unix/Linux Shell

Unix或Linux Shell脚本是为Unix Shell编写的计算机程序。它是一系列写在纯文本文件中的Unix命令,用于完成特定任务。

编写Shell脚本快速且简单。它对于重复性任务非常有用,这些任务如果一次键入一行命令来执行可能会非常耗时。

Shell脚本执行的典型操作包括:

  • 文件操作
  • 程序执行
  • 系统管理任务,如磁盘备份和评估系统日志
  • 复杂程序的安装脚本
  • 执行例行备份
  • 运行批处理任务

⚡ PowerShell

PowerShell是微软推出的跨平台自动化工具和配置框架,针对处理结构化数据格式(如JSON、CSV、XML和REST API)、网站和Office应用程序进行了优化。它由命令行Shell和脚本语言组成。

PowerShell基于对象,这使得在对象通过数据管道时,可以对它们进行过滤、排序、测量、分组、比较等多种操作。它也是数据挖掘、构建GUI、创建图表、仪表板和交互式报告的好工具。

📝 总结

本节课中,我们一起学习了数据专业人员常用的三类编程语言:查询语言(如SQL)、编程语言(如PythonRJava)以及Shell脚本语言(如Unix/Linux ShellPowerShell)。每种语言都有其特定的优势和适用场景,掌握这些工具是成为一名高效数据工程师的基础。

015:多源多类型数据处理视角

在本节课中,我们将聆听几位数据专业人士分享他们处理多种数据源和数据类型的经验。你将了解到数据可能以各种意想不到的方式出现,以及数据工程师如何应对这些挑战。

🔄 处理多种数据源的核心理念

上一节我们介绍了课程概述,本节中我们来看看数据专业人士对处理多源数据的核心看法。

一位专家提到:“我倾向于使用关系型数据库,因此花费大量时间使用SQL。我利用SQL的能力来处理数据迁移、数据结构化以及数据安全细节。但显然,这并不适用于所有场景。”

即使完全在关系型数据库环境中工作,数据迁移也常带来挑战,尤其是在不同供应商的数据库之间进行迁移时。版本差异是常见障碍,有时所需功能存在于比当前版本高两个级别的版本中,或者其工作方式与两个版本前不同。

因此,处理多数据源的关键在于灵活性,在于找到既能工作又能满足性能需求的函数或方法。一次性迁移数据通常并不困难(只要数据量在TB级以下),但以高性能的方式持续、稳定地迁移数据,则迫使我们评估多种不同的解决方案。

我们需要对新想法持开放态度,并寻找能满足需求的新解决方案。

🗄️ 关系型数据库与新兴数据类型的演变

上一节我们探讨了处理多源数据的灵活性,本节中我们来看看数据存储技术本身的演变。

另一位专家分享道:“我主要使用关系型数据库,它们极其灵活且经受住了时间考验。然而,随着日志、文档、XML、JSON等非结构化数据的演进,关系型数据库作为解决所有数据问题的声誉受到了严格审视。”

许多数据密集型应用(如物联网和社交媒体应用)开始寻找其他解决方案。例如,谷歌在2006年发布了一份名为“Google BigTable”的白皮书,这个想法迅速流行起来。Cassandra和HBase就源于与Google BigTable相同的架构模型,它们成为广泛流行的数据库,以解决一些关系型数据库未能解决的问题。

关系型数据库在处理某些重型数据密集型应用(如物联网、传感器数据、社交媒体数据)时有些吃力。这是因为驱动这些关系型数据库的B树数据结构,由于其随机读取和随机写入的特性,在重型写入应用下速度会变慢。

📊 数据工程师必须面对的数据多样性

处理多种数据是数据工程师工作中不可避免的一部分。你需要处理标准格式的数据,也需要处理专有格式的数据。

以下是数据工程师可能遇到的数据类型和来源:

  • 数据格式:你需要处理如CSV、JSON、XML等标准格式,也可能需要处理专有格式。
  • 数据源:数据可能来自关系型数据库、NoSQL数据库或大数据存储库。
  • 数据状态:你需要处理静态数据、流数据或运动中的数据。

你可能无法从一开始就具备处理所有这些不同类型数据源的技能,但你需要具备在工作中学习的能力,并掌握项目所需的技能,以处理不同的数据集、数据格式和数据源。

⚙️ 不同数据格式的挑战与演进

当涉及具体的数据格式时,日志数据、XML数据、JSON数据等都各有其挑战。

以下是几种常见数据格式的特点:

  • 日志数据:极具挑战性,因为它是非结构化的。你可能需要根据分析目标编写自定义工具来解析数据。
  • XML:大约十年前非常流行,特别是在Web应用的SOAP协议中。然而,Web开发人员和企业很快发现它可能非常消耗资源(尤其是内存),因为它有开始和结束标签。
  • JSON:随后登场,它去掉了结束标签,采用类似键值对的形式,节省了一些资源。现在它被广泛用作RESTful API的一部分。
  • Apache Avro:这类更新的数据格式因其存储数据的高效性而获得广泛欢迎。

🧩 实际案例:特殊字符带来的数据迁移挑战

理论知识需要结合实际案例来理解。让我们看一个具体的数据迁移挑战实例。

一个特定的情况是,我们需要将数据从DB2数据库转换到SQL Server数据库。这很有挑战性,因为这两种数据库期望的导入导出方式略有不同。数据本身尤其具有挑战性,项目中很多挑战可能正来源于数据本身。

在这个案例中,数据包含许多不同的字符。通常,我们会寻找一个字符作为分隔符(通常是逗号),以便用逗号分隔字段。但我们也必须考虑数据本身包含逗号的情况。

核心问题在于:如何正确分隔这些数据?如何正确定义字段?

在这个特定案例中,我们必须为不同的表使用不同的分隔符,因为我们能想到的每一个特殊字符都出现在其中一张表里。而那些没有被使用的特殊字符,有时是我们不能用于分隔的,比如退格字符。


本节课总结

在本节课中,我们一起学习了数据工程师在处理多源、多类型数据时的视角与挑战。我们了解到灵活性持续学习是应对数据多样性的关键。从关系型数据库到NoSQL,从XML到JSON和Avro,数据生态在不断演进。实际工作中,数据迁移的挑战往往源于数据本身的复杂性,例如特殊字符的处理。掌握这些核心概念,将为你在数据工程领域的深入学习打下坚实基础。

016:数据存储库概述 📚

在本节课中,我们将学习数据存储库的基本概念。数据存储库是数据工程领域的核心组成部分,它指的是为业务运营、报告和数据分析而收集、组织和隔离的数据集合。我们将探讨不同类型的存储库,包括数据库、数据仓库和大数据存储,并了解它们各自的特点和用途。


什么是数据存储库?🗃️

数据存储库是一个通用术语,指代那些被收集、组织并隔离起来,以便用于业务运营或进行报告和数据分析的数据。它可以是一个小型或大型的数据库基础设施,包含一个或多个用于收集、管理和存储数据的数据库。

在接下来的内容中,我们将概述您的数据可能驻留的不同类型的存储库,例如数据库、数据仓库和大数据存储,并在后续视频中更详细地探讨它们。


数据库:数据的基础存储单元 💾

上一节我们介绍了数据存储库的总体概念,本节中我们来看看其中最基本的一种类型:数据库。

数据库是为数据的输入、存储、搜索、检索和修改而设计的数据或信息集合。数据库管理系统(DBMS)是一组用于创建和维护数据库的程序。它允许您通过称为“查询”的功能来存储、修改和从数据库中提取信息。

例如,如果您想查找已闲置六个月或更长时间的客户,使用查询功能,数据库管理系统将从数据库中检索所有闲置六个月或更长时间客户的数据。

尽管数据库和DBMS含义不同,但这两个术语经常互换使用。

以下是影响数据库选择的几个因素:

  • 数据类型和结构
  • 查询机制
  • 延迟要求
  • 事务处理速度
  • 数据的预期用途


关系型与非关系型数据库 🔄

上一节我们了解了数据库的基本功能,本节中我们将区分两种主要的数据库类型。

这里需要提及两种主要的数据库类型:关系型数据库和非关系型数据库。

关系型数据库,也称为RDBMS,其组织原则建立在平面文件之上。数据被组织成具有行和列的表格格式,遵循明确定义的结构和模式。然而,与平面文件不同,RDBMS针对涉及多个表和更大数据量的数据操作和查询进行了优化。结构化查询语言(SQL)是关系型数据库的标准查询语言。

公式/代码示例:

-- 一个简单的SQL查询示例,用于从“客户”表中选择数据
SELECT * FROM 客户 WHERE 最后活跃日期 < DATE_SUB(NOW(), INTERVAL 6 MONTH);

然后我们有非关系型数据库,也称为NoSQL或Not Only SQL。非关系型数据库的出现是为了应对当今数据生成的速度、多样性和体量,主要受到云计算、物联网和社交媒体普及发展的影响。非关系型数据库为速度、灵活性和可扩展性而构建,使得以无模式或自由形式的方式存储数据成为可能。NoSQL被广泛用于处理大数据。


数据仓库:集成的分析中心 🏢

了解了基础的数据存储单元后,我们来看看用于集成和分析的数据仓库。

数据仓库作为一个中央存储库,合并来自不同来源的信息,并通过提取、转换和加载过程(也称为ETL过程)将其整合到一个全面的数据库中,用于分析和商业智能。在较高层次上,ETL过程帮助您从不同的数据源提取数据,将数据转换为干净可用的状态,并将数据加载到企业的数据存储库中。

与数据仓库相关的概念还有数据集市和数据湖,我们将在后面介绍。数据集市和数据仓库在历史上一直是关系型的,因为许多传统的企业数据都驻留在RDBMS中。然而,随着NoSQL技术和新数据源的出现,非关系型数据存储库现在也被用于数据仓库。


大数据存储:应对海量数据 🌊

最后,我们来看另一类用于处理超大规模数据的数据存储库。

另一类数据存储库是大数据存储,它包括分布式的计算和存储基础设施,用于存储、扩展和处理非常大的数据集。


总结 📝

本节课中,我们一起学习了数据存储库的核心概念。总体而言,数据存储库有助于隔离数据,使报告和分析更加高效和可靠,同时也充当数据档案库。

我们首先定义了数据存储库,然后深入探讨了其具体类型:作为基础单元的数据库(包括关系型和非关系型),用于集成分析的数据仓库及其ETL过程,以及专为海量数据设计的大数据存储。理解这些不同类型的存储库及其适用场景,是构建有效数据工程解决方案的第一步。

017:关系型数据库管理系统(RDBMS)详解

在本节课中,我们将学习关系型数据库管理系统(RDBMS)的核心概念、结构、优势、应用场景及其局限性。我们将通过简单的例子和清晰的解释,帮助你理解这一数据存储与管理的基础技术。


🏗️ 关系型数据库的结构

关系型数据库是一种将数据组织成表格结构的数据集合,这些表格可以基于彼此共有的数据进行链接或关联。

表格由行和列组成,其中行代表记录,列代表属性。

让我们以一家公司的客户表为例,该表维护着每位客户的数据。

客户表中的列或属性包括:客户ID、客户姓名、客户地址和客户主要电话。每一行则是一条客户记录。


🔗 表格的关联关系

现在,我们来理解“表格基于共有数据进行链接或关联”的含义。

除了客户表,该公司还维护着交易表,其中包含描述每位客户相关多笔独立交易的数据。

交易表的列可能包括:交易日期、客户ID、交易金额和支付方式。

客户表和交易表可以基于共有的客户ID字段进行关联。

你可以查询客户表以生成报告,例如一份汇总了特定时间段内所有交易的客户对账单。

这种基于共有数据关联表格的能力,使你能够通过单一查询,从一个或多个表格的数据中检索出一个全新的表格。它还允许你理解所有可用数据之间的关系,并获得新的见解以做出更好的决策。

关系型数据库使用结构化查询语言(SQL)来查询数据。我们将在本课程后续部分更详细地学习SQL。


📊 关系型数据库与平面文件的区别

关系型数据库建立在平面文件(如电子表格)的组织原则之上,数据按照定义良好的结构和模式组织成行和列。

但相似之处仅此而已。关系型数据库在设计上非常适合对大量数据进行优化的存储、检索和处理。

与行数和列数有限的电子表格不同,关系型数据库中的每个表都有唯一的行和列集合,并且可以在表之间定义关系,这最大限度地减少了数据冗余。

此外,你可以将数据库字段限制为特定的数据类型和值,这减少了不规则性,并带来了更高的一致性和数据完整性。

关系型数据库使用SQL查询数据,这使你能够处理数百万条记录并在几秒钟内检索大量数据。

此外,关系型数据库的安全架构提供了对数据的受控访问,并确保可以执行管理数据的标准和策略。


🌐 关系型数据库的类型与示例

关系型数据库的范围从小型桌面系统到大规模云基系统不等。

它们可以是开源且内部支持的、开源但有商业支持的,或者是商业闭源系统。

IBM DB2、Microsoft SQL Server、MySQL、Oracle Database 和 PostgreSQL 是一些流行的关系型数据库。

基于云的关系型数据库,也称为数据库即服务(DBaaS),正获得广泛使用,因为它们可以利用云提供的近乎无限的计算和存储能力。

一些流行的云关系型数据库包括 Amazon Relational Database Service (RDS)、Google Cloud SQL、IBM DB2 on Cloud、Oracle Cloud 和 SQL Azure。


✨ 关系型数据库的优势

RDBMS是一项成熟且文档完善的技术,易于学习并找到合格人才。

关系型数据库方法最显著的优势之一是其通过连接表来创建有意义信息的能力。

其他一些优势包括:

灵活性
使用SQL,你可以在数据库运行和查询进行时添加新列、添加新表、重命名关系并进行其他更改。

减少冗余
关系型数据库最大限度地减少了数据冗余。例如,客户的信息仅出现在客户表中的单个条目里,而与该客户相关的交易表则存储一个指向客户表的链接。

易于备份和灾难恢复
关系型数据库提供简单的导入和导出选项,使备份和恢复变得容易。导出操作可以在数据库运行时进行,使得故障恢复变得简单。基于云的关系型数据库进行持续镜像,这意味着恢复时的数据丢失可以控制在几秒甚至更短的时间内。

支持ACID合规性
ACID代表原子性、一致性、隔离性和持久性。ACID合规性意味着数据库中的数据保持准确和一致,即使发生故障,数据库事务也能被可靠地处理。


🎯 关系型数据库的应用场景

现在,我们来看看关系型数据库的一些应用场景。

在线事务处理应用程序
OLTP应用程序专注于以高速率运行的面向事务的任务。关系型数据库非常适合OLTP应用,因为它们可以容纳大量用户,支持插入、更新或删除少量数据的能力,并且也支持频繁的查询和更新以及快速的响应时间。

数据仓库
在数据仓库环境中,关系型数据库可以针对在线分析处理进行优化,其中历史数据被用于商业智能分析。

物联网解决方案
物联网解决方案需要速度以及从边缘设备收集和处理数据的能力,这需要轻量级的数据库解决方案。


⚠️ 关系型数据库的局限性

这引出了RDBMS的局限性。

RDBMS不能很好地处理半结构化或非结构化数据,因此不适合对此类数据进行广泛的分析。

在两个RDBMS系统之间进行迁移时,源表和目标表之间的模式和数据类型需要完全相同。

关系型数据库对数据字段的长度有限制,这意味着如果你尝试向一个字段输入超出其容量的信息,该信息将不会被存储。


📝 总结

尽管存在这些局限性,并且在大数据、云计算、物联网设备和社交媒体时代数据形态不断演变,RDBMS仍然是处理结构化数据的主导技术。

在本节课中,我们一起学习了关系型数据库管理系统的基本结构、工作原理、主要优势、常见应用场景以及其固有的局限性。理解RDBMS是构建数据工程知识体系的重要基石。

018:NoSQL数据库入门

在本节课中,我们将学习NoSQL数据库的基本概念、主要类型及其与传统关系型数据库的区别。NoSQL数据库因其在处理大规模、非结构化数据方面的优势,在现代数据工程中扮演着重要角色。


🧠 什么是NoSQL?

NoSQL代表“Not Only SQL”(不仅仅是SQL),有时也指“Non-SQL”(非SQL)。它是一种非关系型数据库设计,为数据的存储和检索提供了灵活的架构。

NoSQL数据库已存在多年,但直到云计算、大数据以及高流量Web和移动应用时代才变得更为流行。如今,人们选择NoSQL数据库是因为其在扩展性、性能和易用性方面的特性。

需要强调的是,“NoSQL”中的“No”是“Not Only”的缩写,而非否定词“不”。NoSQL数据库为特定的数据模型构建,并拥有灵活的架构,使程序员能够创建和管理现代应用程序。它们通常不使用具有固定架构的传统行列表数据库设计,并且一般不使用结构化查询语言(SQL)来查询数据,尽管有些可能支持SQL或类SQL接口。

NoSQL允许数据以无模式或自由形式存储。任何数据,无论是结构化、半结构化还是非结构化的,都可以存储在任何记录中。


🗂️ NoSQL数据库的四种主要类型

根据用于存储数据的模型,NoSQL数据库主要有四种常见类型:键值存储、文档型、列型和图型数据库。

上一节我们介绍了NoSQL的基本概念,本节中我们来看看它的具体类型。

以下是四种主要的NoSQL数据库类型及其特点:

  • 键值存储

    • 在键值数据库中,数据以键值对的集合形式存储。键代表数据的属性,并且是唯一的标识符。键和值都可以是任何内容,从简单的整数或字符串到复杂的JSON文档。
    • 适用场景:存储用户会话数据、用户偏好设置、实时推荐和定向广告以及内存数据缓存。
    • 局限性:如果您需要根据特定的数据值进行查询、需要数据值之间的关系或需要多个唯一键,键值存储可能不是最佳选择。
    • 知名示例RedisMemcachedDynamoDB
  • 文档型数据库

    • 文档数据库将每条记录及其关联数据存储在单个文档中。它们支持对文档集合进行灵活的索引、强大的即席查询和分析。
    • 适用场景:电子商务平台、医疗记录存储、客户关系管理平台和分析平台。
    • 局限性:如果您需要运行复杂的搜索查询和涉及多个操作的事务,文档型数据库可能不是最佳选择。
    • 知名示例MongoDBDocumentDBCouchDBCloudant
  • 列型数据库

    • 列型模型将数据存储在按数据列(而非行)分组的单元格中。通常一起访问的列的逻辑分组称为列族。例如,客户的姓名和个人资料信息很可能被一起访问,但他们的购买历史则不会,因此可以将客户姓名和个人资料信息数据分组到一个列族中。由于列数据库将对应于某一列的所有单元格作为连续的磁盘条目存储,因此访问和搜索数据变得非常快速。
    • 适用场景:需要大量写入请求的系统、存储时间序列数据、天气数据和物联网数据。
    • 局限性:如果您需要使用复杂查询或频繁更改查询模式,这可能不是最佳选择。
    • 知名示例CassandraHBase
  • 图型数据库

    • 图型数据库使用图模型来表示和存储数据。它们对于可视化、分析和查找不同数据片段之间的连接特别有用。图中的圆圈是节点,它们包含数据。箭头代表关系。
    • 适用场景:处理包含大量互连关系的“连接数据”,例如社交网络、实时产品推荐、网络图、欺诈检测和访问管理。
    • 局限性:如果您需要处理大量事务,它可能不是最佳选择,因为图数据库未针对大容量分析查询进行优化。
    • 知名示例Neo4jCosmos DB

⚖️ NoSQL的优势与对比

NoSQL的出现是为了应对传统关系型数据库技术的局限性。其主要优势在于处理大量结构化、半结构化和非结构化数据的能力。

以下是NoSQL的一些其他优势:

  • 能够作为分布式系统运行,跨多个数据中心扩展,从而利用云计算基础设施。
  • 高效且经济高效的横向扩展架构,通过添加新节点来提供额外的容量和性能。
  • 设计更简单,能更好地控制可用性。
  • 改进的可扩展性,使您能够更加敏捷、灵活,并能更快地进行迭代。

为了总结关系型和非关系型数据库之间的关键区别,我们来看以下几点:

  • 架构:RDBMS(关系型数据库管理系统)的架构严格定义了插入数据库的所有数据的类型和组成方式,而NoSQL数据库可以是模式无关的,允许存储和操作非结构化和半结构化数据。
  • 成本:维护高端商业关系型数据库管理系统成本高昂,而NoSQL数据库专门为低成本商用硬件设计。
  • 事务:与大多数NoSQL数据库不同,关系型数据库支持ACID(原子性、一致性、隔离性、持久性)合规性,这确保了事务的可靠性和故障恢复能力。
  • 成熟度:RDBMS是一项成熟且有完善文档的技术,这意味着其风险或多或少是可预见的。相比之下,NoSQL是一项相对较新的技术。

尽管如此,NoSQL数据库已经站稳脚跟,并且越来越多地用于关键任务应用程序。


📝 课程总结

本节课中,我们一起学习了NoSQL数据库的核心概念。我们了解到NoSQL代表“不仅仅是SQL”,它提供了灵活的数据存储方案以应对现代应用的需求。我们详细探讨了四种主要的NoSQL数据库类型:键值存储文档型列型图型数据库,并了解了它们各自的适用场景和局限性。最后,我们对比了NoSQL数据库与传统关系型数据库在架构、成本、事务支持和成熟度方面的关键区别。理解这些差异有助于我们在实际数据工程项目中做出合适的数据库技术选型。

019:数据仓库、数据集市与数据湖 🏢

在本节课中,我们将学习三种核心的数据存储库:数据仓库、数据集市和数据湖。它们都旨在存储数据以支持报告、分析和洞察,但其用途、存储的数据类型以及数据访问方式各有不同。我们将逐一探讨它们的特点和应用场景。

🏛️ 数据仓库

上一节我们介绍了本课的主题,本节中我们来看看数据仓库

数据仓库是一个集成了来自多个数据源的中央数据存储库。它作为单一事实来源,存储经过清洗、整合和分类的当前及历史数据。数据在加载到数据仓库时,已经为特定目的进行了建模和结构化,这意味着它已准备好用于分析。

传统上,数据仓库以存储来自交易系统和运营数据库(如CRM、ERP、HR和财务应用)的关系型数据而闻名。但随着NoSQL技术和新数据源的出现,非关系型数据存储库也开始用于数据仓库。

一个典型的数据仓库采用三层架构:

  • 底层:包含数据服务器,这些服务器可以是关系型、非关系型或两者兼有,用于从不同来源提取数据。
  • 中间层:由OLAP服务器构成。OLAP(联机分析处理)是一类软件,允许用户处理和分析来自多个数据库服务器的信息。
  • 顶层:包括客户端前端层。此层包含用于查询、报告和分析数据的所有工具和应用程序。

随着数据量的快速增长和当今复杂的分析工具的出现,曾经部署在本地数据中心的数据仓库正在向云端迁移。与本地版本相比,基于云的数据仓库提供了一些优势,包括:

  • 更低的成本
  • 无限的存储和计算能力
  • 按需付费的扩展模式
  • 更快的灾难恢复

当组织拥有来自运营系统的大量数据,并且需要随时可用于报告和分析时,通常会选择数据仓库。

以下是一些常用的数据仓库产品:

  • Teradata企业数据仓库平台
  • Oracle Exadata
  • IBM Db2 Warehouse on Cloud
  • IBM Netezza Performance Server
  • Amazon Redshift
  • Google Cloud的BigQuery
  • Cloudera的企业数据中枢
  • Snowflake云数据仓库

🏪 数据集市

了解了作为中央存储库的数据仓库后,本节我们聚焦于更具体、更专注的数据集市

数据集市是数据仓库的一个子集,专为特定的业务功能、目的或用户群体而构建。例如,组织中的销售或财务团队访问数据以进行季度报告和预测。

数据集市有三种基本类型:依赖型独立型混合型

以下是每种类型的特点:

  • 依赖型数据集市:是企业数据仓库的一个子部分。由于它只提供数据仓库中某个受限区域的分析能力,因此也提供了独立的安全性和性能。
  • 独立型数据集市:创建自企业数据仓库以外的来源,例如内部运营系统或外部数据。
  • 混合型数据集市:结合了来自数据仓库、运营系统和外部系统的输入。

区别还在于数据如何从源系统提取、需要应用哪些转换以及数据如何传输到集市中。例如,依赖型数据集市从企业数据仓库中提取数据,那里的数据已经过清洗和转换。而独立型数据集市需要对源数据执行转换过程,因为它直接来自运营系统和外部来源。

无论哪种类型,数据集市的目的都是:

  • 向用户提供与他们最相关且及时的数据。
  • 通过提供高效的响应时间来加速业务流程。
  • 提供一种成本和时间高效的方式来进行数据驱动的决策。
  • 改善最终用户响应时间。
  • 提供安全的访问和控制。

🌊 数据湖

上一节我们讨论了为特定目的而构建的结构化存储,本节我们转向一种更灵活、更原始的存储范式——数据湖

数据湖是一种可以以其原生格式存储大量结构化半结构化非结构化数据的数据存储库。数据仓库存储的是为特定需求而清洗、处理和转换过的数据。与之不同,在将数据加载到数据湖之前,你无需定义数据的结构和模式,甚至无需预先知道最终将用于分析数据的所有用例。

数据湖作为一个原始数据的存储库存在,数据以其从源端获取的原始格式存放,并根据需要进行分析的用例进行转换。但这并不意味着数据湖是一个可以不受治理地随意倾倒数据的地方。在数据湖中,数据会被适当地分类、保护和治理。

数据湖是一种独立于技术的参考架构。它结合了多种技术,共同为分析师和数据科学家提供敏捷的数据探索能力。

数据湖可以通过多种技术部署:

  • 使用云对象存储,如Amazon S3。
  • 使用用于处理大数据的大规模分布式系统,如Apache Hadoop。
  • 也可以部署在不同的关系数据库管理系统上,以及能够存储海量数据的NoSQL数据存储库上。

数据湖提供了许多好处,例如:

  • 存储所有类型数据的能力:包括非结构化数据(如文档、电子邮件、PDF)、半结构化数据(如JSON、XML、CSV和日志)以及来自关系数据库的结构化数据。
  • 根据存储容量灵活扩展的敏捷性:可以从TB级扩展到PB级数据。
  • 节省定义结构、模式和转换的时间:因为数据以其原始格式导入。
  • 以多种不同方式和更广泛用例重新利用数据的能力。这一点非常有益,因为企业很难预见未来可能利用其数据的所有不同方式。

以下是一些提供数据湖技术、平台和参考架构的供应商:

  • Amazon, Cloudera, Google, IBM, Informatica, Microsoft, Oracle, SAS, Snowflake, Teradata, Zaloni

📝 总结

本节课中,我们一起学习了数据存储库(如数据仓库、数据集市和数据湖)的一些功能。虽然它们都有相似的目标,但需要根据用例和技术基础设施的上下文进行评估,以选择最适合组织需求的方案。数据仓库提供集成的、面向分析的结构化视图;数据集市为特定团队提供专注的、高性能的数据切片;而数据湖则以原始格式存储海量多样数据,为未来的探索和分析提供最大的灵活性。

020:可选数据湖仓解析 🏗️

在本节课中,我们将通过一个餐厅后厨的类比,来理解数据架构中的核心概念:数据湖、数据仓库以及新兴的数据湖仓。我们将探讨它们各自的特点、优势与挑战,并了解如何将它们结合以构建更高效的数据处理系统。

从餐厅后厨到数据架构 🍽️

上周我在一家餐厅用餐,看到餐厅座无虚席,所有订单都准时上菜。这让我不禁思考,餐厅是如何将原始食材转化为美味佳肴的。这个过程与数据工程有着惊人的相似之处。

让我们花一分钟思考一下。在一个商业厨房中,卡车将原始食材运送到装卸平台。




卡车来到装卸平台,卸下大托盘后,便继续上路为其他餐厅送货。






这是简单的部分。现在我们需要拆开托盘并处理这些食材。我们必须对托盘上的所有物品进行分类,并为所有食材贴上标签。

同时,我们必须确保每件物品都被送到正确的存储区域。


这些物品可能被放入储藏室存放干货。

也可能被放入大型步入式冰箱和冰柜,用于存放新鲜蔬菜和肉类等。我们还需要组织这些存储区域。我们必须确保先到期的食材先被使用。出于防止交叉污染的考虑,必须确保某些食材彼此分开存放。



同时,为了食品安全,我们必须确保某些食材达到特定的温度。

我们需要尽可能快地完成所有这些工作。


这是为了最大限度地减少食物浪费和食材在卡车或托盘上放置过久而造成的腐败。

如果没有这个过程,厨房里的厨师就无法高效或安全地工作。


他们将花费大量时间寻找食材,而用于实际烹饪和为顾客上菜的时间则会减少。


那么,这与数据有什么关系呢?😡

数据架构的类比 📊

如果我们仔细思考,会发现完全相同的过程也存在于组织的数据架构中。




组织会从不同来源接收各种数据,例如不同的云环境、不同的运营应用程序,甚至社交媒体数据。所有这些数据都涌入我们的组织,就像厨房从不同供应商那里接收食材一样。

数据不断涌入。我们需要一个快速的地方来存放所有不同类型、不同格式的数据以供后续使用。于是,我们有了数据湖


这些数据湖让我们能够以低成本、快速的方式捕获原始的结构化非结构化甚至半结构化数据。

就像在厨房里我们不会在装卸平台上做饭一样(当然,如果非要放个小烤架也不是不行),我们必须将这些数据从其原始状态组织和转换成业务想要生成的洞察和分析所需的形式。于是,我们有了企业数据仓库

在数据仓库中,数据有时从数据湖加载,有时从运营应用程序等其他来源加载。数据经过优化和组织,以运行非常特定的分析任务。这可以是支持不同的商业智能工作负载,例如构建仪表板和报告,也可以是输入到其他分析工具中。

就像我们的储藏室和冰柜一样,仓库中的数据是经过清洗、组织、治理的,其完整性应该是可信的。

传统架构的挑战 ⚠️

那么,这种方法存在哪些挑战呢?正如我们所说,数据湖确实能以高性价比的方式捕获大量数据,但我们在数据治理数据质量方面遇到了挑战。

很多时候,这些数据湖会变成“数据沼泽”。当存在大量重复、不准确或不完整的数据,导致资产难以跟踪和管理时,就会发生这种情况。试想一下,如果数据停滞不前会怎样?它会失去创造洞察的价值,就像餐厅里不使用的食材会随着时间的推移而变质一样。

数据湖在查询性能方面也存在挑战。因为它们并非为处理复杂的分析查询而构建和优化,有时很难直接从湖中获取洞察。

现在让我们看看数据仓库。它们在查询性能方面非常出色,但可能伴随着高昂的成本。就像那些大型冰柜运行成本可能很高一样,我们不能把所有东西都放进数据仓库。数据仓库可以更好地优化以维护数据治理和质量,但它们对半结构化和非结构化数据源的支持有限,而这些恰恰是进入我们组织增长最快的数据类型。

此外,对于某些需要最新数据的应用程序类型,数据仓库有时可能太慢,因为对数据进行排序、清洗和加载到仓库中需要时间。

解决方案:数据湖仓 🏠

那么,我们该怎么办?开发人员退后一步,说道:让我们结合数据湖和数据仓库的优点,创造一种称为数据湖仓的新技术。

这样,我们既获得了数据湖的灵活性成本效益,又拥有了数据仓库的性能结构

我们将在未来的视频中更具体地讨论数据湖仓的架构。但从价值角度来看,湖仓让我们能够以低成本的方式存储来自爆炸性增长的新数据源的数据,然后利用内置的数据管理和治理层,使我们能够快速地为商业智能和高性能机器学习工作负载提供支持。

我们可以通过多种方式开始使用湖仓:可以现代化现有的数据湖,也可以补充我们的数据仓库以支持这些新型的AI和机器学习驱动的工作负载。这些也将在未来的视频中讨论。

总结 📝

本节课中,我们一起学习了数据工程中的核心存储架构。我们通过餐厅后厨的流程,类比了数据从原始状态到可用状态的转换过程。我们探讨了数据湖作为低成本、灵活的原始数据存储池,以及数据仓库作为高性能、结构化分析引擎的各自特点与局限。最后,我们介绍了结合两者优势的数据湖仓概念,它旨在提供统一的平台来处理多样化的数据并支持多种工作负载。

下次你在餐厅时,希望你思考一下盘中的菜肴是如何到达你面前的,以及食材从厨房到成为你盘中餐所经历的步骤。

谢谢观看。如果你喜欢这个视频并想看到更多类似内容,请点赞并订阅。如果你有任何问题,请在下方评论区留言。

021:数据存储库选择考量视角

在本节课中,我们将学习如何为组织选择最合适的数据存储库。多位数据专家将分享他们在决策过程中考虑的关键因素。选择正确的数据库时,需要牢记多个考量点。

🎯 选择数据存储库的核心考量因素

上一节我们介绍了课程目标,本节中我们来看看选择数据存储库时需要评估的具体因素。以下是需要综合评估的几个核心维度:

  • 使用场景与数据类型:需要明确存储库的用途。是用于存储结构化信息半结构化信息还是非结构化信息?是否事先知晓数据的模式(Schema)
  • 性能与数据状态:是否存在性能要求?处理的是静态数据(Data at Rest)、流数据(Streaming Data)还是动态数据(Data in Motion)?
  • 安全与规模:数据是否需要加密?处理的数据量(Volume) 有多大?是否需要大数据系统?存储要求是什么?
  • 访问与更新模式:数据是否需要频繁更新和访问?还是仅需长期存储、用于备份目的?
  • 组织规范:组织内部可能已为不同类型的任务制定了允许使用的数据库或数据存储库标准。

🔍 决策时的具体评估维度

在考虑了基本因素后,我们需要从更具体的维度进行评估。以下是选择数据存储库时需要深入分析的几个方面:

  • 容量与访问类型:评估该存储库预期处理的容量类型。同时,分析所需的访问模式:是短间隔访问,还是在其上运行长时间查询?
  • 用途定位:明确其主要用途是用于事务处理(Transaction Processing)分析(Analytics)归档(Archival) 还是数据仓库(Data Warehousing)
  • 兼容性:考察新的数据存储库与现有生态系统(包括编程语言、工具和流程)的兼容性如何。
  • 安全特性:考虑该存储库提供的安全功能。
  • 可扩展性:这是最重要的因素之一。当前的性能可能令人满意,但它是否具备足够的可扩展性,能否随着组织的发展而扩展?

🏢 企业实践与平台选择

了解了理论维度后,我们来看看实际企业环境中的选择策略。很少有组织只使用一种数据存储库。

在我的团队中,我们有一套首选的解决方案:一个首选的企业级关系型数据库、一个用于小型项目和微服务的首选开源关系型数据库,以及一个首选的非结构化数据源。这三者构成了我们的核心。

一个重要考量是思考组织内部现有或希望培养的技能,并评估各种解决方案的成本。例如,我们拥有DB2专家,因此企业级数据库选择是DB2。然而,对于开源数据库,我们根据发展方向的变化调整过几次选择。

如今,托管平台也带来了差异。选择不再仅仅是“使用IBM DB2还是Microsoft SQL Server”,而是“如果使用它们,我是否要在AWS RDS上部署?或许我应该考虑Amazon Aurora或Google的关系型数据库产品”。存在众多不同的选择需要考量。

💡 基于数据特性与规模的选择策略

最终,选择取决于几个根本问题。决策涉及数据应如何存储、如何检索以及存储在哪里,这些都是非常重要的问题。

我认为,数据的结构应用程序的性质以及数据注入数据库的量级,这些因素共同决定了应选择的数据源类型。

在大多数情况下,一个关系型数据库(Relational Database) 就足够了。然而,也会存在边缘情况,像IBM DB2、Oracle或PostgreSQL这样的关系型数据库可能无法满足需求。

此时,需根据具体用例选择:

  • 如果每天要摄入吉字节(GB)或太字节(TB) 级的数据,那么像MongoDB这样的文档存储或像Cassandra这样的宽列存储可能更适合。
  • 如果试图构建产品推荐引擎,或展示社交媒体上不同人群的关系网络,那么像Neo4jApache TinkerPop这样的图数据库(Graph Database) 将是理想选择。
  • 如果为了分析而挖掘太字节(TB)或拍字节(PB) 级的数据,采用MapReduceHadoop引擎会是一个很好的选择。

因此,这最终归结于应用程序的性质数据的量级与结构。在为用例选择正确的数据库或数据源之前,必须充分理解这些。

📝 总结

本节课中,我们一起学习了为组织选择数据存储库时需要综合考量的多方面因素。从明确使用场景、数据类型、性能要求,到评估安全性、可扩展性及组织内部规范,每一步都至关重要。我们还探讨了企业实际决策中关于技能、成本及云平台选择的复杂性,并最终理解了如何根据数据的结构、应用的性质和数据量级来匹配最合适的数据库技术(如关系型、文档型、图数据库或大数据平台)。掌握这些考量视角,是成为一名合格数据工程师的基础。

022:ETL、ELT与数据管道

在本节课中,我们将学习数据从源系统移动到目标系统的不同工具和流程,包括ETL(提取、转换、加载)过程、ELT(提取、加载、转换)过程以及数据管道。

现在,我们来到从数据中获取价值的核心过程——提取、转换和加载过程,即ETL。ETL是将原始数据转换为可供分析的数据的方式。这是一个自动化过程,您从已识别的来源收集原始数据,提取与您的报告和分析需求相符的信息,清理、标准化并将该数据转换为在组织上下文中可用的格式,然后将其加载到数据存储库中。虽然ETL是一个通用过程,但实际工作在用途、效用和复杂性上可能大不相同。

提取是收集源位置数据以进行转换的步骤。数据提取可以通过批处理进行,这意味着源数据按预定时间间隔以大块形式从源移动到目标系统。批处理工具包括Stitch和Blendo。

也可以通过流处理进行,这意味着源数据从源实时拉取,并在传输过程中、加载到数据存储库之前进行转换。流处理工具包括Apache Samza、Apache Storm和Apache Kafka。

转换涉及执行规则和函数,将原始数据转换为可用于分析的数据。例如:

  • 使所有源数据的日期格式和度量单位保持一致。
  • 删除重复数据。
  • 过滤掉不需要的数据。
  • 丰富数据,例如将全名拆分为名、中间名和姓。
  • 建立跨表的关键关系。
  • 应用业务规则和数据验证。

加载是将处理后的数据传输到目标系统或数据存储库的步骤。它可以是:

  • 初始加载:即填充存储库中的所有数据。
  • 增量加载:即根据需要定期应用持续的更新和修改。
  • 完全刷新:即擦除一个或多个表的内容,并用新数据重新加载。

加载验证,包括对缺失值或空值的数据检查、服务器性能监控和加载失败监控,在此过程步骤中非常重要。密切关注加载失败并确保有正确的恢复机制至关重要。

ETL历史上一直用于大规模的批处理工作负载。然而,随着流式ETL工具的出现,它们也越来越多地用于实时流式事件数据。一些流行的ETL工具包括IBM InfoSphere Information Server、AWS Glue、IProva、Skyvia、Evo和Informatica PowerCenter。


上一节我们介绍了传统的ETL过程,本节中我们来看看它的一个变体——提取、加载和转换过程,即ELT。

在ELT过程中,提取的数据首先加载到目标系统,然后在目标系统中应用转换。ELT管道的目的地系统很可能是数据湖,尽管也可以是数据仓库。ELT是一项由云技术驱动的相对较新的技术。

为什么需要ELT过程?ELT对于处理大量非结构化和非关系型数据集非常有用。它非常适合数据湖,在原始数据加载到数据湖后,才对数据应用转换。

ELT过程有几个优点:

  • 由于原始数据直接交付到目标系统而非暂存环境,这缩短了提取和交付之间的周期。
  • 与数据湖结合,允许您在数据可用时立即摄取大量原始数据。
  • 与ETL过程相比,ELT为分析师和数据科学家进行探索性数据分析提供了更大的灵活性。
  • ELT仅转换特定分析所需的数据,因此可以用于多个用例。而在ETL过程中,如果数据仓库的数据结构不适合新的用例,可能需要修改整个结构。
  • ELT更适合处理大数据。

我们经常看到ETL、ELT和数据管道这些术语互换使用。虽然两者都将数据从源移动到目的地,但数据管道是一个更广泛的术语,它涵盖了将数据从一个系统移动到另一个系统的整个旅程,而ETL和ELT可能是其子集。

以下是数据管道的特点:

  • 数据管道可以设计用于批处理、流数据以及批处理和流数据的组合。
  • 在流数据的情况下,数据处理或转换以连续流的形式进行。这对于需要不断更新的数据特别有用,例如来自监控交通的传感器的数据。
  • 数据管道是一个高性能系统,支持长时间运行的批处理查询和较小的交互式查询。
  • 数据管道的目的地通常是数据湖,尽管数据也可能加载到不同的目标目的地,例如另一个应用程序或可视化工具。

有许多可用的数据管道解决方案,其中最流行的包括Apache Beam、Airflow和Dataflow。


在本节课中,我们一起学习了不同的数据移动方法:ETL(提取、转换、加载)过程和ELT(提取、加载、转换)过程。我们还了解了数据管道,它涵盖了数据从一个系统到另一个系统的完整旅程。

023:数据集成平台

在本节课中,我们将要学习数据集成平台的核心概念、功能以及市场上的主要工具。数据集成是数据工程中的关键环节,它负责将来自不同来源的数据整合起来,为分析和决策提供统一、可靠的数据视图。


Gartner将数据集成定义为一门学科,它包含了一系列实践、架构技术和工具,使组织能够跨多种数据类型进行数据摄取、转换、组合和供给。

该报告进一步解释,数据集成有多种使用场景,例如跨应用程序的数据一致性、主数据管理、企业间的数据共享,以及分析和数据科学领域的数据迁移与整合。

在数据科学和分析领域,数据集成包括从操作系统中访问、排队或提取数据,以逻辑或物理方式转换和合并提取的数据,进行数据质量管理和治理,并通过集成方法为分析目的交付数据。

例如,为了使客户数据可用于分析,你需要从销售、营销和财务等操作系统中提取单个客户的信息。然后,你需要提供合并数据的统一视图,以便你的用户可以从单一界面访问、查询和操作这些数据,从而进行统计分析、数据分析和可视化。

数据集成平台与ETL和数据管道有何关联?虽然数据集成将不同的数据组合成数据的统一视图,但数据管道涵盖了从源系统到目标系统的整个数据移动过程。从这个意义上说,你可以使用数据管道来执行数据集成,而ETL是数据集成中的一个过程。

数据集成没有单一的方法。然而,现代数据集成解决方案通常支持以下功能:

以下是现代数据集成平台的核心能力列表:

  • 丰富的预构建连接器目录:帮助你连接并与各种数据源(如数据库、平面文件、社交媒体数据API、CRM和ERP应用程序)构建集成流程。
  • 开源架构:提供更大的灵活性,避免供应商锁定。
  • 支持批处理和流处理:既支持大规模数据的批处理,也支持连续数据流的处理,或两者兼而有之。
  • 与大数据源集成:对大数据源的支持正日益成为选择集成平台决策的关键因素。
  • 附加功能:例如,围绕数据质量和治理、合规性与安全性的特定需求。
  • 可移植性:确保随着企业转向云模型,他们应该能够在任何地方运行其数据集成平台。
  • 云原生支持:数据集成工具能够原生地在单一云、多云或混合云环境中工作。

市场上有许多可用的数据集成平台和工具,范围从商业现成工具到开源框架。

IBM提供了一系列针对各种企业集成场景的数据集成工具,例如InfoSphere Information Server、Cloud Pak for Data、IBM Cloud Pak for Integration、IBM Data Replication、IBM Data Virtualization Manager、IBM InfoSphere Information Server on Cloud和IBM InfoSphere DataStage。

Talend的数据集成工具包括Talend Data Fabric、Talend Cloud、Talend Data Catalog、Talend Data Management、Talend Big Data、Talend Data Services和Talend Open Studio。

SAP、Oracle、Denodo、SAS、Microsoft、Kuli和Tibco是其他一些提供数据集成工具和平台的供应商。

开源框架的例子包括Dell Boomi、Jitterbit和SnapLogic。

有大量供应商通过虚拟私有云或混合云提供基于云的集成平台即服务(iPaaS)作为托管服务,例如Adeptia Integration Suite、Google Cloud的Cloud Data Fusion、IBM的Application Integration Suite on Cloud和Informatica的Integration Cloud。

随着企业采用新技术以及数据的增长(无论是数据源的多样性还是其在业务决策中的使用),数据集成领域也在持续发展。


本节课中,我们一起学习了数据集成的定义、应用场景及其与ETL、数据管道的关系。我们详细探讨了现代数据集成平台应具备的关键能力,并概览了市场上主流的商业与开源工具。理解这些平台和工具是构建高效、可靠数据管道的基础。

024:数据工程工具、数据库与存储库选择视角 🛠️💾

概述

在本节课中,我们将聆听数据工程领域的专业人士分享他们日常工作中使用的工具、数据库和数据存储库。数据工程生态系统非常庞大,从业者需要掌握多种技术来应对不同的数据处理需求。通过了解他们的实践经验,我们可以对数据工程的技术栈有一个更直观的认识。

数据工程生态系统概览

上一节我们了解了数据工程的基本概念,本节中我们来看看从业者实际使用的技术工具。数据工程生态系统非常庞大,从业者通常需要根据具体场景选择不同的工具。

一位从业者分享道,他们主要使用开源工具。以下是他们常用的技术栈:

  • 关系型数据库:例如 MySQL
  • NoSQL数据库:例如 MongoDBCassandra,以及图数据库 Neo4j
  • 编程语言Python 几乎是不可或缺的。当感觉数据工程领域缺少某个功能时,他们首先会尝试用Python来实现,之后再观察是否有现成的产品可以替代。
  • 数据处理与编排工具:使用 Apache Airflow 来创建数据管道;使用 Spark 进行大数据处理;使用 Kafka 处理流数据;使用 Talend 实现ETL功能。
  • 数据采集工具:使用 Beautiful SoupScrapy 进行网络爬虫。
  • 云存储:会考察多种云存储方案,用于数据归档和日常存储。

不同场景下的工具选择

在了解了广泛的技术栈后,我们来看看不同工作环境下的具体工具组合。工具的选择往往与公司背景和业务需求紧密相关。

另一位从业者对比了他在非营利组织和Coursera的工作经历:

  • 在非营利组织时:主要使用 SQL Server 作为数据仓库,并配合 SQL Server Integration Services (SSIS) 以及 WAAto 工具进行数据集成。
  • 在Coursera时:使用 AWS Redshift 作为数据仓库,使用 AWS S3 作为数据湖。他们最初使用内部工具构建和调度ETL流水线,但现在正转向使用开源的 Apache Airflow 进行数据编排。

数据工程师的多样化技能

数据工程师的角色要求掌握多样化的技能,以连接不同的数据源和处理流程。这不仅仅是使用单一工具,而是构建完整的解决方案。

一位工程师列举了他所接触的技术:

  • 数据库:关系型数据库如 IBM DB2Push-a-SQLMicrosoft SQL Server;NoSQL数据库如 CassandraMongoDB
  • 流处理与复制技术:使用 WebPMQ 进行数据复制;使用 Kafka 将事务数据移动到后台数据库进行批处理。
  • 数据移动工具:使用 SSIS 构建数据移动包;使用名为 NIFI 的工具(现由Apache基金会维护,是一款优秀的开源项目)在异构数据源之间移动数据。
  • 自定义脚本与API:编写 ShellPerl 脚本以及 Java API 来在不同应用和供应商系统间移动数据。

持续学习与技能演进

技术领域日新月异,数据工程师必须具备持续学习的能力。掌握核心原理比死记硬背特定工具更为重要。

一位拥有丰富经验的从业者分享了他的历程:

  • 早期经历:在IBM工作期间,大量使用 IBM DB2 数据库,后来甚至成为了该产品的产品经理。
  • 技能扩展:随着职责变化,他学习了 MySQLPostgreSQL,以及 HadoopSpark 等大数据系统。
  • 核心建议:数据工程是一个不断发展的领域,从业者需要成为终身学习者,不断掌握工作所需的新技能。只要扎实掌握数据基础原理,就能快速适应新技术。

企业级技术栈实践

最后,我们来看一个企业级环境下的完整技术栈示例,这涵盖了从数据库到开发运维的各个环节。

一位专注于中端平台的数据专家介绍:

  • 核心数据库:主要产品是运行在Linux、Unix和Windows上的 IBM DB2,他认为这在关系型数据库领域是一个很好的选择。
  • 云服务:深度使用 AWS 产品,例如在RDS上使用 Microsoft SQL ServerMariaDB
  • 开发与运维工具:以下工具对于管理数据库和工作流至关重要:
    • 版本控制GitHubGit,这在任何DevOps组织中都不可或缺。
    • 自动化服务器Jenkins,用于启动容器、执行维护任务和管理代码部署。
    • 数据库版本管理Liquibase,这是一个优秀的工具,结合容器使用,可以轻松管理数据库模式变更。

总结

本节课中,我们一起学习了数据工程专业人士在实际工作中使用的各种工具、数据库和存储库。我们看到,数据工程的技术栈非常多样化,涵盖了从传统的RDBMS到现代的NoSQL、大数据处理框架、数据编排工具以及云服务。关键在于理解数据基础原理,并保持持续学习的心态,这样才能在快速发展的技术浪潮中灵活选用合适的工具来解决实际问题。

025:大数据基础

在本节课中,我们将要学习大数据的基本概念及其核心特征。我们将了解大数据如何定义,以及它为何在当今数字世界中至关重要。


在这个数字世界中,每个人的行为都会留下痕迹,从出行习惯到健身锻炼和娱乐活动。我们日常交互的联网设备数量日益增多,它们记录着关于我们的海量数据。


这种现象甚至有一个专门的名称:大数据。安永(Ernst & Young)提供了以下定义:大数据指的是由人、工具和机器产生的动态、庞大且多样化的数据量。它需要新颖、创新且可扩展的技术来收集、存储和分析这些海量数据,以获取与消费者、风险、利润、绩效、生产力管理以及提升股东价值相关的实时商业洞察。

虽然大数据没有唯一的定义,但在不同的定义中存在一些共同的要素。

这些要素包括:速度(Velocity)、体量(Volume)、多样性(Variety)、真实性(Veracity)和价值(Value)

它们被称为大数据的 5V 特征。


🚀 速度(Velocity)

上一节我们介绍了大数据的5V特征,本节中我们来看看第一个“V”:速度。

速度 指的是数据积累的速率。数据正以极快的速度生成,这个过程永不停止。

近实时或实时的流处理技术,以及本地和基于云的技术,都可以非常快速地处理信息。


📈 体量(Volume)

了解了数据生成的速度后,接下来我们关注数据的规模。

体量 指的是数据的规模或存储数据量的增长。



以下是驱动数据体量增长的主要因素:

  • 数据源的增加。
  • 更高分辨率的传感器。
  • 可扩展的基础设施。


🎭 多样性(Variety)

数据不仅有庞大的体量,其形式也多种多样。这就是我们要讨论的多样性。

多样性 指的是数据的多样性。结构化数据 能整齐地放入行、列和关系型数据库中,而非结构化数据 则没有预定义的组织方式,例如推文、博客文章、图片、数字和视频。多样性也反映了数据来源的广泛性,包括机器、人和流程,既有组织内部的,也有外部的。




以下是驱动数据多样性的技术:

  • 移动技术
  • 社交媒体
  • 可穿戴技术
  • 地理空间技术
  • 视频技术
  • 以及许多其他技术


✅ 真实性(Veracity)

面对如此多样和庞大的数据,确保其质量至关重要。这就引出了真实性的概念。

真实性 指的是数据的质量和来源,以及其与事实和准确性的符合程度。其属性包括一致性、完整性、准确性和明确性。

驱动对真实性需求的因素包括成本,以及对海量数据可追溯性的需求。在数字时代,关于数据准确性的争论非常激烈:信息是真实的还是虚假的?



💎 价值(Value)

处理大数据的最终目的是从中提取价值。这就是最后一个“V”。

价值 指的是我们将数据转化为价值的能力和需求。价值不仅仅是利润,它还可能带来医疗或社会效益,以及客户、员工或个人满意度。人们投入时间理解大数据的主要原因就是为了从中获取价值。





🔍 5V特征实例

现在,让我们看一些5V特征在现实中的具体例子。

  • 速度:每分钟都有数小时的视频被上传到YouTube,这就在不断生成数据。试想一下,数据在数小时、数天和数年内积累的速度有多快。

  • 体量:世界人口约70亿,其中绝大多数人正在使用数字设备,如手机、台式电脑、笔记本电脑、可穿戴设备等。这些设备每天生成、捕获和存储的数据量约为 2.5 艾字节(2.5 quintillion bytes),相当于1000万张蓝光DVD的容量。




  • 多样性:让我们想想不同类型的数据:文本、图片、电影、声音、来自可穿戴设备的健康数据,以及来自物联网设备的各种数据。


  • 真实性:约80%的数据被认为是非结构化的。我们必须设计出方法来产生可靠且准确的洞察。这些数据必须被分类、分析和可视化。




🛠️ 大数据处理技术

面对这些挑战,数据科学家需要借助专门的工具从大数据中获取洞察。

收集的数据规模如此之大,意味着使用传统的数据分析工具是不可行的。然而,利用分布式计算能力的替代工具可以克服这个问题。例如 Apache Spark、Hadoop及其生态系统 提供了跨分布式计算资源提取、加载、分析和处理数据的方法,从而提供新的洞察和知识。

# 示例:大数据处理框架
# Apache Spark, Hadoop 等工具用于处理海量、高速、多样的数据集
processing_frameworks = [“Apache Spark”, “Hadoop Ecosystem”]




这为组织提供了更多与其客户连接的方式,并丰富了它们所提供的服务。

所以,下次当你戴上智能手表、解锁智能手机或追踪你的锻炼时,请记住:你的数据正在开启一段旅程,它可能通过大数据分析环游世界,然后再回到你身边。





📝 总结

本节课中,我们一起学习了大数据的基础知识。我们了解了大数据由 速度(Velocity)、体量(Volume)、多样性(Variety)、真实性(Veracity)和价值(Value) 这五个核心特征定义,并探讨了每个特征的含义、驱动因素和现实例子。最后,我们认识到处理如此规模的数据需要像 Apache Spark 和 Hadoop 这样的分布式计算工具。理解这些概念是迈入数据工程领域的重要第一步。

026:大数据处理工具(Hadoop、HDFS、Hive、Spark)

在本节课中,我们将学习三种核心的开源大数据处理技术:Apache Hadoop、Apache Hive和Apache Spark。我们将探讨它们各自的功能、架构特点以及在大数据分析生态系统中的角色。

大数据处理技术提供了处理大规模结构化、半结构化和非结构化数据集的方法,从而能够从大数据中提取价值。

在之前的课程中,我们讨论了NoSQL数据库和数据湖等技术。本节我们将聚焦于三个开源技术及其在大数据分析中的作用。

🗂️ Apache Hadoop:分布式存储与处理框架

Apache Hadoop是一个工具集合,它提供了大数据的分布式存储和处理能力。

Hadoop是一个基于Java的开源框架,它允许在计算机集群上对大型数据集进行分布式存储和处理。在Hadoop分布式系统中,一个节点就是一台单独的计算机,而节点的集合则构成了一个集群。Hadoop可以从单节点扩展到任意数量的节点,每个节点都提供本地存储和计算能力。

Hadoop为存储数据提供了一个可靠、可扩展且经济高效的解决方案,并且对数据格式没有要求。

使用Hadoop,你可以整合新兴的数据格式,例如流式音频、视频、社交媒体情绪和点击流数据,以及传统数据仓库中不常使用的结构化、半结构化和非结构化数据。它能为所有利益相关者提供近乎实时的自助服务访问。通过整合整个组织的数据,并将“冷数据”(即不频繁使用的数据)迁移到基于Hadoop的系统中,可以优化和简化企业数据仓库的成本。

💾 HDFS:Hadoop分布式文件系统

Hadoop的四个主要组件之一是Hadoop分布式文件系统,即HDFS。它是一个为大数据设计的存储系统,运行在通过网络连接的多台商用硬件上。

HDFS通过将文件分区存储到多个节点上来提供可扩展且可靠的大数据存储。它将大文件分割存储在多台计算机上,允许对它们进行并行访问。因此,计算可以在存储数据的每个节点上并行运行。它还在不同的节点上复制文件块以防止数据丢失,使其具备容错能力。

让我们通过一个例子来理解这一点。假设有一个包含全美国电话号码的文件。姓氏以A开头的人的电话号码可能存储在服务器1上,B开头的存储在服务器2上,依此类推。在Hadoop中,这个电话簿的片段将被存储在集群中,以重建整个电话簿。你的程序将需要来自集群中每个服务器的数据块。

HDFS默认还会将这些较小的数据块复制到另外两个服务器上,确保在服务器故障时数据仍然可用。

除了更高的可用性,这还带来了多重好处。它允许Hadoop集群将工作分解成更小的块,并在集群中的所有服务器上运行这些作业,从而实现更好的可扩展性。

最后,你还能获得数据本地性的优势,即将计算任务移动到数据所在的节点附近执行的过程。这在处理大型数据集时至关重要,因为它能最大限度地减少网络拥塞并提高吞吐量。

使用HDFS的其他一些好处包括:

  • 硬件故障快速恢复:因为HDFS被设计为能够检测故障并自动恢复。
  • 支持流式数据访问:因为HDFS支持高数据吞吐率。
  • 容纳大型数据集:因为HDFS可以在单个集群中扩展到数百个节点或计算机。
  • 可移植性:因为HDFS可以跨多个硬件平台移植,并与各种底层操作系统兼容。

🐝 Apache Hive:基于Hadoop的数据仓库

上一节我们介绍了Hadoop的存储核心HDFS,现在让我们看看构建在其之上的数据查询工具。

Hive是一个开源的数据仓库软件,用于读取、写入和管理直接存储在HDFS或其他数据存储系统(如Apache HBase)中的大型数据集文件。

Hadoop适用于长时间的顺序扫描,而Hive基于Hadoop,因此查询具有很高的延迟。这意味着Hive不太适合需要非常快速响应的应用程序。

此外,Hive是基于读操作优化的,因此不适合通常涉及大量写操作的事务处理。

Hive更适合数据仓库任务,如ETL(提取、转换、加载)、报告和数据分析。它包含的工具使得通过SQL轻松访问数据成为可能。

⚡ Apache Spark:通用数据处理引擎

Hive解决了在Hadoop上进行SQL查询的问题,但对于需要更高速度和更复杂计算的任务,我们需要更强大的工具。

Apache Spark是一个通用的数据处理引擎,旨在为广泛的应用程序提取和处理海量数据,包括交互式分析、流处理、机器学习、数据集成和ETL。

它利用内存处理来显著提高计算速度,只有在内存受限时才将数据溢出到磁盘。

Spark支持多种主流编程语言的接口,如Java、Scala、Python、R和SQL。它可以使用其独立的集群技术运行,也可以在其他基础设施(如Hadoop)之上运行。它能够访问多种数据源的数据,包括HDFS和Hive,这使得它具有高度的通用性。

能够快速处理流数据并实时执行复杂分析是Apache Spark的关键用例。


本节课总结

在本节课中,我们一起学习了三种核心的大数据处理工具:

  1. Apache Hadoop:提供了分布式存储(HDFS)和处理大数据的底层框架,以其可扩展性和容错性著称。
  2. Apache Hive:构建在Hadoop之上的数据仓库软件,允许用户使用SQL语言对存储在HDFS中的大数据进行查询和分析,适用于批处理和数据仓库任务。
  3. Apache Spark:一个快速、通用的内存计算引擎,支持流处理、机器学习等复杂分析,弥补了Hadoop在实时性方面的不足。

这三者共同构成了一个强大而灵活的大数据处理生态系统,Hadoop负责可靠的存储,Hive提供友好的查询接口,而Spark则带来高速的计算能力。

027:大数据对数据工程的影响视角

在本节课中,我们将聆听几位数据专业人士的分享,了解大数据如何影响和塑造数据工程领域。


🎯 概述

大数据通常被描述为具有四个特征的数据,这四个特征也被称为“4V”:

  • 速度 (Velocity)
  • 真实性 (Veracity)
  • 体量 (Volume)
  • 多样性 (Variety)

大数据对数据工程产生了重大影响,使其成为一个更加多样化和丰富的领域。


🔄 大数据带来的变革

上一节我们了解了大数据的基本特征,本节中我们来看看这些特征如何驱动了数据工程领域的变革。

这种影响是自然而然的。因为随着当今组织收集的数据越来越多,能够理解这些数据并从中获取洞察变得日益重要和关键。这为数据工程领域开辟了广阔的机会。

以下是这种影响的具体表现:

  • 我们不仅看到了与处理大数据相关的新技术和产品的涌现。
  • 同时也催生了对于能够有效处理海量、多样化数据的专业人才的巨大需求。这种需求既包括构建和管理这些大数据系统,也包括分析其中的数据。

📈 数据来源与处理方式的演变

在物联网和社交媒体普及之前,将数据摄取到数据库中的方式非常有限。例如,可能需要数据录入分析师以非常慢的速度将数据输入数据库。

但在过去十年中,特别是随着各种新设备和应用通过API相互通信、推送最新更新,数据本身的特性也因这些技术演变而改变。

以下是数据工程随之演进的几个关键点:

  • 传统的数据库管理系统(DBMS)并非适用于所有场景的通用解决方案,许多数据库管理员和数据工程师在处理多样化的数据源和海量数据时都深刻体会到了这一点。
  • 数据工程领域本身发生了显著变化,数据工程师们最终发明了新的数据存储和处理方案,例如 Google BigTable、Cassandra、图数据库,以及用于分析PB级数据的 Hadoop MapReduce。
  • 因此,数据工程师们最终不仅需要编写自己的工具,还需要学习和应用新技术。这是一个由大数据驱动的重要演进过程。

💾 存储观念与技术革新

大数据从根本上改变了现状。现在,组织更愿意存储大量数据,用于数据存储的实际磁盘空间已不再是一个大问题。

我们已经达到了可以存储更多数据的阶段,这正是“大数据”热潮所带来的核心变化之一,以及处理海量数据的更好方法。

我们可以从不同角度思考大数据:

  • 显然,非结构化数据已成为一个重要部分,它通常不在传统数据库中处理。如果处理,通常会使用像 MongoDB 这样的数据库。
  • 此外,我们正在处理的数据总量也变得更加庞大

📝 总结

本节课中,我们一起学习了大数据(以其4V特征:速度、真实性、体量、多样性)对数据工程领域的深远影响。我们探讨了它如何催生新技术、新工具和新职业需求,如何改变了数据摄取与处理的范式,并推动了数据存储理念的革新。大数据使得数据工程从处理相对规整、有限的数据,演进为必须应对海量、高速、多样化的数据洪流,从而成为一个更具挑战性和机遇的领域。

028:数据平台架构设计

在本节课中,我们将学习数据平台架构的各个层次。一个层次代表数据平台中执行特定任务的功能组件。我们将探讨的层次包括数据摄取(或数据收集)层、数据存储与集成层、数据处理层以及分析与用户界面层。我们还将了解跨越多个层次的数据管道层。


🚀 数据收集层

数据收集层负责连接到源系统,并将数据从这些系统引入数据平台。该层执行以下关键任务:

  • 连接到数据源。
  • 以流式、批处理或两种模式将数据从数据源传输到数据平台。
  • 在元数据存储库中维护有关所收集数据的信息,例如一个批次摄入了多少数据、数据源及其他描述性信息。

以下是用于数据摄取的一些工具,它们支持批处理和流式两种模式:Google Cloud DataflowIBM StreamsIBM Streaming Analytics on CloudAmazon KinesisApache Kafka


💾 数据存储与集成层

数据一旦被摄取,就需要进行存储和集成。数据平台中的存储与集成层需要存储数据以供处理和长期使用,对提取的数据进行逻辑或物理上的转换与合并,并使数据可用于流式和批处理模式的处理。

存储层需要可靠、可扩展、高性能且成本效益高。

一些流行的关系型数据库包括:IBM DB2Microsoft SQL ServerMySQLOracle DatabasePostgreSQL。近年来,基于云的关系型数据库(也称为数据库即服务)也广受欢迎,例如 IBM DB2 on CloudAmazon Relational Database Service (RDS)Google Cloud SQLSQL Azure

在云上的 NoSQL 或非关系型数据库系统中,我们有 IBM CloudantRedisMongoDBCassandraNeo4j

集成工具包括 IBM 的 Cloud Pak for DataCloud Pak for IntegrationTalendData FabricOpen Studio。开源工具如 Dell BoomiSnapLogic 也是非常流行的集成工具。此外,还有许多供应商提供基于云的集成平台即服务,例如 Adaptive Integration SuiteGoogle Cloud Data FusionIBM 的 Application Integration Suite on CloudInformatica 的 Integration Cloud


⚙️ 数据处理层

上一节我们介绍了数据的存储与集成,本节中我们来看看数据的处理。数据验证、转换以及将业务逻辑应用于数据,是这一层需要完成的部分工作。

处理层应能够从存储中以批处理或流式模式读取数据并应用转换,支持流行的查询工具和编程语言,能够扩展以满足不断增长的数据集的处理需求,并为分析师和数据科学家提供在数据平台中处理数据的方式。

以下是该层发生的一些转换任务:

  • 结构化:本质上是改变数据形式和模式的操作。这种改变可能很简单,如改变记录内字段的顺序;也可能很复杂,如使用连接和联合将字段组合成复杂的结构。
  • 规范化:侧重于清理数据库中未使用的数据,减少冗余和不一致性。
  • 反规范化:将来自多个表的数据合并到一个表中,以便更高效地进行报告和分析查询。
  • 数据清洗:修复数据中的不规则之处,为下游应用和使用提供可信的数据。

根据数据大小、结构和工具的特定功能,有多种工具可用于执行这些数据转换,例如 电子表格OpenRefineGoogle Data PrepWatson StudioRapidMinerTrifacta WranglerPythonR 也提供了许多专门为处理数据而创建的库和包。

需要注意的是,存储和处理并不总是在独立的层中进行。例如,在关系型数据库中,存储和处理可以在同一层中发生;而在大数据系统中,数据可以先存储在 Hadoop 分布式文件系统 (HDFS) 中,然后在像 Spark 这样的数据处理引擎中进行处理。此外,数据处理层也可以位于数据存储层之前,在数据加载或存储到数据库之前应用转换。


📈 分析与用户界面层

分析与用户界面层将处理后的数据交付给数据消费者。数据消费者可以包括:

  • 商业智能分析师和业务利益相关者,他们通过交互式可视化表示(如仪表板和分析报告)来消费这些数据。
  • 数据科学家和数据分析师,他们为特定用例进一步处理这些数据。
  • 其他可能需要这些数据作为输入以供进一步使用的应用程序和服务。

分析与用户界面层需要支持查询工具和编程语言,例如:

  • 用于查询关系型数据库的 SQL,以及用于非关系型数据库的类 SQL 查询工具,如用于 Cassandra 的 CQL
  • 编程语言,如 PythonRJava
  • 可用于对数据进行在线和离线处理报告的 API
  • 可以实时从存储中消费数据以供其他应用程序和服务使用的 API
  • 仪表板和商业智能应用程序,例如 IBM Cognos AnalyticsTableauJupyter NotebooksPython 和 R 库 以及 Microsoft Power BI

🔄 数据管道层

覆盖数据摄取、数据存储与集成以及数据处理层的是数据管道层,它配备了提取、转换和加载工具。该层负责实现和维护一个持续流动的数据管道。

有多种数据管道解决方案可用,其中最流行的是 Apache AirflowDataflow


🎯 总结

本节课中,我们一起学习了数据平台架构的各个层次。这是一个简化版本,描绘了支持广泛任务的复杂架构。我们了解了从数据收集、存储集成、处理到最终分析与呈现的完整流程,以及贯穿其中的数据管道层。理解这些层次有助于我们构建和维护高效、可靠的数据平台。

029:数据存储选型与设计要素

在本节课中,我们将学习如何为数据工程系统选择和设计合适的数据存储。我们将探讨数据存储的核心概念、不同类型、设计时的关键考量因素,以及如何根据业务需求做出最佳决策。


🗄️ 什么是数据存储?

数据存储或数据仓库是一个通用术语,指代那些已被收集、组织并隔离的数据,以便用于业务运营,或用于报告和数据分析。

一个数据仓库可以是数据库、数据仓库、数据集市、大数据存储或数据湖。一个设计良好的数据存储对于构建一个可扩展且能在高工作负载下稳定运行的系统至关重要。


🎯 数据存储设计的主要考量因素

在本视频中,我们将探讨设计数据存储时的一些主要考量因素,例如您想要存储的数据类型、数据量、数据的预期用途、存储考量,以及您组织的隐私、安全和治理需求。


🗂️ 数据类型与数据库选择

有多种类型的数据库,选择正确的一个是设计数据库的关键部分。数据库本质上是一个为数据的输入、存储、搜索、检索和修改而设计的数据集合。

根据数据类型,数据库主要可以分为两种方式:关系型和非关系型。

关系型数据库

关系型数据库(RDBMS)最适合用于结构化数据。这类数据具有明确定义的模式,可以组织成表格格式。

非关系型数据库

非关系型数据库(NoSQL)最适合用于半结构化和非结构化数据,这些数据是无模式的自由格式数据。

根据数据类型和您希望如何查询数据,非关系型数据库有四种不同类型:键值型、文档型、列型和图型。

例如,如果您希望运行复杂的搜索查询和多操作事务,那么文档型数据库可能不是您的最佳选择。

同样,如果您需要处理高容量事务,您不会选择图型数据库,因为图型数据库并未针对大规模分析查询进行优化。


📊 数据量与存储规模

设计数据存储时的另一个重要考量因素是数据量或规模。

当您需要以原始格式存储来自源头的大量原始数据时,数据湖将是您的合适选择。使用数据湖,您可以大规模存储关系型和非关系型数据,而无需定义数据结构和模式。

或者,当您处理大数据时——即不仅数据量大,而且类型多样、处理速度快,需要分布式处理以进行快速分析——那么大数据存储库将是您会探索的一个选项。大数据存储将大文件分割到多台计算机上,允许并行访问它们。计算在存储数据的每个节点上并行运行。


🛠️ 数据的预期用途

您打算如何使用收集到的数据,也是选择和设计数据存储时的一个重要考量因素。

事务数量、更新频率、对数据执行的操作类型、响应时间以及备份和恢复要求,所有这些都需要在数据存储的设计中得到考虑。

无论您是需要使用数据存储来记录高容量的事务数据,还是为了分析目的执行复杂的查询,您的处理和存储需求都会有所不同。

  • 事务型系统:用于捕获高容量事务的系统,需要为高频率的读、写和更新操作而设计。
  • 分析型系统:另一方面,需要对从事务型系统聚合的大量历史数据应用复杂查询。它们需要更快的复杂查询响应时间。

基于数据的使用方式,模式设计、索引和分区策略在系统性能中扮演着重要角色。

数据的预期用途也驱动着可扩展性作为设计考量因素。数据存储的可扩展性是其处理数据量、工作负载和用户增长的能力。


🔧 数据库规范化

在数据库设计阶段,规范化是另一个重要的考量因素。规范化是在数据库中高效组织数据的过程。如果操作得当,它有助于优化存储空间的使用,使数据库维护更容易,并提供更快的数据访问速度。

规范化对于处理事务数据的系统很重要,但对于为处理分析查询而设计的系统,规范化可能会导致性能问题。


💾 存储角度的关键设计考量

现在,我们将从存储的角度来看一些关键的设计考量。这些是数据的性能、可用性、完整性和可恢复性

  • 性能参数包括吞吐量和延迟。即从存储中读取和写入信息的速率,以及访问存储中特定位置所需的时间。
  • 可用性:您的存储解决方案必须能让您在需要时毫无例外地访问数据。不应有任何停机时间。
  • 完整性:您的数据必须安全,免受损坏、丢失和外部攻击。
  • 可恢复性:您的存储解决方案应确保在发生故障和自然灾害时能够恢复数据。

🔒 数据隐私、安全与治理

一个安全的数据策略是一个分层的方法,它包括访问控制、多区域加密、数据管理和监控系统。

诸如GDPR、CCPA和HIPAA等法规限制了对个人和敏感数据的所有权、使用和管理。需要通过使用多种数据保护技术,通过受控的数据流和数据管理来提供数据访问。这是数据存储设计的一个重要部分。

数据隐私、安全和治理的策略需要从一开始就成为数据存储设计的一部分。如果在后期进行,会导致拼凑式的解决方案。


📝 总结

在本节课中,我们一起学习了指导数据存储设计的一些考量因素。我们探讨了如何根据数据类型(关系型 vs. 非关系型)、数据量(数据湖 vs. 大数据存储)、数据的预期用途(事务型 vs. 分析型)以及存储性能、安全性和治理需求来选择和设计合适的数据存储解决方案。理解这些要素是构建高效、可靠且安全的数据工程系统的基石。

030:数据平台安全 🔒

在本节课中,我们将学习企业级数据平台和数据存储库需要应对的多层次安全问题。我们将探讨安全性的不同层面,包括物理基础设施安全、网络安全、应用安全和数据安全,并了解构成有效信息安全策略的核心原则。


信息安全的核心:CIA三要素 🛡️

在深入探讨各个安全层面之前,我们首先需要理解一个普遍适用于所有安全领域的核心框架,即CIA三要素。它构成了制定有效信息安全策略的三大基石。

以下是CIA三要素的具体内容:

  • 保密性:通过控制未经授权的访问来确保信息安全。
  • 完整性:通过验证资源是可信且未被篡改的来确保数据准确可靠。
  • 可用性:通过确保授权用户在需要时能够访问资源来保障服务的连续性。

CIA三要素适用于所有安全层面,无论是基础设施、网络、应用还是数据安全。


安全的四个层面 🔐

上一节我们介绍了信息安全的通用框架,本节中我们来看看企业数据平台安全具体包含的四个不同层面或维度。

1. 物理基础设施安全

物理基础设施安全是IT系统安全的关键组成部分,涉及承载系统的物理设施的安全。对于云计算而言,这延伸到了云服务提供商的基础设施和设施安全。

以下是确保物理基础设施安全的一些措施:

  • 基于身份验证的设施周界访问控制,以及对出入口进行全天候监控。
  • 采用来自独立公用事业提供商的多路电源馈电,并配备专用发电机和UPS电池备份。
  • 管理设施内温度和湿度的加热与冷却机制。
  • 在选择设施地点时考虑环境威胁。例如,基础设施设施从不设在洪泛区或地震多发区,而是设在地震 resistant 结构中。
  • 在此类设施中还安装多级雷电保护和接地系统。

2. 网络安全

网络安全对于保护互连系统和数据的安全至关重要。网络安全解决方案旨在防止未经授权的访问和攻击。

以下是常见的网络安全解决方案:

  • 防火墙:防止对连接到互联网的私有网络进行未经授权的访问。
  • 网络访问控制:通过仅允许授权设备连接网络来确保端点安全。例如,公司网络可能不允许装有过期服务包的设备连接。
  • 网络分段:在网络内创建隔离区或虚拟局域网,以便根据不同资产所需的安全级别将资产隔离到单独的隔离区中。
  • 安全协议:确保攻击者无法在数据传输过程中窃取数据。
  • 入侵检测与防御系统:检查传入流量中的入侵企图和漏洞。

3. 应用安全

应用安全对于保护客户数据隐私和确保应用程序快速响应至关重要。安全需要构建在应用程序的基础中,以防止其他应用程序和服务引入漏洞。

您可以通过遵循以下安全工程实践来确保应用程序安全:

  • 威胁建模:识别与应用程序相关的相对弱点和攻击模式。
  • 安全设计:减轻风险。
  • 安全编码指南和实践:防止漏洞。
  • 安全测试:在应用程序部署前修复问题,并验证其不存在已知的安全问题。

4. 数据安全

数据安全是我们要探讨的最后一个,也是与数据工程最直接相关的层面。数据要么处于静态存储中,要么在系统、应用程序、服务和工作负载之间传输。无论是静态还是动态,数据都需要受到保护。

数据安全的主要控制措施之一是通过身份验证和授权系统来启用数据访问。

  • 身份验证系统验证您的身份,通常使用密码、令牌、生物识别技术或这些方式的组合来实现。
  • 授权确保用户根据其角色和分配给该角色的权限来访问信息。

静态数据包括文件、对象和存储。这类数据物理存储于数据库、数据仓库、磁带、异地备份或移动设备中。组织可以使用加密来应对静态数据面临的威胁。加密可以保护信息免遭泄露,即使信息丢失或被截获。

从一个地方移动到另一个地方的数据,例如通过互联网传输时,被称为动态数据。通常使用HTTPS、SSL和TLS等加密方法来保护动态数据。

在本课程后续内容中,您将了解更多关于数据生命周期的不同阶段、数据可能面临的漏洞以及有助于在整个生命周期中端到端保护数据的安全功能。


监控与响应 🚨

仅仅建立安全措施是不够的,主动监控和及时响应安全违规行为至关重要。为此,您需要在整个企业范围内实现安全流程和工具的端到端可见性与集成。

安全监控和智能系统为事件分类和合规目的创建完整的审计历史记录,并提供报告和警报,帮助企业及时对安全违规行为做出反应。


总结 📝

本节课中,我们一起学习了企业级数据平台安全的多个层面。您了解了构成信息安全基石的CIA三要素,并深入探讨了物理基础设施、网络、应用和数据这四个具体的安全维度。最后,我们强调了主动监控和集成响应的重要性。每个企业都需要制定企业级安全策略,确保业务、IT和所有利益相关者通过人员、政策、流程、系统和工具共同实现安全目标。

031:数据安全的重要性视角

在本节课中,我们将聆听几位数据专业人士的分享,探讨数据安全在数据工程领域中的核心地位。数据安全不仅是技术问题,更是关乎企业存续的战略要务。


🛡️ 数据安全的根本重要性

如果数据不安全,从长远来看,数据的其他任何方面都无关紧要。许多公司都曾遭遇严重的数据泄露事件。虽然如今这未必会让企业彻底倒闭,但这在一定程度上取决于组织的规模。

对于规模较小的组织,一旦失去对自身数据的访问权限,这很可能成为一个导致公司终结的问题。我们常常未能充分理解数据安全的重要性,总想着“上线后再加固”或“临上线前再加固”。但实际上,数据安全必须贯穿于每一个环节。

数据安全的重要性再怎么强调都不为过。几年前,《经济学人》杂志曾发表文章指出,世界上最有价值的资源不再是石油,而是数据。因此,数据是组织拥有的最宝贵资源,必须得到妥善的保护与保障。未能做到这一点,可能会带来灾难性的后果。


🔐 超越技术的组织责任

数据安全、治理与合规性,不仅仅是数据工程师需要担心的事情。它必须成为数据架构乃至整个组织流程的重要组成部分,组织的每个部分都需要持续关注这些事项。

我们必须确保,当存在独立的生产环境和非生产环境时,生产数据不会被“脱敏”不当而流入低级环境。绝对存在通过这种方式发生的数据泄露。我们必须思考并确保,只有真正需要访问生产数据的人才能获得相应权限。


👥 权限管理与内部威胁

关键在于理解你所使用工具的安全级别和角色设置,并确保每个用户仅获得完成其工作所需的最低权限。正是当我们赋予人们过多访问权限时,才真正为数据泄露和安全问题打开了大门。

事实上,对数据的威胁更可能来自组织内部,而非外部。想象外部人员入侵可能很刺激,但最常见的威胁往往源自内部。我们在数据行业听到的许多事件,例如药房人员访问名人处方信息,都属于此类。我们必须非常小心地保护数据。


💎 数据作为新时代的自然资源

数据是当今的自然资源。在大数据世界,数据就是石油,是我们的新自然资源。因此,我们的职责是确保这些有价值数据的金融属性得到保护,并确保我们的组织不会因为数据泄露而登上新闻头条,甚至更糟——因数据泄露而倒闭。


💾 数据恢复与硬件安全

我认为数据安全的一部分,是恢复数据的能力以及在特定硬件故障时进行恢复的能力。对我而言,这也是安全的一部分。因为如果我们因硬件故障而丢失数据,那就意味着我们无法访问数据,这在我看来就是数据安全的一部分。


📝 本节总结

本节课中,我们一起学习了数据安全的多个关键视角。我们认识到,数据安全是数据工程的基石,需要从组织战略、权限管理、风险认知(尤其是内部威胁)以及灾难恢复等多个层面进行综合考量。保护数据就是保护组织最核心的资产与未来。

032:数据收集与导入方法

在本节课中,我们将学习从各种数据源收集数据的不同方法与工具,以及如何将数据导入到不同类型的数据存储库中。我们将涵盖从数据库、网络、传感器到数据交换平台等多种数据源的访问方式,并探讨针对不同数据类型的存储策略。


🔍 数据收集方法

上一节我们概述了数据工程的基本概念,本节中我们来看看具体有哪些方法可以从数据源中收集数据。

结构化查询语言(SQL)

SQL是一种用于从关系型数据库中提取信息的查询语言。它提供简单的命令来指定需要从数据库的哪个表中检索什么数据,可以对具有匹配值的记录进行分组,控制查询结果的显示顺序,并限制查询返回的结果数量等。

核心公式/代码示例:

SELECT column1, column2 FROM table_name WHERE condition GROUP BY column1 ORDER BY column2 LIMIT 10;

非关系型数据库也可以使用SQL或类SQL查询工具进行查询。一些非关系型数据库拥有自己的查询工具,例如Cassandra的CQL和Neo4j的GraphQL。

应用程序编程接口(API)

API也广泛用于从各种数据源提取数据。需要数据的应用程序可以调用API来访问包含数据的端点。这些端点可以包括数据库、Web服务和数据市场。API也用于数据验证,例如,数据分析师可以使用API来验证邮政编码。

网络爬虫

网络爬虫,也称为屏幕抓取或网络采集,用于根据定义的参数从网页下载特定数据。网络爬虫可用于从网站提取文本、联系信息、图像、视频、播客和产品项目等数据。

RSS源

RSS源是另一种数据源,通常用于从在线论坛和新闻网站捕获持续更新的数据。

数据流

数据流是一种流行的数据源,用于聚合来自仪器、物联网设备、应用程序以及汽车GPS数据等的持续数据流。数据流和源也用于从社交媒体网站和交互式平台提取数据。

数据交换平台

数据交换平台允许数据提供者和数据消费者之间交换数据。数据交换有一套明确定义的交换标准、协议和格式。这些平台不仅促进数据交换,还确保维护安全性和治理。它们提供数据许可工作流、个人信息的去标识化和保护、法律框架以及隔离的分析环境。

以下是流行的数据交换平台示例:

  • AWS Data Exchange
  • CrunchBase
  • Lotame
  • Snowflake

其他专业数据源

许多其他数据源可以满足特定的数据需求。例如,对于营销趋势和广告支出,像Forrester和Business Insider这样的研究公司以提供可靠数据而闻名。像Gartner和Forrester这样的研究和咨询公司是战略和运营指导方面广泛信赖的来源。同样,在用户行为数据、移动和网络使用情况、市场调查和人口统计研究领域也有许多值得信赖的机构。


🗃️ 数据导入与存储库

在从各种数据源识别和收集数据之后,需要将其加载或导入到数据存储库中,然后才能进行整理、挖掘和分析。导入过程涉及合并来自不同来源的数据,以提供统一的视图和单一接口,通过该接口可以查询和操作数据。根据数据类型、数据量和目标存储库的类型,您可能需要不同的工具和方法。

上一节我们介绍了收集数据的方法,本节我们探讨如何将数据导入到合适的存储库中。

关系型数据库

特定的数据存储库针对某些类型的数据进行了优化。关系型数据库存储具有明确定义模式的结构化数据。如果您使用关系型数据库作为目标系统,您将只能存储结构化数据,例如来自OLTP系统、电子表格、在线表单、传感器、网络和Web日志的数据。结构化数据也可以存储在NoSQL数据库中。

半结构化数据

半结构化数据具有一些组织属性,但没有严格的模式,例如来自电子邮件、XML、ZIP文件、二进制可执行文件以及TCP/IP协议的数据。

半结构化数据可以存储在NoSQL集群中。XML和JSON通常用于存储和交换半结构化数据。JSON也是Web服务的首选数据类型。

非结构化数据

非结构化数据是没有结构且无法组织成模式的数据,例如来自网页、社交媒体源、图像、视频、文档、媒体日志和调查的数据。NoSQL数据库和数据湖为存储和操作大量非结构化数据提供了很好的选择。数据湖可以容纳所有数据类型和模式。

导入工具

ETL工具和数据管道提供了促进数据导入过程的自动化功能。例如Talend和Informatica等工具,以及Python和R等编程语言及其库,都广泛用于导入数据。


📝 总结

本节课中我们一起学习了数据工程中数据收集与导入的核心方法。我们探讨了使用SQL、API、网络爬虫、数据流和数据交换平台从不同来源收集数据的多种途径。接着,我们了解了如何根据数据的结构(结构化、半结构化、非结构化)将其导入到关系型数据库、NoSQL数据库或数据湖等合适的存储库中,并简要介绍了ETL工具和编程语言在自动化导入过程中的作用。掌握这些方法是构建有效数据管道的第一步。

033:数据清洗

在本节课中,我们将学习如何将原始数据转化为可用于分析的数据。这个过程被称为数据清洗或数据整理,它包含一系列转换和清理活动,以确保数据的可信度和分析价值。

原始数据必须经过一系列转换和清理活动,才能成为可用于分析的数据。数据整理,也称为数据清洗,是一个迭代过程,涉及数据探索、转换、验证,并使数据可用于可信且有意义的分析。它包括广泛的转换和清理活动,我们将在本视频中学习其中一部分。

现在,让我们看看在数据分析场景中,数据通常经历的一些关键转换。

🔧 数据转换:结构化

上一节我们介绍了数据清洗的整体概念,本节中我们来看看第一种关键转换任务:结构化。这个任务包括改变数据形式和模式的操作。输入的数据可能具有多种格式。例如,一些数据可能来自关系数据库,而另一些数据可能来自Web API。为了合并它们,你需要改变数据的形式或模式。

这种改变可能很简单,比如改变记录或数据集中字段的顺序;也可能很复杂,比如将字段组合成复杂的结构。

以下是两种最常见的用于合并数据的结构化转换:

  • 连接:当两个表连接时,连接操作合并的是列。结果表中的每一行都包含来自两个表的列。
    • 公式/代码表示结果表 = 表A JOIN 表B ON 条件
  • 联合:联合操作合并的是行。来自第一个源表的数据行与来自第二个源表的数据行合并到一个表中。结果表中的每一行都来自其中一个源表。
    • 公式/代码表示结果表 = SELECT * FROM 表A UNION SELECT * FROM 表B

转换还包括数据的规范化和反规范化。规范化侧重于清理数据库中未使用的数据,减少冗余和不一致性。例如,来自事务系统的数据,由于持续进行插入、更新和删除操作,通常是高度规范化的。反规范化用于将来自多个表的数据合并到一个表中,以便更快地进行查询。例如,来自事务系统的规范化数据通常在运行报告和分析查询之前进行反规范化。

🧹 数据转换:清洗

了解了如何结构化数据后,我们接下来关注清洗任务。清洗任务是修复数据中的不规则性,以产生可信且准确的分析结果。数据清洗工作流程的第一步是检测数据集中可能存在的不同类型的问题和错误。

你可以使用脚本和工具来定义特定的规则和约束,并根据这些规则验证数据。你也可以使用数据剖析和数据可视化工具进行检查。

数据剖析帮助你检查源数据,以了解数据的结构、内容和相互关系。它能发现异常和数据质量问题。例如,空白或空值、重复数据,或者某个字段的值是否在预期范围内。

使用统计方法可视化数据可以帮助你发现异常值。例如,绘制人口统计数据集的平均收入可以帮助你发现异常值。

这引出了实际的数据清洗环节。你应用于清洗数据集的技术将取决于具体用例和遇到的问题类型。

以下是几种更常见的数据问题及其处理方法:

  • 缺失值:处理缺失值非常重要,因为它们可能导致意外或有偏差的结果。你可以选择过滤掉具有缺失值的记录,或者在你的用例需要该信息时,设法获取该信息。第三种方法是插补,即根据统计值计算缺失值。你选择的行动方案需要基于什么对你的用例最有利。
  • 重复数据:数据集中重复的数据点需要被移除。
  • 无关数据:不符合你用例上下文的数据可以被视为无关数据。例如,如果你正在分析某个人群分段的总体健康状况,他们的联系电话可能与你无关。
  • 数据类型转换:这需要确保字段中的值以该字段的数据类型存储。例如,数字存储为数值数据类型,日期存储为日期数据类型。
  • 标准化:你可能需要清理数据以使其标准化。例如,对于字符串,你可能希望所有值都是小写。同样,日期格式和度量单位也需要标准化。
  • 语法错误:例如,字符串开头或结尾的空格或多余空格是需要纠正的语法错误。这也包括修复拼写错误或格式。例如,在某些记录中,州名以全称(如 New York)输入,而在另一些记录中以缩写(如 NY)输入。
  • 异常值:数据集中与其他观测值差异极大的值。异常值可能正确也可能不正确。例如,当选民数据库中的年龄字段值为5时,你知道这是不正确的数据,需要纠正。现在,考虑一群人,他们的年收入在10万到20万美元之间,但其中一人年收入为100万美元。虽然这个数据点并非不正确,但它是一个异常值,需要仔细审视。

📝 总结

本节课中,我们一起学习了为了使原始数据可用于分析而需要执行的一些转换和清理活动。你了解了如何通过结构化和清洗任务来准备数据,并学习了数据剖析和数据可视化如何帮助发现需要解决的问题。掌握这些基础技能是成为数据工程师的关键一步。

034:IBM数据工程专业证书第1课 - 数据清洗工具

在本节课中,我们将学习一些常用的数据清洗软件与工具。数据清洗是数据工程中至关重要的一步,它帮助我们将原始、杂乱的数据转化为干净、可用的格式,为后续分析做好准备。


🛠️ 常用数据清洗工具概览

上一节我们介绍了数据清洗的重要性,本节中我们来看看具体有哪些工具可以帮助我们完成这项任务。以下是几种广泛使用的数据清洗工具:

  • 电子表格软件:例如 Microsoft Excel 和 Google Sheets。它们内置了丰富的功能和公式,可以帮助你识别问题、清理和转换数据。此外,还有插件(如 Microsoft Power Query for Excel 和 Google Sheets 的查询函数)支持从多种数据源导入数据,并按需进行清洗和转换。
  • OpenRefine:这是一款开源工具,支持导入和导出多种格式的数据(如 TSV、CSV、XLS、XML、JSON)。使用 OpenRefine,你可以清洗数据、转换数据格式,并通过网络服务和外部数据扩展数据集。它易于学习和使用,提供基于菜单的操作,无需记忆命令或语法。
  • Google Data Prep:这是一个智能的云数据服务,允许你以可视化方式探索、清理和准备结构化和非结构化数据以进行分析。它是一个完全托管的服务,意味着你无需安装或管理软件及基础设施。Data Prep 非常易于使用,它会根据你的每一步操作,建议理想的下一步,并能自动检测数据模式、数据类型和异常。
  • Watson Studio Refinery:通过 IBM Watson Studio 提供,允许你使用内置操作来发现、清理和转换数据。它将大量原始数据转化为可供分析使用的高质量信息。Data Refinery 支持将数据导出到多种数据源,能自动检测数据类型和分类,并自动执行适用的数据治理策略。
  • Trifacta Wrangler:这是一个基于云的交互式服务,用于清理和转换数据。它能处理混乱的真实世界数据,并将其清理和重排成数据表,然后可以导出到 Excel、Tableau 和 R 等工具。它以协作功能著称,允许多个团队成员同时工作。
  • Python:拥有庞大的库和包集合,提供强大的数据操作能力。以下是其中几个重要的库:
    • Jupyter Notebook:一个广泛用于数据清洗与转换、统计建模和数据可视化的开源 Web 应用程序。
    • NumPy:Python 提供的最基础的包,全称 Numerical Python。它快速、灵活、可互操作且易于使用。它支持大型多维数组和矩阵,并提供用于操作这些数组的高级数学函数。其核心数据结构是 ndarray
    • Pandas:专为快速简便的数据分析操作而设计。它允许通过简单的单行命令执行复杂操作,例如合并、连接和转换大量数据。使用 Pandas,可以防止因来自不同源的数据错位而导致的常见错误。其核心数据结构是 DataFrame
  • R:也提供了一系列专门为处理杂乱数据而创建的库和包,例如 dplyrdata.tablejsonlite。使用这些库,你可以调查、操作和分析数据。
    • dplyr:一个用于数据清洗的强大库,语法精确且直接。
    • data.table:帮助你快速聚合大型数据集。
    • jsonlite:一个强大的 JSON 解析工具,非常适合与 Web API 交互。

⚖️ 如何选择合适的数据清洗工具

了解了各种工具后,你可能会问:我应该选择哪一个?数据清洗工具具有不同的能力和维度。你选择最适合需求的工具,将取决于具体用例、基础设施和团队相关的因素。

以下是需要考虑的关键因素:

  • 支持的数据大小:工具能高效处理的数据量级。
  • 支持的数据结构:工具是否能处理结构化、半结构化或非结构化数据。
  • 清洗和转换能力:工具提供的具体数据操作功能是否满足你的需求。
  • 基础设施需求:是本地部署、云服务,还是完全托管。
  • 易用性和学习曲线:工具是否易于上手和使用。

📝 课程总结

本节课中,我们一起学习了数据工程中常用的数据清洗工具。我们从基础的电子表格软件开始,介绍了 OpenRefine、Google Data Prep、Watson Studio Refinery、Trifacta Wrangler 等专用工具,并探讨了编程语言 Python 和 R 中强大的数据操作库。最后,我们讨论了如何根据数据大小、结构、功能需求、基础设施和易用性等因素来选择适合自己项目的工具。掌握这些工具将为你高效地进行数据预处理打下坚实基础。

035:数据查询与分析

在本节课中,我们将学习如何使用查询语言访问数据库中的数据,以便更好地理解数据。我们将介绍几种基本的数据查询与分析技术,包括计数、聚合、识别极值、数据切片、排序、模式过滤和数据分组。这些技术虽然以SQL为例进行说明,但同样适用于其他查询语言和NoSQL数据库。


🔢 计数与聚合

上一节我们介绍了查询语言的基本作用,本节中我们来看看如何对数据集进行计数和聚合分析。计数和聚合函数能帮助我们快速了解数据的规模和分布情况。

以下是常用的计数与聚合函数:

  • COUNT():计算数据集中的行数或记录数。例如,SELECT COUNT(*) FROM customers; 会返回客户表中的总记录数。
  • COUNT(DISTINCT column):计算某列中唯一值的数量。例如,SELECT COUNT(DISTINCT dealer) FROM sales; 可以统计数据集中有多少个唯一的汽车经销商。
  • SUM(column):计算数值列的总和。
  • AVG(column):计算数值列的平均值。
  • STDDEV(column):计算数值列的标准差,用于衡量数据的离散程度。标准差越大,数据分布越分散。

例如,在一个二手车销售数据集中,平均售价约为6000美元,但标准差超过11000美元。这表明售价分布非常广泛,存在远低于或远高于平均值的记录。


📈 识别极值与数据切片

了解了数据的整体情况后,我们常常需要关注其中的极端值或特定部分的数据。识别极值可以帮助我们发现数据中的高点与低点。

以下是识别极值的函数:

  • MAX(column):返回某列中的最大值。例如,SELECT MAX(amount) FROM sales; 可以找出客户支付的最高金额。
  • MIN(column):返回某列中的最小值。

数据切片则允许我们根据特定条件检索数据的子集。例如,我们可能只想查看居住在特定地区或消费金额在某个区间内的客户数据。这可以通过 WHERE 子句配合运算符实现。

SELECT * FROM sales
WHERE amount BETWEEN 1000 AND 2000
  AND region = 'North';

🔄 排序数据

对数据进行排序可以使其按某种有意义的顺序排列,从而更易于理解和分析。例如,如果我们想研究节日期间汽车销量是否上升,可以按购买日期对销售记录进行排序。

使用 ORDER BY 语句可以实现排序:

SELECT * FROM sales
ORDER BY purchase_date DESC; -- DESC表示降序,ASC表示升序

🎯 过滤模式

有时我们需要进行模糊匹配,而不是精确查找。LIKE 运算符允许我们根据模式来过滤数据,它比等号运算符更灵活。

例如,我们想筛选出某个地区(该地区邮政编码前三位固定,后两位变化)的所有购买记录。可以使用 LIKE 配合通配符 %(匹配任意多个字符)或 _(匹配单个字符)来实现。

SELECT * FROM customers
WHERE pin_code LIKE '123%'; -- 匹配所有以‘123’开头的邮政编码

👥 分组数据

分组是数据分析中的一个重要工具,它能将数据按指定列的值进行分类,然后对每个组进行聚合计算。这通过 GROUP BY 语句实现。

例如,我们想按邮政编码查看客户的总消费金额:

SELECT pin_code, SUM(amount) as total_spent
FROM sales
GROUP BY pin_code;

📝 总结

本节课中我们一起学习了几种基本但至关重要的数据查询与分析技术。我们了解了如何使用计数和聚合函数(如 COUNT, SUM, AVG, STDDEV)来获取数据的概览;学习了如何用 MAXMIN 函数识别极值,以及如何使用 WHERE 子句进行数据切片。我们还探讨了通过 ORDER BY 对数据进行排序,利用 LIKE 运算符进行模式过滤,以及使用 GROUP BY 语句对数据进行分组分析。掌握这些技术是理解和分析数据库中数据的第一步。

036:性能调优与故障排除

在本节课中,我们将学习数据工程师在数据工程生命周期中的一项核心职责:监控并优化系统和数据流的性能与可用性。性能问题可能出现在多个领域,本节我们将重点探讨数据管道和数据库的性能调优与故障排除方法。


🔍 数据管道的性能挑战

数据管道涵盖了数据从源头到目的地,流经多个系统、应用程序和过程的完整旅程。一个数据管道通常由复杂的工具组合运行,并可能面临多种性能威胁。

以下是数据管道常见的性能威胁类型:

  • 可扩展性:面对不断增长的数据集和工作负载时,系统扩展能力不足。
  • 应用程序故障:应用本身出现错误或崩溃。
  • 计划作业问题:定时任务未按计划启动、等待依赖项,或任务未按正确顺序执行甚至完全未执行。
  • 工具不兼容性:由于数据管道由处理不同任务的各种工具组成,工具间可能存在兼容性问题。

为了评估性能,我们需要定义明确的性能指标。


📈 数据管道的性能指标

当需要对数据管道进行基准测试或性能评估时,需要关注以下关键性能指标:

  • 延迟:服务完成一个请求所需的时间。
  • 故障率:服务发生故障的频率。
  • 资源利用率及利用模式:系统资源(如CPU、内存)的使用情况。
  • 流量:在给定时间段内接收到的用户请求数量。

🛠️ 数据管道故障排除步骤

那么,解决数据管道性能问题的最佳方式是什么?这取决于具体问题,但一般来说,可以遵循以下步骤:

  1. 收集信息:尽可能多地收集关于事件的信息,最重要的是确认观察到的行为是否确实是一个问题。问题可能通过警报系统报告、用户反馈或在维护检查中被发现。
  2. 检查版本与变更:检查是否使用了正确的软件和源代码版本。如果有最近的部署,检查变更内容并调查其与问题的潜在关联。
  3. 检查日志与指标:在故障排除早期检查日志和指标,以隔离问题是与基础设施、数据、软件还是它们的组合相关。错误信息、日志以及故障发生时的网络负载、内存和CPU利用率对此有帮助。
  4. 复现问题:如果日志无法帮助定位问题,则需要在测试环境中复现该问题。这可能是一个迭代且耗时的过程。
  5. 验证与修复:一旦确定了根本原因假设,并通过一系列测试验证了该假设,就可以按照团队流程计划在生产环境中实施修复。

🗄️ 数据库性能调优

性能调优的另一个重要方面是优化数据库性能。我们首先需要了解数据库中需要监控的性能指标。

以下是关键的数据库性能指标:

  • 系统中断:数据库服务不可用的时间。
  • 容量利用率:存储、计算等资源的使用情况。
  • 应用程序减速:因数据库响应慢导致的应用程序性能下降。
  • 查询性能:单个查询的执行效率。
  • 冲突活动与查询:多用户同时请求导致的资源竞争,以及批处理活动造成的资源限制。

接下来,我们看看数据库优化的一些最佳实践。


💡 数据库优化最佳实践

数据库优化涉及容量规划以及索引、分区、规范化等数据库设计活动。

以下是几项核心的优化实践:

  • 容量规划:确定满足性能要求所需的最佳硬件和软件资源的过程,即使系统负载每日波动。容量规划也需考虑未来的增长需求。
  • 数据索引:帮助快速定位数据,而无需搜索数据库中的每一行。它能在处理查询时最小化磁盘访问次数。其核心作用是加速数据检索。
    • 公式/概念CREATE INDEX index_name ON table_name (column_name);
  • 数据分区:将非常大的表分割成更小的独立表的过程。查询运行更快,因为它们只扫描数据的一小部分。分区还提高了数据可管理性。
    • 公式/概念PARTITION BY RANGE (column_name) (...);
  • 数据规范化:一种通过减少数据冗余引起的不一致性,以及减少对数据库进行更新、删除和插入操作时产生的异常,来设计数据库的技术。这影响了查询、清洗和分析操作的效率与速度。

📊 监控与学习系统

监控和学习系统帮助我们实时收集关于系统和应用程序的定量数据。在数据工程生命周期中,这些系统让我们能够洞察数据管道、平台、数据库、应用程序、工具、查询、计划作业等的性能。

让我们了解一些这类系统及其工作原理:

  • 数据库监控工具:频繁抓取数据库性能指标的“快照”。这可以帮助您追踪问题真正开始发生的时间和方式,从而更有效地隔离并找到问题的根源。
  • 应用程序性能管理工具:通过跟踪请求响应时间和错误信息来测量和监控应用程序性能。这些工具还跟踪每个进程所利用的资源量,有助于主动分配资源以提升应用性能。
  • 查询性能监控工具:收集关于查询吞吐量、执行性能、资源利用率及利用模式的统计数据,以便更好地规划和分配资源。
  • 作业级运行时监控:数据管道通常有运行时间很长的进程,这意味着在进程结束时才发现错误的代价很高。作业级监控将作业分解为一系列逻辑步骤,监控每个步骤的完成情况和完成时间。
  • 数据处理量监控:监控流经数据管道的数据量,有助于评估工作负载的大小是否正在拖慢系统。

🧹 维护计划

另一项帮助系统在最佳水平运行的措施是执行维护例程。

预防性维护例程生成的数据可用于识别导致故障和低可用性的系统和流程。这些例程可以是:

  • 基于时间的:计划为在固定时间间隔执行的定时活动。
  • 基于条件的:在出现特定问题或注意到性能下降时执行。

📝 总结

本节课中,我们一起学习了数据管道和数据库性能调优与故障排除的多个方面。我们探讨了常见的性能威胁、关键指标、系统化的故障排除步骤,以及数据库优化的核心实践。此外,我们还了解了各种监控系统如何提供性能可见性,以及定期维护计划对于保持系统健康运行的重要性。掌握这些知识,是确保数据工程系统稳定、高效的基础。

037:治理与合规

在本节课中,我们将学习数据治理与合规的基本概念。我们将了解数据治理的定义、相关法规的类型、合规的含义,以及数据生命周期各阶段的关键考量。最后,我们将探讨用于确保合规性的各种工具和技术控制措施。


什么是数据治理?

数据治理是一套用于在整个数据生命周期中维护数据安全性、隐私性和完整性的原则、实践和流程。

一个数据治理框架涵盖了组织数据管理流程的每个部分,包括技术、数据库和数据模型。


受法规保护的数据类型

上一节我们介绍了数据治理,本节中我们来看看法规旨在保护哪些类型的数据免遭滥用。

法规主要保护个人数据和敏感数据。这些数据可以追溯到个人、可用于识别个人身份,或包含可能对个人造成伤害的信息。例如,关于种族、性取向或遗传信息的数据。

以下是主要的法规类型:

  • 通用数据保护条例:这是一项专门针对欧盟的法规。它保护欧盟公民在欧盟成员国内部交易中的个人数据和隐私。
  • 美国各州法规:在美国,各州制定了各自的法规。例如,加利福尼亚州制定了《加州消费者隐私法案》,以更好地保护客户数据。
  • 行业特定法规:这些法规管理敏感和个人数据的收集与使用。例如:
    • 在医疗保健领域,HIPAA隐私规则管理受保护健康信息的收集和披露。
    • 在零售领域,PCI DSS标准管理信用卡数据。
    • 在金融领域,SOX法规管理财务信息的处理和报告。

什么是合规?

合规涵盖了组织遵守法规并以合法、合乎道德的方式开展运营的流程和程序。

组织需要建立控制和检查机制,以遵守法规,并维护可验证的审计跟踪,以证明其对这些法规的遵守情况。

不遵守标准的后果可能很严重,可能导致经济处罚、损害公众形象,并导致客户和合作伙伴的信任丧失。

需要强调的是,合规不是一次性活动,而是一个持续的过程,需要人员、流程和技术的结合,并不断发展。


数据生命周期中的治理考量

治理法规要求企业在数据生命周期的每一步都明确其目的,并在行动中保持清晰和透明。

让我们通过一个典型的数据生命周期来更好地理解这一点,并了解每个阶段可能适用的一些考量。组织中的典型数据生命周期包括以下阶段:

以下是数据生命周期各阶段的关键考量:

  • 数据获取阶段:需要确定需要收集哪些数据,以及获取这些数据的法律依据(合同和同意)。数据的预期用途应作为隐私政策发布,并在内部以及与数据被收集的个人进行沟通。还需要确定满足既定目的所需的数据量。例如,电子邮件地址是否满足您的目的,还是您也需要电话号码和邮政编码?
  • 数据处理阶段:需要确定处理个人数据的细节,以及处理个人数据的法律依据,例如合同或同意。
  • 数据存储阶段:需要确定数据将存储在何处,包括为防止内部和外部安全漏洞将采取的具体措施。
  • 数据共享阶段:需要确定供应链中的哪些第三方供应商可能访问您收集的数据,以及如何通过合同让他们对您所负责的相同法规承担责任。
  • 数据保留和处置阶段:需要确定在指定时间后保留和删除个人数据将遵循的政策和流程,以及如何确保在数据删除时,将其从所有位置(包括第三方系统)移除。

在上述每个阶段,您都需要维护个人数据获取、处理、存储、访问、保留和删除的可审计跟踪。


确保合规的工具与技术控制

现在,让我们看看通过不同工具和技术提供的一些控制措施,以确保遵守治理法规。

以下是用于确保合规的关键控制措施:

  • 身份验证与访问控制:当今的平台提供分层身份验证流程,例如密码、令牌和生物识别技术的组合,以提供针对数据未经授权访问的全面保护。身份验证系统旨在验证您的身份。访问控制系统确保授权用户根据其用户组和角色访问资源(包括系统和数据)。例如,数据库具有角色和权限的概念,因此只有授权用户和应用程序才能访问特定对象,例如数据库中的表、行或列。
  • 加密与数据脱敏:使用加密技术,数据被转换为编码格式,只有通过安全密钥解密后才能读取。数据加密可用于静态数据(存储在存储系统中时)和传输中的数据(通过浏览器、服务、应用程序和存储系统移动时)。数据脱敏为下游处理提供数据匿名化,并使用假名化。通过匿名化,表示层被抽象化,而无需更改数据库本身的数据。例如,在屏幕上显示时用符号替换字符。数据假名化是一种去标识化过程,其中个人身份信息被人工标识符替换,使得数据无法追溯到个人身份。例如,用名称字典中的随机值替换姓名。
  • 托管选项:符合国际数据传输要求和限制的本地部署和云系统。
  • 监控与告警功能:安全监控有助于主动监控、跟踪和应对跨基础设施、应用程序和平台的安全违规行为。监控系统还提供详细的审计报告,跟踪对数据的访问和其他操作。告警功能在安全漏洞发生时进行标记,以便可以立即触发补救措施。告警基于漏洞的严重性和紧急程度,这些在系统中是预定义的。
  • 数据擦除:数据擦除是一种基于软件的永久清除系统中数据的方法,通过覆盖实现。这与简单的数据删除不同,因为删除的数据仍然可以恢复。

总结

本节课中,我们一起学习了为什么数据治理与合规在数据生命周期中至关重要且相辅相成,以及工具和技术在治理实施框架中所扮演的角色。我们探讨了数据治理的定义、保护的数据类型、合规的含义,并详细分析了数据生命周期各阶段的治理考量。最后,我们介绍了用于确保合规性的关键技术和控制措施,如身份验证、加密、监控和数据擦除。

038:数据工程职业机会

在本节课中,我们将探讨数据工程领域的职业机会。首先,我们将从行业内的权威报告中了解这一就业市场的宏观情况。


就业市场宏观概览

根据LinkedIn的《2020年新兴就业报告》,数据工程师已与机器学习和数据科学家一同,成为美国增长最快的十大职业之一。从零售到汽车等各行各业都已注意到这一趋势,并将这类难以招聘的人才纳入团队。

Dice的《2020年科技就业报告》将数据工程师列为增长最快的技术职业,年增长率高达50%。随着越来越多的公司竞相为其不断扩展的数据基础设施寻找合适人才,预计未来几年这一需求将持续增长。报告进一步指出,医疗保健、技术和咨询是整体上对数据科学人才(包括数据工程师)需求最大的三个领域。但报告也强调,未来没有任何行业能完全不受这一领域的影响。

在Glassdoor的《2020年美国最佳工作》榜单中,数据工程师位列前十。该榜单的评选标准包括收入潜力、工作满意度评分以及职位空缺数量。


多样化的职位角色

数据工程领域提供了多样化的职位角色。职位名称可能比较灵活,不同公司的数据工程师角色可能略有不同。通常,组织内的数据工程角色会按专业领域进行划分,例如:数据架构、数据设计与架构、数据平台、数据管道与ETL、数据仓库以及大数据。

这些角色可能被统称为“数据工程师”,也可能有更具体的头衔,如:数据架构师、ETL工程师、数据仓库工程师和大数据工程师。例如,如果你的组织希望你专注于实施和管理基于云的数据湖,你的职位很可能是“数据湖工程师”。

然而,无论具体头衔如何,对于所有这些细分岗位,掌握操作系统、编程语言、数据库以及虚拟机、网络和应用服务等基础设施组件的知识,都是基本要求。同时,理解数据在业务中的潜在应用也同样重要。

你也可能有机会在一个小型团队或初创公司中,同时参与整个数据工程生命周期的各个阶段,尤其是在他们刚开始建立数据工程实践的初期。但随着实践的发展,一个多学科的工程团队将逐渐形成。


职业发展路径

如果你所在的组织已经建立了数据工程实践,那么你的职业道路很可能从助理或初级数据工程师开始,逐步晋升为数据工程师、高级数据工程师、数据工程主管和首席数据工程师。

晋升过程可能类似于在一个矩阵中导航。你不仅需要深化自己专业领域的技能,还需要拓展到数据工程的其他领域。例如,从数据架构师的角色出发,即使没有实践经验,也需要对数据仓库、数据湖、数据管道和ETL流程有功能性的理解。

数据工程师的成长不仅体现在你理解和掌握的工具与技术范围的扩大,还体现在你对数据工程生命周期整体图景的把握能力。你的沟通技巧、与不同技术和业务利益相关者协作的能力、运营或项目管理技能都需要持续进步,才能胜任领导职位。

作为领导者,你将承担更多责任,例如花更多时间将业务需求转化为技术规范,成为业务期望与技术团队开发成果之间的桥梁。你还需要评估并决定团队应该使用的工具和平台,并对确保数据质量、数据隐私和法规遵从性的系统、流程和工具的实施承担更大责任。


新兴角色

以下是该领域一些新兴的角色:

  • 大数据工程师:他们与大数据存储、平台以及Hadoop和Spark等处理工具打交道,专注于大规模数据管道的管理以及数据的迁移和处理。
  • 机器学习工程师:他们设计和实现机器学习算法,并处理大规模的结构化和非结构化数据集。这个角色是数据工程与数据科学及人工智能技能的交叉点。


总结

本节课中,我们一起学习了数据工程领域的一些职业机会。要成为一名不断成长的数据工程师,你需要持续学习和实施新兴的工具与技术,同时保持好奇心,并成为一名有团队意识的成员。

039:进入数据工程领域的视角 👁️

在本节课中,我们将聆听几位数据专业人士分享他们如何进入数据工程领域的故事。通过这些不同的职业路径,我们可以了解进入这个领域的多种可能性。


概述

本节视频汇集了多位数据工程师的个人经历。他们来自不同的背景,通过不同的方式进入了数据工程领域。他们的故事将帮助我们理解,成为一名数据工程师并没有单一固定的路径。


数据工程师的职业路径

上一节我们了解了数据工程的基本概念,本节中我们来看看几位从业者是如何开启他们的数据工程之旅的。他们的经历各不相同,但都指向了同一个充满活力的领域。

从数据库管理员(DBA)转型

第一位专业人士最初是一名专注于IBM DB2的数据库管理员(DBA)。他特别享受解决OLTP(联机事务处理)和OLAP(联机分析处理)数据库性能问题的过程。作为DBA,他有机会与Web应用开发人员、ETL开发人员、商业智能用户以及企业内其他团队进行互动。

随着业务需求的发展,对非DBMS工具和流程进行投资与研究的需求也随之增长。例如:

  • 为了存储文档,他们采用了 MongoDB
  • 为了满足应用7x24小时高可用的需求,他们开始探索 Cassandra
  • 为了分析型数据库,他们开始探索 Hadoop,并搭建了独立的集群进行概念验证。

在探索并开始使用这些技术之后,他发现自己已经成为了一名数据工程师,而不再仅仅是DBA。

直接定位数据领域

第二位专业人士的入行方式有些不同。他认为进入数据工程通常有两种途径:从系统管理转向数据专业,或从开发转向数据专业。而他本人从大学毕业后,就立志成为一名DBA,并将此作为简历上的明确目标。他成功地在IBM找到了相关工作。

在两年内,他成长为一名合格的DBA。他指出,如今直接进入数据领域的机会可能更多。数据工程这类领域通常受益于其他领域的专业知识,例如系统运维经验或开发经验。了解系统管理的原则(如存储、网络影响)或了解开发人员、数据科学家对数据的需求,都是进入数据工程的有效途径。

他强调,数据工程绝对是一个可以从零开始的领域。无论你是否拥有大学学位,都需要对信息技术有基本的理解,并且最好能找到一位导师指引方向。导师可以帮助你明确学习重点。如今网络上有海量的学习资源,包括在线学位课程,为进入这个领域提供了前所未有的便利。

从实践与自学开始

第三位专业人士的起点是学生时期做一些简单的数据录入工作,这引发了他对数据处理及其力量的兴趣。尽管他拥有计算机工程学位,但这并未直接让他获得数据工程师的职位。

当时没有在线课程,他通过购买书籍来学习如何操作数据库。更重要的是,他通过创建数据库应用程序、参与志愿工作和自由职业来应用所学知识。这些实际的数据库工作技能和经验,最终帮助他获得了一份实习机会。

此后,他主要在工作中学习新技术,偶尔参加培训课程。如今,他主要通过观看YouTube视频和参加在线课程来了解新的数据技术。他认为这是一段有趣的旅程。

跨行业转型

第四位专业人士的经历展现了更大的跨度。大学毕业后,她先是在中学教了两年科学和地理,之后又在非营利教育机构做了三年的市场和招聘工作。接着,她进入研究生院学习非营利组织管理和信息系统,正是在这里,她对数据产生了兴趣。

毕业后,她加入了波士顿的一家教育非营利组织,成为一名商业智能分析师。这是她的第一份全职数据相关工作,学习曲线很陡峭,但她非常享受这个过程。工作一年半后,虽然仍热爱教育,她开始考虑在非营利部门之外尝试不同的方向。

于是,她开始寻找教育科技公司的机会,并向Coursera申请了数据科学家职位,但很快被拒绝了。幸运的是,当时的团队也在寻找数据工程师,他们认为她的背景有潜力,便主动联系她询问是否对该职位感兴趣。当时,数据工程对她来说是个新概念,她甚至不清楚数据工程与商业智能、数据科学之间的区别。但她抓住了机会,开始了面试流程,并幸运地获得了这份工作。2018年秋天,她从波士顿搬到湾区,开始了在Coursera的数据工程之旅。


总结

本节课中,我们一起学习了四位数据工程师进入该领域的独特视角。他们的故事表明,进入数据工程的路径是多样化的:可以从传统的DBA角色演进,可以直接以数据为目标开始职业生涯,可以通过自学和实践积累经验,甚至可以从完全不同的行业(如教育、非营利机构)成功转型。关键因素在于对数据的兴趣、持续学习的意愿、实践应用的能力,以及在可能的情况下寻求指导。这个领域对拥有不同背景和技能的人才持开放态度。

040:数据工程学习路径 📊

在本节课中,我们将探讨进入数据工程领域的多种学习路径。我们将分析不同背景的学习者如何规划自己的技能发展路线,并了解如何通过系统学习与实践项目来构建数据工程能力。

进入数据工程领域有多种路径可供探索。本视频将探讨其中一些主要路径。

学术路径与在线课程 🎓

上一节我们提到了数据工程领域的多样性,本节中我们来看看如何通过正规教育开启数据工程之旅。

数据工程是一个技术性很强的领域,拥有计算机科学或工程学学位能为你铺平道路。部分雇主确实会将学位作为入门级岗位的招聘标准。但同样真实的情况是,许多数据工程师,尤其是有一定编码背景的从业者,是通过自学成才的。

知名学习平台如Coursera、edX和Udacity提供了全面的在线课程与专业认证项目。这些课程的课程体系由该领域顶尖高校和科技公司设计并交付。

以下是这些课程的主要优势:

  • 课程提供实践性作业和真实世界项目,帮助你建立进入该领域的信心。
  • 完成课程后可获得专业认证,这些认证在当今就业市场受到认可和重视。

技能发展路径规划 🗺️

现在你已经对数据工程的子领域和技术技能的广度有了基本了解。因此,选择符合你当前技能水平和职业抱负的路径应该相对容易。

例如,在涉足数据工程的其他领域之前,你可以决定先从构建数据管道、分布式系统或数据架构方面的技能入手。明确短期和长期目标将有助于你为自己设计一条支持你整个旅程的学习路径。

跨领域转型路径 🔄

虽然进入这个领域有几种不同的方式,但你的技术能力将是你在这一职业中的主要支柱,同时还需要对数据在业务中的范围和应用有广泛理解。

如果你不是相关专业毕业生,或者想提升技能或转行,你也可以借助专业认证和其他学习资源来获取数据工程技能。

以下是两种常见的转型背景:

  • 技术相关岗位转型:例如,你目前可能是IT支持专家、软件测试员、程序员或从事任何其他技术岗位,可以通过技能提升来获得数据工程技能。
  • 数据相关岗位深化:你也可以是统计学家、数据分析师、商业智能分析师或其他类型的数据专业人士,通过技能重塑进入数据工程领域。

从基础到实践 🛠️

如果你对编码有基本的熟悉度,可以培养一些能让你入门的基础技术技能。

以下是入门阶段可以掌握的核心技能示例:

  • 编程与查询语言:例如 PythonSQLJavaScala
  • 操作系统与数据库:学习在不同操作系统(如Linux)上工作,并操作各类数据库(如 MySQLPostgreSQL)。

掌握其中一些技能后,你可以获得入门级工作,或者创建一些可以添加到作品集的项目,然后再开始追求更高级的技能。实际项目经验对于巩固你在这个领域的理解至关重要。

随着你在应用和处理所学知识方面获得经验,你可以转向拥有更复杂数据需求和基础设施的更大团队和公司。

持续学习与职业心态 🔄

数据工程是一个快速发展的领域。如果你充满好奇心、乐于学习新事物并对技术感到兴奋,你将成为任何数据工程团队的宝贵资产。

本节课中我们一起学习了进入数据工程领域的多种路径。我们了解到,无论是通过学术学位、在线认证课程,还是从现有技术或数据岗位转型,关键在于构建扎实的技术基础,并通过实践项目不断巩固和深化理解。明确的目标规划、持续学习的能力以及对技术的热情,是在这个快速发展的领域取得成功的重要因素。

041:雇主对数据工程师的要求视角

在本节课中,我们将聆听几位数据专业人士的分享,了解雇主在招聘数据工程师时通常看重哪些技能和素质。通过他们的视角,我们可以更清晰地规划自己的学习和发展路径。


🎯 概述:雇主的多维度要求

雇主对数据工程师的要求并非单一标准,而是根据具体职位和公司需求有所变化。总体而言,他们既关注技术能力的广度与深度,也重视软技能和个人特质。

上一节我们介绍了课程的整体背景,本节中我们来看看几位行业专家具体阐述了哪些关键要求。


🔧 技术能力:广度与深度并存

雇主通常期望数据工程师接触过多种数据相关技术。不同职位侧重点不同:有的角色要求熟悉多种数据源,包括关系型数据库、NoSQL数据库、内存数据库或键值存储;有的则更看重数据移动流程方面的深厚经验,即能够从各类数据源(如RDBMS、NoSQL数据库)提取数据,甚至通过API从社交媒体获取数据并加载到数据湖或数据仓库中。

以下是雇主普遍关注的核心技术领域:

  • 数据库与数据模型:精通RDBMS和NoSQL数据库,具备Schema设计能力。
  • 数据处理:能够构建和维护ETL/ELT流程。其核心公式可表示为:数据源 -> 抽取(Extract) -> 转换(Transform) -> 加载(Load) -> 目标存储
  • 数据流与格式:有处理流数据的能力,并能处理多种数据格式(如JSON、Parquet、CSV)。
  • 数据获取:掌握通过API进行数据采集或网络爬虫的技能。
  • 编程与查询:熟练掌握SQL、数据建模、ETL方法论以及Python等编程语言被视为基础必备技能。
  • 数据分析与自动化:具备基本的数据分析技能,并且重要的是,能够将工作中的常规任务自动化。

💡 软技能与思维模式

除了硬性技术指标,雇主同样高度重视候选人的软技能和内在特质。当招聘数据领域人才时,雇主会寻找具备以下素质的人:

以下是关键的软技能要求:

  • 好奇心与解决问题能力:不满足于被动接受数据,能主动提出深入问题以明确方向。例如,当被问到“数据库变慢了,你怎么办?”时,雇主希望看到候选人通过提问来系统性定位问题根源(如网络、查询、硬件等),而非直接给出某个具体优化答案。
  • 沟通与协作能力:数据工作绝非孤军奋战,需要与团队内外多方人员有效互动。清晰表达和阐述自己工作的能力至关重要。
  • 责任心与职业操守:拥有强烈的责任感,对自己负责的工作和产出负责。
  • 持续学习热情:对学习充满热情,能够通过课程、博客、项目等多种方式主动深入学习该领域。
  • 团队契合度:评估候选人是否具备良好的团队合作技能,能否与组织文化相匹配。

🏢 公司规模与职位层级的影响

具体要求会因公司规模和职位层级而异。在大公司,数据工程师可能只需专注于特定领域,例如专门构建ETL管道;而在初创公司,工程师则可能需要身兼数职,因此雇主会期望其拥有更广泛的技能。

对于初级职位,雇主更看重对技术的普遍理解能力和软技能,而非某项特定精深技术。他们会关注候选人如何学习该领域,例如上过什么课程、阅读什么博客。对于高级职位,则会针对具体的业务需求,寻找拥有特定精深技术专长的人才。


🚀 如何脱颖而出:超越证书

拥有合适的学历或专业证书是获得关注的良好起点,但仅此还不够。你需要能够证明自己具备所需的技术和软技能,并从众多候选人中脱颖而出。

以下是一些让自己脱颖而出的方法:

  • 项目经验:展示你完成过的相关项目。
  • 技术输出:是否撰写过技术文章、进行过技术分享或制作过相关视频。
  • 技能演示:在面试或简历中清晰展示你的沟通能力和技术理解。

📝 总结

本节课中,我们一起学习了雇主在招聘数据工程师时的多维评价标准。总结起来,一个成功的候选人需要技术广度与深度结合,掌握从数据存储、处理到获取的全栈技能;同时,好奇心、解决问题能力、沟通协作和持续学习等软技能与思维模式同样关键。此外,根据目标公司规模和职位层级调整技能展示重点,并通过实际项目和成果来证明自己的能力,是获得心仪职位的重要途径。

042:通往数据工程的多元路径

在本节课中,我们将聆听多位数据专业人士的分享,了解进入数据工程领域的多种不同途径。数据工程是一个新兴且多样化的领域,进入这个角色的路径并非唯一。

🎓 学术教育路径

上一节我们了解了课程的概述,本节中我们来看看进入数据工程领域的传统学术路径。

你可以从学院或大学获得软件工程或计算机科学等相关领域的学位,我就是通过这种方式入行的。但这个选择可能费用高昂,并且需要投入数年时间。即便如此,你可能仍需要在学校教授的知识之外补充技能,以满足实际工作的要求。

如果你已经拥有其他领域的学位,或者没有条件投入数年时间获取学位,可以选择更短期的文凭课程、线下训练营,或参加在线课程和证书项目。这些项目可以是兼职或全职的。

以下是选择合适项目时需要考虑的关键因素:

  • 成本:评估课程的费用。
  • 时间:确认完成课程所需的时间。
  • 声誉:考察课程提供方是否具有良好声誉。
  • 内容:确保课程内容是最新的。
  • 评价:查看课程评价,并与已完成该课程的人交流。
  • 学习风格:确保课程符合你的学习风格,例如,你是否有足够的动力进行在线自学,还是需要一定的指导。

🔄 职业转型路径

除了直接通过教育进入,从其他相关职业转型是另一条常见路径。数据工程师可以从多种现有角色转型而来。

以下是几种常见的转型起点:

  • 系统管理员:这是一个很好的起点。你可以先精通一种操作系统和数据库,然后转型为数据工程师。
  • 数据库管理员:你离成为数据工程师仅一步之遥。
  • 自动化工程师:如果你擅长自动化手动任务,可以从这条路径转向数据工程。
  • 数据分析师:你已经对数据有很多了解,这也是成为数据工程师的良好起点。
  • 程序员:即使是一名程序员,也可以转型为数据工程师。

一位专业人士分享了他的观察:“你可以从DBA(数据库管理员)开始,然后过渡到数据工程,这对我和我的一些同事来说效果很好。我能想到的另一条自然过渡到数据工程的路径是从软件开发轨道转型。”

💡 核心技能与背景

无论选择哪条路径,掌握核心技能是成功的关键。底线是,数据工程师应该非常熟悉数据库、不同类型的数据源和数据格式,并利用这些知识来构建数据管道。

除了这些技术技能,学术背景也能提供助力。另一位专家指出:“从技术轨道来看,我认为如果你有计算机科学和数学背景,将会对你大有帮助,它会缩短你成为一名优秀数据工程师的时间。”

🌈 路径的多样性

整个数据工程领域非常新,并且正如前面提到的,不同公司对数据工程师的要求也不同。这基本上意味着有很多不同的方式和路径可以进入数据工程领域。

路径的多样性在从业者背景上得到体现:

  • 我有几位同事在大学学习了计算机科学,毕业后直接进入了数据工程领域。
  • 我也有一些数据工程师朋友,他们曾经是软件工程师。
  • 那些在进入数据工程领域之前一直展现技术背景的人固然常见,但这并非绝对必要。你也可以在没有计算机科学背景的情况下进入数据工程领域。

一位从业者以自己的经历为例:“我的经验就是一个很好的例子。我在非营利组织从事了多年非技术职位,没有很强的技术背景。但我从非营利组织的商业智能分析师做起,在那里磨练了我在SQL、数据挖掘和数据库方面的技能,然后通过Coursera进入了数据工程领域。”

另一位管理者总结了常见的来源:“我看到的进入数据工程的典型路径,要么来自系统工程师一侧,要么来自开发人员一侧。从服务台转型过来的我也比较欣赏,因为你能从那个方向来的人身上感受到他们的工作 ethic。但更常见的是,你会看到有人从开发人员或系统管理员起步。”


本节课总结

本节课中,我们一起学习了进入数据工程领域的多元路径。我们了解到,除了传统的计算机科学学位教育,还可以通过短期课程、证书项目,或从系统管理员、数据库管理员、数据分析师、程序员等相关职业成功转型。关键在于掌握数据库、数据管道构建等核心技能,并选择一条与个人背景、学习风格和职业目标相匹配的路径。数据工程领域充满机会,条条大路通罗马。

043:数据工程入门(IBM)🎯

P43:给数据工程新手的建议

在本节课中,我们将聆听多位数据专业人士的分享,了解进入数据工程领域可以采取的不同路径。我们将整理他们的核心建议,帮助你构建扎实的基础并规划学习路线。


概述:数据工程师的成长路径

数据工程是一个快速发展的领域,掌握正确的学习方法和实践策略至关重要。本节将多位专家的建议归纳为几个核心方面,为你的学习之旅提供清晰指引。


1. 构建坚实基础 🧱

上一节我们介绍了课程的整体目标,本节中我们来看看如何为数据工程职业生涯打下坚实基础。专家们普遍认为,在追逐层出不穷的新技术之前,必须先掌握核心技能。

以下是构建基础的关键技能点:

  • 精通SQL与Python:这是处理数据和实现自动化的两大基石。
  • 掌握数据建模与ETL方法:理解如何设计和构建数据管道是数据工程师的核心职责。
  • 深入学习一种关系型数据库(RDBMS):选择一种你容易获取且感到舒适的RDBMS(如MySQL、PostgreSQL)并精通它。

2. 积累动手实践经验 🛠️

理论学习固然重要,但解决实际问题的能力更为关键。专家强调,获取实践经验并非一定要依赖全职工作或实习。

以下是获取实践经验的几种有效途径:

  • 利用开源工具进行个人项目:数据工程领域有大量开源或免费工具,结合丰富的在线学习资料,你可以自主搭建项目进行练习。
  • 主动创造实践机会:例如,可以请经验丰富的同事尝试“破坏”你搭建的数据库,然后你负责排查和修复问题。这种模拟实战能让你快速积累经验。
  • 为生活中的事物构建数据库:将学习应用于实际场景,解决真实问题。

3. 拓展技术广度与深度 📚

在打好基础并拥有一定实践经验后,你需要拓宽技术视野,以适应不同的数据场景。

以下是建议拓展学习的领域:

  • 掌握至少一种NoSQL数据库:例如MongoDB、Cassandra、Neo4j或Redis,理解其适用场景。
  • 学习编程语言:理想情况下,应掌握多种范式的语言。
    • 一种过程式语言(如Shell脚本、PL/SQL)。
    • 一种面向对象/通用语言(如JavaPython)。
    • 一种函数式编程语言(如Scala)。
  • 了解数据获取技术:学习网页抓取(Web Scraping)和API的使用,这是与外部系统交互、获取数据的重要方式。

4. 分享知识与融入社区 🤝

技术成长不是孤立的旅程。分享所学不仅能巩固知识,还能建立个人品牌,连接行业人脉。

以下是参与社区和分享知识的方式:

  • 在GitHub上公开你的代码:建立个人作品集。
  • 撰写技术文章或博客:可以在LinkedIn、个人博客或技术社区(如“data geek blog”)上分享。即使你是初学者,你对某个新工具或特定问题的理解也可能对他人极具价值。
  • 参加本地技术聚会或线上社群:不仅是为了学习,也是为了结识同行、交流见解。
  • 尝试制作教学视频或演示:教是最好的学。通过向他人讲解,你能更深刻地理解知识。

5. 保持持续学习的心态 🔄

数据工程与其他技术领域一样,正在持续不断地快速演进。

请将学习作为终身习惯:

  • 持续跟进新的技术和数据处理方法。
  • 考取相关的专业认证和证书,证明你的技能。
  • 专注于你喜爱且市场需求旺盛的技术,并深入钻研,展示你的专业能力。

总结

本节课中,我们一起学习了多位数据工程专家给新手的宝贵建议。核心要点包括:构建SQL、Python和数据建模的坚实基础;通过个人项目和模拟实战积累动手经验;拓展学习NoSQL、多种编程语言及数据获取技术以增加技术广度;积极通过分享代码、写作和参与社区来建立连接并巩固学习;最后,始终保持好奇心和持续学习的态度。数据工程师目前市场需求旺盛,遵循这些建议将能帮助你在求职和职业发展中脱颖而出。

祝愿你在成为数据工程师的旅程中取得成功!

posted @ 2026-03-26 08:50  布客飞龙II  阅读(0)  评论(0)    收藏  举报