前言
我们为什么写这本书呢?这要从我们由数据科学家转成数据工程师的经历说起。我们经常笑称自己为数据修补科学家。我们都被分配到过一些因数据基础太差而难以推进的项目。我们向数据工程领域进发的旅程始于承担建立数据基础和搭建基础设施等数据工程相关的任务。
随着数据科学的兴起,众多公司在数据科学人才方面投入巨大,以期获得丰厚的回报。但很多时候,数据科学家都在纠结于他们的背景和培训经历中没有涉及的一众基础问题:数据收集、数据清洗、数据访问权限控制、数据转换和数据基础设施。这些都是数据工程领域的问题。
本书不会涉及的内容
在我们介绍本书涉及的内容以及你将从本书中得到什么之前,让我们快速地介绍一下本书不涉及哪些内容。本书不涉及关于使用特定工具、技术或平台的数据工程内容。虽然很多优秀的书籍都是从这个角度来探讨数据工程技术的,但这些书的保质期很短。与这些书不同,本书专注于数据工程背后的基本概念。
本书涉及的内容
本书旨在填补当前数据工程内容和资料的空白。虽然市面上有很多涉及具体数据工程工具和技术的资料,但人们却很难理解如何将这些工具和技术组合并实际运用。本书将整个数据生命周期的各个环节联系起来,告诉你如何将各种技术拼接起来,以满足下游数据消费者(如分析师、数据科学家和机器学习工程师)的需求。本书是对那些覆盖特定技术、平台和编程语言细节的书籍的补充。
本书的主线是数据工程生命周期:数据生成、存储、获取、转换和服务。自从数据诞生以来,人们见证了无数技术和供应商产品的兴衰,但数据工程生命周期的各个阶段基本上没有变化。用这个框架思考,读者会对用技术解决真实业务问题有较好的理解。
本书的目标是描绘那些经久不衰的准则。首先,我们希望从数据工程提炼出一些可以包容任何有关技术的准则。其次,我们希望留下那些经得起时间考验的准则。我们希望这些内容能体现出从过去20年左右的数据相关技术变化中所吸取的经验,并希望我们提出的思考框架在未来10年或更长时间内仍然有用。
有一点值得注意:我们不假思索地在书中选用了云优先的思路。我们认为上云是这几十年中应用最广泛的转型趋势,大多数企业本地的数据系统和负载发展到最后总会上云。我们认为,数据相关基础设施和系统是快速变化的、可扩展的,因此数据工程师会倾向于在云上部署托管服务。不过,本书中的大多数概念也会有非云环境适用的版本。
本书的目标读者
本书的主要目标读者包括技术人员、中高级软件工程师、数据科学家、有兴趣进入数据工程领域的分析师,或有特定技术领域专长但希望发展更全面视角的数据工程师。我们的次要目标读者包括与技术人员合作的数据利益相关者,例如,指导数据工程师团队的数据团队技术主管,或计划将本地系统迁移上云的数据仓库总监。
正常情况下,你会想了解阅读这本书的理由。通过阅读关于数据仓库/数据湖、批处理和流式系统、任务编排、建模、管理、分析、云技术的发展等方面的书籍和文章,你可以保持对数据技术和发展趋势的关注,而本书可以把你所读到的内容编织成一幅跨越技术和范式的数据工程的完整图景。
准备工作
我们假设读者对企业级别的各种数据系统有较好的了解。此外,我们假设读者掌握一些有关SQL和Python(或其他编程语言)知识,并有使用云的经验。
准数据工程师可以获取大量练习Python和SQL的资料,相关的免费线上资源有很多(博客文章、教程网站、YouTube视频),每年还有许多新的Python书籍面世。
云计算有助于积累非常多的数据工具实践经验。我们建议准数据工程师开设云账户,如AWS、Azure、Google Cloud Platform、Snowflake、Databricks等。请注意,虽然许多平台可以免费体验,但读者在学习过程中应密切关注成本,并使用少量数据和单节点集群。
在企业外了解企业级别数据系统一直都很困难,这给那些想学习但又没有开始数据相关工作的准数据工程师带来了一定的障碍,本书会对这些读者有所帮助。我们建议数据新手先阅读每章的顶层逻辑,然后再看每一章末尾的补充资料,在第二次阅读时,留意任何不熟悉的术语和技术。你可以利用谷歌、维基百科、博客文章、YouTube视频和供应商的网站来熟悉新的术语并填补理解上的空白。
你将学到的内容以及获得的能力
本书旨在为你解决真实的数据工程问题打下坚实的基础。
在阅读完本书后,你将学到:
• 数据工程对你目前角色(数据科学家、软件工程师或数据团队负责人)的帮助。
• 如何看穿营销炒作,选择正确的技术、数据架构和流程。
• 如何使用数据工程生命周期来设计和建立一个强大的数据架构。
• 数据生命周期的每个阶段的最佳实践。
获得的能力有:
• 将数据工程方法论融入你当前的角色(数据科学家、分析师、软件工程师、数据团队负责人等)。
• 组合运用各种云技术来满足下游数据消费者的需求。
• 用全周期的最佳实践框架考量数据工程问题。
• 将数据治理和数据安全纳入数据工程生命周期。
本书导航
本书分为以下部分。
第一部分中,我们首先将在第1章中给出数据工程的定义,然后在第2章中描绘数据工程的生命周期。在第3章中,我们将讨论合理的架构设计。在第4章中,我们将介绍帮助技术选型的框架——我们经常看到技术和架构被混为一谈,但实际上这两者相去甚远。
第二部分将在第2章的基础上,深入介绍数据工程的生命周期,每个生命周期阶段——数据生成、存储、获取、转换和服务,都有相应的章节来介绍。第二部分是本书的核心,其他章节都服务于第二部分的中心思想。
第三部分涵盖一些其他话题。第10章将讨论安全和隐私。虽然安全一直是数据工程专业的重要部分,但随着以赢利为目的的黑客和网络攻击兴风作浪,它变得更加重要了。那么,保护隐私有多重要呢?不重视企业隐私的时代已经过去了,没有公司愿意被诟病“隐私不健全”。而随着GDPR、CCPA和其他相关法规的出台,对个人数据的不当处理会产生重大的法律风险。简而言之,安全和隐私一定是所有数据工程工作的首要关注点。
在从事数据工程工作,以及为本书做调研和咨询众多专家的过程中,我们对领域内的近期和远期发展进行了大量思考。第11章将介绍我们对数据工程未来的预测。但未来本是一件不确定的事情,那就让时间证明我们的想法。我们希望了解读者对未来的看法和我们有什么一致或不同。
在附录中,我们将介绍一些与数据工程的日常实践极为相关,但却和主干无关的技术话题。具体来说,工程师需要了解序列化和压缩(见附录A),这与处理数据文件和评估数据系统的性能有关,而云网络(见附录B)是数据工程上云的关键话题。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/fundamentals-of-data上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://oreilly.com。
我们在LinkedIn上的地址:https://linkedin.com/company/oreilly-media
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://youtube.com/oreillymedia
致谢
当我们开始写这本书的时候,很多人都忠告我们,这是一项艰巨的任务。像这样的书包含了很多深层的内容,并较全面地覆盖了数据工程领域,这就需要大量的研究、走访、讨论和深入思考。我们不认为本书囊括了数据工程的所有内容,但我们希望本书能引起你的共鸣。许多人都为本书做出了贡献,我们感谢很多专业人士对我们的支持。
首先,感谢本书优秀的技术顾问团队。他们认真地审阅了本书,并提供了宝贵(甚至有些直言不讳)的反馈。如果没有他们的努力,这本书将黯然失色。在此,我们向Bill Inmon、Andy Petrella、Matt Sharp、Tod Hansmann、Chris Tabb、Danny Lebzyon、Martin Kleppman、Scott Lorimor、Nick Schrock、Lisa Steckman、Veronika Durgin和Alex Woolford致以无限的谢意。
其次,我们和很多数据工程领域的专家通过现场演示、博客、聚会和数不清的电话进行过沟通。他们的思想帮助塑造了这本书。有太多的人需要感谢,这里无法一一列举,但我们还是想对Jordan Tigani、Zhamak Dehghani、Ananth Packkildurai、Shruti Bhat、Eric Tschetter、Benn Stancil、Kevin Hu、Michael Rogove、Ryan Wright、Adi Polak、Shinji Kim、Andreas Kretz、Egor Gryaznov、Chad Sanderson、Julie Price、Matt Turck、Monica Rogati、Mars Lan、Pardhu Gunnam、Brian Suk、Barr Moses、Lior Gavish、Bruno Aziza、Gian Merlino、DeVaris Brown、Todd Beauchene、Tudor Girba、Scott Taylor、Ori Rafael、Lee Edwards、Bryan Offutt、Ollie Hughes、Gilbert Eijkelenboom、Chris Bergh、Fabiana Clemente、Andreas Kretz、Ori Reshef、Nick Singh、Mark Balkenende、Kenten Danas、Brian Olsen、Lior Gavish、Rhaghu Murthy、Greg Coquillo、David Aponte、Demetrios Brinkmann、Sarah Catanzaro、Michel Tricot、Levi Davis、Ted Walker、Carlos Kemeny、Josh Benamram、Chanin Nantasenamat、George Firican、Jordan Goldmeir、Minhaaj Rehmam、Luigi Patruno、Vin Vashista、Danny Ma、Jesse Anderson、Alessya Visnjic、Vishal Singh、Dave Langer、Roy Hasson、Todd Odess、Che Sharma、Scott Breitenother、Ben Taylor、Thom Ives、John Thompson、Brent Dykes、Josh Tobin、Mark Kosiba、Tyler Pugliese、Douwe Maan、Martin Traverso、Curtis Kowalski、Bob Davis、Koo Ping Shung、Ed Chenard、Matt Sciorma、Tyler Folkman、Jeff Baird、Tejas Manohar、Paul Singman、Kevin Stumpf、Willem Pineaar、Tecton的Michael Del Balso、Emma Dahl、Harpreet Sahota、Ken Jee、Scott Taylor、Kate Strachnyi、Kristen Kehrer、Taylor Miller、Abe Gong、Ben Castleton、Ben Rogojan、David Mertz、Emmanuel Raj、Andrew Jones、Avery Smith、Brock Cooper、Jeff Larson、Jon King、Holden Ackerman、Miriah Peterson、Felipe Hoffa、David Gonzalez、Richard Wellman、Susan Walsh、Ravit Jain、Lauren Balik、Mikiko Bazeley、Mark Freeman、Mike Wimmer、Alexey Shchedrin、Mary Clair Thompson、Julie Burroughs、Jason Pedley、Freddy Drennan、Jason Pedley、Kelly Phillipps、Matt Phillipps、Brian Campbell、Faris Chebib、Dylan Gregerson、Ken Myers、Jake Carter、Seth Paul、Ethan Aaron等表示感谢。
我们还要感谢Ternary Data团队(Colleen McAuley、Maike Wells、Patrick Dahl、Aaron Hunsaker等)、我们的学生,以及世界各地无数支持我们的人。这也提醒了我们世界真小。
与O'Reilly的工作人员一起工作真是太棒了,特别感谢Jess Haberman在计划预审阶段对我们的信任,感谢优秀的、极有耐心的开发编辑Nicole Taché和Michele Cronin的无私编辑、反馈与支持。也感谢O'Reilly的一流制作团队(Greg和他的伙伴们)。
Joe想感谢他的家人Cassie、Milo和Ethan。他们为这本书也付出了很多,所以Joe开玩笑地保证自己再也不写书了。
Matt要感谢他的朋友和家人,感谢他们的超强耐心和支持。他很希望Seneca在经历了劳累和错过了很多假期的家庭时光之后,还能给一个五星好评。