从数据到价值:通过一个实际应用案例来理解数据管理[完整书籍]
如今,数据已成为一种极其宝贵的资源。它使企业能够在市场中展开竞争,并推动创新,从而提升所提供产品与服务的质量。 数据处理能让团队自动化各种流程。它还能辅助决策制定,为终端用户带来更加个性化的体验,在诸如银行欺诈防范或风险控制等诸多领域帮助人们发现其中的规律。企业必须明白如何以有效、安全且合法的方式收集和利用数据。 你很可能目前正在使用或曾经使用过各种各样的产品与服务。你也知道,那些涉及数据的流程几乎与我们身边的所有事物都息息相关。此外,你或许已经熟悉“大数据”、“数据分析”、“人工智能”以及“机器学习”这些术语了。 但除非你是这些领域中的专家,否则其中一些概念可能会让你感到难以理解。毕竟,这些
如今,数据已成为一种极其宝贵的资源。它使企业能够在市场中展开竞争,并推动创新,从而提升所提供产品与服务的质量。
数据处理能让团队自动化各种流程。它还能辅助决策制定,为终端用户带来更加个性化的体验,在诸如银行欺诈防范或风险控制等诸多领域帮助人们发现其中的规律。企业必须明白如何以有效、安全且合法的方式收集和利用数据。
你很可能目前正在使用或曾经使用过各种各样的产品与服务。你也知道,那些涉及数据的流程几乎与我们身边的所有事物都息息相关。此外,你或许已经熟悉“大数据”、“数据分析”、“人工智能”以及“机器学习”这些术语了。
但除非你是这些领域中的专家,否则其中一些概念可能会让你感到难以理解。毕竟,这些都是范围极其广泛的学科领域。
即便你接受过其中某个领域的专业培训,也很难掌握每个领域的所有细节,因为数据领域的知识体系实在太过庞大。
要想更好地理解这个数据世界,一个可行的方法就是将其划分为人工智能与数据管理这两个部分。虽然这不是唯一的分类方式,但我发现将信息处理相关的各种技术和方法分为这两类确实很有帮助。
一方面是数据管理,它涵盖了与数据的采集、存储、保护及分析相关的所有内容。
另一方面则是人工智能,它的重点在于开发能够让机器模拟人类能力的技术——无论是进行推理还是学习解决问题的方法,无论这些过程是否涉及对数据的处理。
在这里,“交互”指的是算法从数据中获取“知识”,但并非所有人工智能功能都属于这一范畴。
总之,这本书全面介绍了数据管理的相关内容,帮助你理解与数据的使用、处理及分析相关的所有术语和概念。
它不会只是抽象地解释这些领域及其内涵,而是会帮助你从整体上把握它们,并提供更为实用且现实的视角。我们还会通过具体的案例来实践书中讨论的所有内容。
目录
我们的案例研究
在我们的案例中,我们假设有一所提供人工智能与数据管理领域国际硕士课程的虚构大学。这所大学是公私合营性质的机构,为不同类型的用户提供各种培训项目,比如希望专攻这些领域的应届毕业生、在职专业人士或国际学生。
通过这个案例,我们可以分析从学生入学到毕业整个数据生命周期的过程。在大学环境中,我们可以利用数据与人工智能技术来自动化注册流程,提升学生获取教育资源时的体验,优化学校运营管理,从而帮助这所大学在提供类似课程的其他机构中脱颖而出。
数据生命周期实际上在学生开始硕士学习之前就已经开始了——候选人可能通过广告活动了解到这个项目,访问学校的网站,或者填写申请表。之后他们可以注册入学,利用数字平台参加各类教学活动,最终完成学业并成为校友群体的一员。
这些互动过程会生成不同类型的数据,包括个人信息、学术记录、行政数据以及财务信息。还有一些更为复杂的数据类型,比如学生的活动轨迹和数字化行为数据,这些数据可能包含他们访问虚拟校园的记录或查阅过的资源信息等等。
通过这个案例,我们可以清楚地看到数据是如何经历各个处理阶段的:数据的采集、验证、存储、与其他系统的整合、保护、分析,最终根据学校的政策被保留或删除。
正如大家所了解的,数据管理并不仅仅是将数据存储在数据库中而已。更重要的是要确保在整个数据生命周期内,这些数据都是准确、安全的、易于理解的,能够被需要使用它们的人获取,并且被合法地利用。
此外,像其他任何组织一样,这所大学也会利用数据来了解用户的需求或面临的问题,从而提出相应的解决方案。以通勤问题为例,有些硕士生住得离校园很远,有些人还需要工作,而另一些人的公共交通条件可能不佳。在这种情况下,距离或通勤时间就会成为这些学生需要考虑的重要因素。
面对这样的问题,学校可以利用数据和人工智能技术来为有需求的同学提供合适的交通服务。例如,根据学生与校园的距离或者是否需要参加面授课程等标准,学校可以为某些学生提供免费的出租车/网约车服务。
不过,我们提供的这些服务并不是无限制的——而是要基于明确的商业规则,设计出一种可控、可衡量且可持续的福利机制。
有效处理这些数据将使该大学能够提供比其他竞争对手更精确的服务。那些竞争对手可能只会提供普通的公共交通优惠或固定的公交线路。虽然这些措施可能非常有用,但它们并不总能满足所有学生的需求。
在这种情况下,很明显会生成各种各样的数据,包括关于学生、教职员工、课程、时间安排、出勤记录、出行情况等方面的信息。通过使用和分析这些数据,我们能够掌握许多数据管理的原则。同时,我们还将了解如何构建数据流程、如何将数据转化为有用的分析结果,以及其中涉及哪些技术。
为了让这些概念在实践中更容易理解,本书附带了一份实践型Jupyter笔记本。该笔记本使用了一小部分真实的出租车出行数据,并将这些数据视为该大学交通服务的数据来源。
书中讨论的一些示例在笔记本中也使用了相同的数据集进行了重现,因此当你阅读不同章节时,就可以看到这些概念在实际应用中的效果,包括数据分析、质量规则、数据集成与转换、隐私保护、维度建模、SQL分析以及数据可视化等内容。这个笔记本只是一个重点演示,并非对书中提到的所有功能进行完整实现。
你还将了解到该大学如何利用人工智能来预测哪些候选人最有可能入学、推荐适合他们的硕士课程、估算未来对交通服务的需求、检测出租车使用中的异常模式,以及创建对话式助手来帮助候选人和学生解决他们遇到的问题。
这个案例研究还会强调该大学在隐私保护、知情同意、透明度以及安全性等方面需要做出的决策。例如,个人数据必须得到妥善保护,资格审核标准不应存在不公平的歧视行为,而对于那些可能对候选人或学生产生重大影响的决策,就必须有人进行监督。
数据管理基础
数据管理是一门负责在整个数据生命周期内对其进行捕获、存储、保护、整合、理解、维护以及正确使用的学科。乍一看,数据管理和处理似乎只涉及存储环节,或许后来才会涉及到分析阶段,但实际上事实远非如此。
实际上还有许多其他要求,比如安全性(因为如果安全性遭到破坏,那么快速处理大量信息也就毫无意义了),以及数据的完整性与组织结构等方面也都需要加以考虑。
在为本书进行研究的过程中,我阅读了非常有用的一本参考书:《数据管理知识体系》。这是目前关于数据管理领域最全面、最权威的指南之一。如果你想更深入地了解这个领域,我强烈推荐你阅读这本书。
根据这本书的说法,数据管理涉及制定、执行并监督各种计划、政策、程序和实践措施,这些措施能够确保在数据及信息资产的整个生命周期内,其价值得到有效传递、控制、保护以及提升。
这一定义尤为重要,因为它突出了两个基本观点:其一,数据本身具有内在价值,因此可以被视为一种资产;其二,这种价值并非在所有情况下都会直接显现出来,而是取决于数据是如何被管理的。
换句话说,单纯的数据本身并没有价值,但只有经过恰当的处理,它才能转化为可用的信息,进而成为真正的知识。
为了实现这一目标,可以将数据管理视为一组操作性能力,也就是说,一个团队或组织必须针对自身所掌握的数据采取一系列具体的行动。
其中最为基础的能力包括以下几点:
数据治理:确定谁有权访问某条数据,以及由谁来制定相应的访问规则。
- 例子:大学教职员工可能可以访问与自己所教授课程相关的学生信息,但无权访问整个机构内所有学生的资料。
数据架构:设计数据在其生命周期内应遵循的处理流程。
- 例子:数据架构师会规定用户将数据输入系统后的处理路径——比如在填写注册表格时,数据会被存储到哪里,以及之后如何在大学服务器上被进行处理。
数据存储与运营:决定数据应如何存储以及存储在何处。
- 例子:可能会选择将学生的个人信息存储在内部数据库中,而不是外部云服务中;而像教学材料这样的数据,则更有可能被存放在云端,不过最终还是取决于该组织的政策规定。
数据集成:从不同来源收集信息,以便能够统一地查看或使用这些信息。
- 例子:数据工程师会整合来自不同公司的出租车路线信息,因为每家公司的数据格式可能都不相同,因此有必要将这些数据标准化到统一的格式中。
数据质量:确保信息的准确性、完整性、一致性、时效性以及可靠性。
- 例子:质量分析人员会制定规则,要求虚拟校园系统的前端界面必须遵循这些规则,从而防止最终用户向系统中输入错误的数据,保证信息的质量。同时,他们还会对存储这些信息的各种内部系统制定相应的规则,以避免数据出现不一致的情况。
数据安全与隐私:保护信息免受未经授权的访问及其他威胁。
元数据管理:专门负责管理那些能够解释其他数据含义的元数据。
- 例子:会创建一份词汇表,其中列出了所有数据中出现的概念及其具体含义。例如,“距离校园的距离(以米为单位)”这个概念,在词汇表中被明确界定后,就可以在存储系统和数据处理过程中被正确地使用,从而提高工作效率。
分析技术与商业智能:将数据转化为报告和可视化图表,帮助组织做出战略决策。
- 例子:数据分析师为管理层制作了一个交互式仪表盘,其中展示了每月的出租车费用、受益于这项服务的学生人数,以及这项服务如何提高了学生的出勤率等信息。
如您所见,数据管理并不是一项具体的活动,而是一系列不同任务和流程的集合。当这些任务和流程得到协调配合时,它们就能帮助将数据转化为战略价值。
在大学的应用场景中,保护申请者和学生的个人数据显然是至关重要的。此外,为了顺利推行免费出租车服务,来自不同交通公司的数据源必须得到有效整合,并且质量必须达标。
数据作为一种资产
数据可以被定义为对某种定量或定性属性或变量的符号化表示。换句话说,数据是对环境中发生的事实、观察结果、事件或特征的记录,这些记录随后可以被存储和处理。
这种对数据的定义更多地涉及其类型,比如数字、日期、文本或图像等。在我们的应用场景中,数据可能包括学生的姓名、地址,或者他们住所到校园的距离等信息。单独来看,这些信息都只是简单的记录,但当把它们放在特定的背景中进行分析时,它们就有可能成为有价值的资产。
例如,“18公里”这一孤立的数据本身并没有太大意义,但如果将其理解为“距离校园的距离”,那么它就能帮助我们了解学生的情况并据此做出决策。
在这种意义上,资产是指任何有望在未来带来收益的资源,比如建筑物、专利或其他有价值的要素。在这里,我们也将数据纳入资产的范畴,因为数据同样具有在组织内部创造价值的潜力。
不过,这并不意味着所有的数据都是资产。有些数据可能是错误的、重复的或不完整的,因此它们的价值主要取决于如何被管理。以大学为例,“距离校园的距离”这一数据,只有当它被用于决策过程而非仅仅作为一个孤立的数字存在时,才能真正成为一种资产。
在我们的例子中,结合学生的其他信息以及组织的相关数据,我们就可以判断哪些学生有资格使用这项出租车服务,或者应该为这项服务分配多少预算。
只有当数据的质量足够高时,它们才能真正发挥作为资产的作用,帮助我们做出决策。因为不完整、不一致或错误的数据反而可能对决策过程产生负面影响,甚至无法为决策提供任何参考价值。
归根结底,将数据视为资产意味着要像管理其他资源一样来管理它。这样做的确能够带来诸多好处,无论是提升最终用户的满意度,还是实现成本优化。
数据、信息、知识与价值
从这个概念出发,我们便可以区分数据、信息、知识和价值之间的关系了。接下来,我们将研究数据如何经过逐步转化,最终成为对组织有价值的知识乃至实际收益。
数据
首先,数据是数据管理中最为基本的处理对象,它的主要功能就是用来表示现实世界的某些方面。也就是说,当我们想到数字、文本、日期等内容时,所想象到的其实就是数据。数据具有不同的类型(因为其种类繁多),同时也蕴含着某种基本的含义,这种含义通常被称为“语义”。
- 示例: “18公里”这一数据属于整数类型,其语义表明它代表的是公里的数值。需要注意的是,单纯的数值本身也可以被视为数据,但它的含义使人们能够对其作出解读。
信息
一旦我们提取出了数据,就可以将其与其他信息联系起来、置于特定的背景中进行分析,从而形成更具抽象意义的含义,而这些含义才被称为信息。
- 示例:为了更好地理解这一概念,可以将前面的例子“18公里”与学生的姓名或地址等其他信息结合起来。这样一来,我们就能推断出这名学生居住在距离校园较远的地方。这种结合后的信息就属于真正的信息了,因为它的含义已经超出了单纯数据本身的范畴。
知识
在获得了信息之后,我们可以进一步对其进行分析和解读,从而发现其中的规律、趋势或因果关系。为此,我们需要将这些信息与组织自身的经验或其他类似案例进行结合,进而形成更为抽象的认知。
- 示例:如果某所大学观察到那些居住在距离校园15公里以上且需要参加面授课程的学生缺课情况较为严重,那么它就可以得出结论:距离和上课时间安排确实会影响学生的出勤率。要得出这一结论,就需要掌握学生与校园的距离信息、他们的出勤记录以及课程安排等数据。
价值
最后,我们会运用所获得的知识来做出决策并采取行动,从而产生某种效益——这种效益其实就是从数据中提炼出来的价值。
- 示例:某所大学可以为符合特定条件的学生提供免费出租车服务,这样既能提高学生的出勤率、提升他们的满意度,又不会对预算造成太大影响。在这里,价值就体现在这些决策所带来的实际收益上,而这些收益可能并不容易被量化衡量。
总之,成功的关键并不在于存储大量数据或以高速处理它们,而在于通过一系列转化过程将这些数据转化为真正的价值。这一过程需要具备相应的基础设施,同时也需要那些能够运用适当的数据管理技术的人才来推动这一进程的进行。
数据的生命周期
现在让我们来看看数据会经历哪些阶段。数据的生命周期始于组织发现其需求之时,终于这些数据不再具有使用价值之时。在这段时间里,相关团队会负责收集、存储、维护、使用这些数据,最终决定是保留它们还是删除它们。数据的生命周期描述了那些确保这一整个过程得以有序进行的各种环节。

如图所示,数据生命周期的起点是业务需求,而非技术选择。由于数据属于组织的资产,因此每个阶段都应致力于保护这些数据、维护其价值,或将其转化为实际效用。
该生命周期包含以下几个阶段(如上图所示):
规划阶段:组织首先明确自己需要哪些数据、为何需要这些数据、谁将负责管理这些数据,以及如何利用它们创造价值。在开始收集数据之前,团队必须确定哪些数据是真正必要的,以及他们计划如何使用这些数据。
- 示例:某大学认为有必要了解学生住所与校园之间的距离,以便决定是否提供免费接送服务。这一决策的必要性在于它能帮助学校做出相应的安排。
设计与实施阶段:一旦需求明确,团队就会设计相应的基础设施、数据流处理机制及管理政策来支持数据的收集与使用。这项工作需要运用数据架构、建模、安全防护、质量控制以及治理等相关技术,我们后续会详细讨论这些内容。
- 示例:该大学规定,学生地址信息将用于计算其到校园的距离,相关数据将存储在特定系统中,只有指定部门才能访问这些数据;如果学生的地址发生变化,系统也会自动更新相应的数据。
数据采集或获取阶段:在这一阶段,数据首次被纳入组织体系。用户可能通过某种交互行为生成数据,或者组织通过API、交换协议、购买方式或其他途径从外部获取数据。
- 示例:当申请人填写入学申请表格并提供地址信息时,相关数据就被创建出来了;此外,还可以通过地理信息API获取地理位置、距离及通行时间等外部数据。
存储与维护阶段:数据被收集后,必须将其存储在合适的环境中,并确保其能够被后续使用。团队可以将数据存储在数据库、数据仓库、数据湖或其他系统中,然后根据需要对数据进行清洗、整合、更新、记录或保护。
- 示例:学生的姓名信息会存储在大学的服务器数据库中,而计算得出的到校园的距离则可以保存在基于云技术的分析数据库中。此外,还会制定规则来避免数据重复、不完整或格式不一致的情况,从而确保数据质量。
使用阶段:组织会按照规划时确定的目的来使用这些数据。它们可能会查询或分析数据,生成报告或仪表盘,或者利用数据来训练人工智能模型。
- 示例:该大学运用IP地址、响应时间以及虚拟校园内的活动记录,通过预测性机器学习算法来检测可能表明欺诈行为的异常行为。这种做法有助于发现身份盗用问题、解决安全隐患,并预防在线教育活动中的欺诈行为。
数据优化阶段:在这一阶段,团队会整合不同来源的数据,为其添加更多背景信息,从而揭示之前难以发现的规律或趋势。正是通过这一过程,数据才能真正转化为信息和知识。
- 示例:学生的虚拟校园访问记录可以结合他们使用在线资源的时间、下载材料的数量、互动次数以及历史统计数据等来进行优化分析。这样,大学就能更全面地了解学生的学习情况及其与学业成绩之间的关系,而不会简单地认为数字活动就能完全解释学生的表现。
数据处置阶段:当数据不再适用于最初的用途时,组织需要决定是保留这些数据、将其归档、进行匿名处理还是直接删除。这一决策会受到保留政策、业务需求以及法律规定的影响。通过妥善处置数据,组织可以避免积累不必要的信息,从而降低成本,并防止敏感数据的泄露带来风险。
- 示例:当学生完成硕士学业后,大学出于法律或行政方面的原因,可能需要保留他们的成绩等学术记录。而一些银行账户信息或交易数据,在财务和法律义务结束后,可能就不再需要保留了。因此,保留政策必须明确指定哪些字段应该被保留、如何安全地删除数据,或者如何在经过授权的情况下对数据进行匿名处理,而不是无限期地保存所有原始数据。
尽管这些阶段是按顺序出现的,但实际上数据很少只会依次经历它们。团队可能会对数据进行多次处理,或者将其与新的数据源整合起来,比如公共API或合作伙伴的系统。可以将这个生命周期视为一个持续的过程,当需求发生变化时,这些阶段可以重复进行。这样的做法有助于确保数据管理的一致性、安全性以及实用性。
数据管理原则
现在你们已经了解了数据管理的生命周期,就可以运用一些关键原则来指导每个阶段的决策了。这些原则为团队提供了统一的参考标准,避免了各个系统或部门各自为政地管理数据的情况。
第一个基本原则就是将数据视为一种资产。由此又引出了另一个相关原则:数据的价值取决于其质量及其所处的环境。错误、不完整或被误解的数据可能会导致错误的决策。例如,如果一个学生的名字中存在拼写错误,那么这个名字可能就会与政府数据库中的记录不一致,从而给相关流程带来麻烦。此外,还需要明白的是,数据要想被正确使用,就必须有元数据作为支撑。
正如我之前所说,像“18”这样的孤立数字,如果人们不清楚它代表什么、以什么单位表示、是如何计算出来的,或者是在什么时候更新的,那么它的价值就非常有限。元数据能够记录这些信息,从而避免歧义的产生。
另一个重要的原则是规划的重要性。从生命周期的角度来看,第一步应该是明确哪些数据是被需要的。以学生注册为例,大学不应该收集所有学生的信息,而只应该收集进行必要流程所需的相关资料。
还有一个基本原则是:使用技术必须要有明确的目的。团队在选择数据库或新工具时,不应该仅仅因为它们当前很流行就选择它们,而应该选择那些能解决实际问题的技术。在大学中,是否使用关系型数据库、数据仓库、地理API或仪表盘,都应该根据具体的使用目的来决定。
数据管理能力
这些原则通过一系列的数据管理能力得以具体体现。这些能力说明了一个组织在整个数据生命周期中应该能够对其数据进行哪些操作。
这些原则为数据管理工作提供了方向,而数据治理和数据建模等能力则将这些原则付诸实践。上面的图表展示了我们在后续章节中将要介绍的主要数据管理功能。
有些数据管理角色会涉及多个方面的工作。例如首席数据官,他负责制定组织的数据战略,并确保团队将数据视为一种资产来加以管理。在我们的案例中,首席数据官会帮助设定利用数据来实现的具体目标,比如提高出勤率、优化注册流程或提升学生满意度等等。
另一个相关的角色是数据管理员,他们的职责是帮助维护某个领域内数据的定义、质量以及数据的正确处理方式。在大学中,他们可能需要核实学生位置信息和注册数据的完整性与一致性。每当数据的使用会影响到隐私问题时,首席隐私官也可能需要参与其中。
数据治理
让我们先来了解一下数据治理。数据治理定义了一个组织如何就数据相关事宜做出决策,谁可以访问或修改这些数据,以及每种角色应承担哪些责任。数据治理还有助于帮助组织履行其法律和监管义务。
在大学环境中,这一点尤为重要:招生人员、学术办公室、教职员工,甚至人工智能系统都可能使用学生数据。如果没有明确的规则,有些人可能会获得不当的访问权限,或者在没有充分依据的情况下做出决策。
并不是所有人都应该能够对所有数据执行所有的操作。数据治理为整个数据生命周期提供了组织层面的管控机制,从而确保人们能够以有序、安全且合法的方式使用数据。
各组织通常会指派首席数据官或数据所有者等角色来负责这项工作。数据所有者通常属于某个业务部门,他们有权对自己职责范围内的数据相关事宜做出重要决策。
例如,一所大学的交通服务负责人就是与该大学提供的交通服务相关的所有数据的数据所有者。此外,还可能有其他数据所有者,比如负责所有账单和学费支付信息的财务负责人。
治理工具能够帮助团队控制、记录并审查数据的使用情况。它们的主要用途并非进行编程或技术处理。
首席数据官或数据所有者可能会使用数据目录和业务术语表来了解现有数据的种类及其含义。他们还可能利用政策管理平台、仪表盘以及追踪数据从来源到最终去向的工具来进行相关工作。
数据所有权
关键的数据治理概念之一是数据所有权,它明确了不同数据领域应由谁来负责管理。所谓“数据所有权”,并不意味着某个人真正拥有这些数据,而是指这个人拥有对此数据做出决策的权力和相应的责任。
在这里,主要角色就是数据所有者。通常来说,数据所有者是业务领域的领导者,他们负责制定与该领域数据相关的生命周期管理策略和使用规范,而不是那些仅仅使用数据的普通用户。
例如,大学可能需要学生的地址来计算他们到校区的距离。但该数据的所有者应当决定教师是否可以访问这些地址,或者是否应该将这些信息共享给外部交通服务公司等其他相关方。
数据所有者通常并不负责实施具体的技术解决方案。相反,他们会使用诸如数据目录这样的工具来查找并了解自己所管理的各类数据资源。数据目录通过元数据对这些数据资源进行整理,从而便于对其实施管理。
数据治理
数据所有者为某个数据领域制定发展方向,而数据管理员则负责该领域的日常管理工作。数据治理包括维护各项数据的定义、监控数据质量,以及确保数据信息的准确性、完整性,并使其按照既定的标准进行处理。
在实际操作中,数据管理员会重点核实学生的日期和地址是否采用有效且统一的格式,确认他们的姓名是否完整、没有无法识别的字符,以及其他是否存在问题。此外,这一角色还会重视元数据的作用,因为元数据能够帮助人们正确解读数据,从而避免其他团队成员在处理数据时出现误解或冲突。
数据管理员经常会使用数据目录以及业务术语表。业务术语表能够标准化组织内部的各种关键术语。例如,它可能会将“到校区的距离”定义为沿公共道路行驶的实际距离,而不是直线距离。
决策权
另一个重要的治理概念是决策权:即明确在特定情况下,谁有权对哪些数据相关事务做出决定。
决策权是治理体系的基础组成部分。各类组织通常会根据决策的范围对其进行分类。例如,战略决策通常由最高管理层来作出,比如大学是否决定利用学生的出行数据来提供交通服务;而战术决策则用于协调组织的整体战略与日常运营活动,比如确定享受交通服务的申请者的资格标准;最后,操作决策直接关系到最终用户的利益,比如是否接受某人的入学申请。
决策权会正式规定哪些角色或数据领域拥有相应的决策权。数据所有者和数据治理委员会在此过程中扮演着至关重要的角色,其中数据治理委员会通常会制定整体的决策框架。
数据保护官可以就某些决策提供意见,当某些访问行为可能违反数据保护法规时,他们还可以向上级反映这些问题。数据保护官的具体权限取决于相关法律法规以及该组织的治理模式。各团队通常会通过工作流程工具以及身份与访问管理系统来落实这些决策权,从而确保数字身份和权限得到妥善管理。
例如,大学管理员不应被赋予无限制的数据库访问权限。他们可以通过像Jira这样的工作流工具提交请求,以申请特定的权限。相应的数据负责人会审核这些请求,而像Microsoft Entra ID这样的身份认证系统则会根据审核结果,为经过验证的管理员身份授予相应的访问权限。
数据政策
虽然“决策权”规定了谁有权做出某项决定,但数据政策则明确了人们应该如何管理和使用数据。这些政策设定了所有人都必须遵守的限制、原则与义务。
在大学中,可能会有一条规定指出:用户的地理位置数据只能用于判断其是否具备使用交通服务的资格,而不能被用于与学术活动无关的其他决策。这就是与隐私保护、数据保留或数据在人工智能模型中的使用相关的政策示例。
数据治理委员会通常会正式制定这些政策,首席数据官负责推动其实施,而数据管理员则会协助各个团队执行这些政策。数据目录可以用来公布这些规则,并将其与相关的数据资产关联起来;同时,技术系统也会确保这些控制措施得到有效执行。
数据标准
数据标准比普通的政策更为具体。例如,某个标准可能会规定数据的存储格式、命名规则或验证方式,从而确保整个组织内的团队能够一致地遵循这些规定。
比如,大学可以规定所有日期都必须按照ISO-8601格式进行存储,或者校园距离必须以米为单位来表示。在计算机科学领域,一个著名的例子就是十进制数的存储方式:IEEE-754标准被广泛用于二进制数表示中。
共同遵循的标准能够使各种系统在交换数据时减少不必要的转换操作。数据架构师和数据建模师会协助选择并制定这些标准,而数据工程师则会在实际开发过程中落实这些标准。数据负责人和管理员也会监督这些标准在各个业务领域中的执行情况。
数据责任机制
数据责任机制意味着那些拥有数据管理权限的人必须对数据的使用方式负责。各团队需要建立足够的监控机制和证据记录,以便追踪重要的操作过程,并了解各项活动随时间的发展变化。
如果出现问题,组织应该能够迅速查明是谁访问了这些数据、在什么时间访问的、具体做了哪些操作,以及这些操作是否符合相关政策规定。完备的证据记录、可追溯性以及明确的责任划分,都是确保数据治理工作得以有效实施的关键因素。
在大学中,教职员工可能有正当理由需要查看部分学生的个人信息,但系统仍应适当记录这些访问行为。如果之后出现了隐私方面的问题,审计记录就能帮助调查人员了解事情的来龙去脉。
数据所有者有责任确保在指定范围内合理使用数据,而安全、合规性以及平台相关团队则会提供访问日志、审计追踪等功能来实施相应的管控措施。
数据伦理
仅仅依靠治理机制是不够的。一个组织还需要思考:某种数据的使用方式是否公平、合理且具有正当性。这时,数据伦理就发挥了重要作用。
在数据处理的背景下,伦理原则要求在整个数据处理生命周期中遵循透明度、责任性、隐私保护以及非歧视等准则。当涉及个人敏感数据时,这些原则尤为重要,因为不当的决定可能会限制人们的机会或剥夺他们的服务权利。
例如,在大学招生过程中,对数据的处理方式可能会以多种形式引发歧视性偏见,其中一些偏见可能并不为人所知或出乎意料。其中较为常见的偏见包括基于收入、种族或残疾状况的歧视。
数据本身可以通过多种途径导致这类偏见的产生,因此我们在收集或使用数据之前,就必须充分考虑伦理因素,并思考这些数据使用方式可能会带来哪些偏见。
道德的数据使用
道德的数据使用首先需要有一个明确、合法且合理的用途。一个组织应当清楚自己为何需要每一份数据,预期从这些数据中获得什么价值,以及所提议的数据使用方式会带来哪些风险。
像《通用数据保护条例》这样的法律确立了某些与伦理原则相重叠的法律要求,但遵守法律规定与做出道德判断并不完全是一回事。《通用数据保护条例》主要适用于欧洲地区,各组织必须明确自己在其业务运营的每个区域需要遵守的具体法规。
一个不道德的数据使用案例是:在未经应聘者明确同意的情况下,将其填写在表格中的个人数据出售给营销公司。由此可见,个人数据既可以被用来优化服务或做出决策,也可以在未经用户许可的情况下被用于与其利益无关的其他目的。
参与道德数据使用的角色可能包括首席数据官、数据保护官、首席数据伦理官或伦理委员会成员,以及数据管理员。他们的具体职责因组织而异。同意管理平台可以记录并管理用户授予的权限,但用户的同意仅仅是数据处理的一种合法依据,也是伦理审查的一个组成部分而已。
同意与透明度
同意与透明度是两条重要的原则。用户应当能够清楚地了解哪些数据会被收集、为何需要收集这些数据、这些数据会被保存多久、谁可以访问这些数据,以及这些数据是否会被共享。这些说明应该使用通俗易懂的语言来表达,以便非专业人士也能理解。在大学招生过程中,当候选人提交申请时,表格不应仅仅要求提供信息并确认相关条款,而应说明为何需要收集每一项数据。凡有可能的情况下,都应清楚地说明这些数据将如何被使用,以及是否会与第三方共享。
即使用户提交了表格,透明度也并未结束。人们还应能够了解自己的权利,并在适用法律允许的情况下,利用相应的程序来要求获取相关信息或进行数据更正。
公平与非歧视
公平性旨在防止在数据使用过程中出现歧视行为或有害的偏见。这一点在人工智能系统中尤为重要,因为复杂的模型和历史数据往往会使偏见难以被察觉或解释。
例如,某所大学可能会决定根据候选人的邮政编码或居住地区来发放奖学金。乍看之下,这种做法似乎并无不妥,但实际上,收入水平或学术成绩截然不同的人也可能住在同一个邮政编码范围内,因此排除某些地区可能会导致符合条件的申请人失去获得奖学金的机会。
数据伦理要求相关团队重新审视自己的决策标准。在实际操作中,他们需要分析其中可能存在的偏见,审查敏感变量及其替代指标,验证数据的质量和代表性,并长期监测各项决策的实际效果。对于那些影响重大的决策,组织还应当提供适当的人为监督机制,以便在发现错误时能够及时予以纠正。
负责任的数据共享
由于许多组织无法独自完成所有服务内容,因此它们常常需要与服务提供商共享部分数据。
数据进行共享会增加风险,因此必须有适当的法律依据。这种依据并不总是基于用户的同意。例如,大学可能需要与出租车/网约车公司共享有限的数据以提供相关服务,但该公司不应获得学生的完整个人信息。
只要条件允许,组织应优先分享匿名数据或假名化数据,而非直接的身份识别信息。经过适当处理后的匿名数据已无法通过合理的方式与特定个人建立关联。假名化技术是用代码或参考信息来替代原始身份标识符,但经授权的机构仍可以利用其他单独保存的信息将这些数据重新与个人对应起来,从而确保数据的隐私性得到保护。
伦理风险管理
支持数据合规使用的有效方法之一就是在新的数据使用方式开始之前,先对其可能带来的风险进行评估和管理。评估时应同时考虑预期收益以及可能出现的危害、偏见、隐私影响以及对不同群体的影响。
以招生申请表为例,在添加用于收集性别、收入等个人信息的字段之前,伦理委员会必须先评估这些信息的实际用途,分析收集这些数据可能给学生带来的问题,以及是否会导致歧视行为的发生。
数据伦理有助于大学在提供服务的同时,始终牢记这些数据代表着真实的个体。
数据安全与隐私
到目前为止,我们已经探讨了那些影响数据使用方式的规则与伦理考量。同时,我们也必须在整个数据生命周期中对其进行保护。安全与隐私虽然相互关联,但它们解决的是不同的问题。
数据安全通过政策、流程及控制措施来防止未经授权的访问、篡改、泄露或丢失。而隐私则关注个人数据是否被收集并用于合法目的,同时要求在处理这些数据时保持适当的透明度并尊重人们的权利。
安全措施通常旨在保障数据的保密性、完整性与可用性。只有经过授权的人员才能访问或修改数据,并且这些数据必须在需要时能够被及时获取。然而,仅仅具备这些特性并不能确保隐私得到保护。例如,一个地址虽然得到了严密的保护,但如果被用于未经授权的目的,仍然会侵犯人们的隐私。
因此,大学必须同时重视安全与隐私问题。它所处理的个人数据,一旦被泄露或被滥用,就可能会对学生造成实质性的伤害。
通常由首席信息安全官负责制定安全策略,并协调各项技术防护措施。安全团队会利用身份与访问管理平台等工具,来集中管理用户的身份认证信息及权限设置。
在隐私保护方面,前面提到的首席隐私官则会协助监督组织的隐私保护计划及其合规义务履行情况。
数据分类
在这里我们不会详细介绍所有的安全措施,但一个有用的起点是明确现有数据的种类,并根据其敏感程度对其进行分类。
不同类型的数据在一旦被泄露后,可能会造成不同程度的危害。一种常见的分类标准是将数据分为公开信息、内部使用数据、机密数据以及受限数据这几类。
公开信息任何人都可以访问;内部使用数据则是为组织内部成员准备的,即使被泄露也不会造成特别严重的后果;而机密数据则需要经过授权才能被访问,受限数据则需要最高级别的保护措施。
以大学为例,网站上发布的日程安排属于公开信息,教师的工作流程可能属于内部使用数据;学生的学业记录或旅行历史可能是机密数据,而银行账户信息或身份凭证则属于受限数据。
当一个数据集包含多个类别时,组织应根据这些数据的整体风险对其进行分类并采取相应的保护措施;这种风险可能等于或高于其中最敏感字段所带来的风险。
组织应将这种分类信息作为元数据记录在数据目录中,这样各个团队在整个数据生命周期内都能使用这些信息。当数据工程师整合数据源时,或者分析师创建数据看板时,他们就能知道应采取哪些预防措施。数据管理员通常会协助进行数据分类工作,数据所有者则会审批相关的业务决策,而安全与隐私团队则负责制定必要的控制措施。
身份与访问管理
一旦数据完成了分类,组织就必须控制哪些人可以访问这些数据。身份与访问管理涉及用于管理数字身份以及授予、审核或撤销权限的各种流程和技术。身份验证用于确认用户的身份,而授权则决定该用户可以被允许执行哪些操作。
指导数据访问管理的根本原则是“最小权限原则”——即每个用户只被授予完成其工作所必需的权限。
例如,教师可以查看自己所教授课程中学生的联系方式,但不应该能够访问未注册学生的信息。换句话说,他们拥有的权限仅限于履行自身职责所需的最小范围。
至于负责这些任务的专业人员,数据所有者会决定哪些角色需要访问其负责的数据,而身份与访问管理管理员则会使用微软Entra ID这样的工具来实施这些角色及其权限设置。这类工具能够集中管理身份信息、用户组以及访问策略。
加密技术
尽管访问控制措施可以起到保护作用,但仍然存在失效的可能性,因此组织还会使用加密技术。数据加密会将可读信息转化为密文,只有拥有正确密钥的授权系统才能解密这些密文。
| 原始数据 | 采用的加密方式 | 。加密后的结果 |
|---|---|---|
camille.bernard@email.com |
AES-256加密 | 8A4F2C91B7E03D6A... |
ES12 3456 7890 1234 |
AES-256加密 | D91B70E4A62C8F15... |
Password123! |
使用Argon2id进行加盐哈希处理 | $argon2id$v=19$m=65536,t=3,p=4$... |
常见的加密方法包括对称加密和非对称加密,这两种方式都依赖于完善的密钥管理机制。密钥不应被嵌入到源代码中,也不应未经保护地存储在需要被保护的数据旁边。密钥管理系统(KMS)或硬件安全模块(HSM)可以帮助生成、保护、轮换密钥,并控制对它们的访问权限。
安全架构师和安全专家会协助选择经过验证的加密标准、协议和密钥管理方案,而数据工程师及其他开发人员则会在各个系统中应用这些方案。需要注意的是,加密并不能解决所有安全问题,因此团队通常会将加密技术与访问控制、监控机制、安全的开发流程以及使用政策结合起来,以提升系统的安全性。
数据脱敏
在许多场景中,并不需要完全暴露数据的真实内容。数据脱敏可以通过对数据进行部分处理或隐藏某些信息,从而降低数据泄露的风险,同时仍能保证数据在特定用途下的有效性。
数据脱敏主要分为两种形式:动态数据脱敏会在不影响原始数据存储状态的情况下,部分隐藏呈现给用户的数据。这样,只有具有相应权限的人才能看到完整的数据内容,而权限较低的用户看到的则只是经过处理后的简化版本,例如**1234这样的格式。
另一方面,持久性数据脱敏会生成一份经过永久性处理的副本,这样在测试系统时就不需要使用真实数据了。
举个例子,如果虚拟校园系统的开发人员需要测试该系统能否同时处理成千上万的学生、课程和旅行信息,他们完全可以使用虚构的数据来进行测试。例如,可以用假日期、假姓名等替代真实的资料。
为了更好地理解数据脱敏的用途,下面是一些具体的应用案例:
| 原始数据 | 采用的脱敏技术 | >处理后的结果 | >使用目的 |
|---|---|---|---|
学生的银行账户号码:ES12 3456 7890 1234 |
动态数据脱敏 | ES** **** **** 1234 |
在不显示完整信息的情况下验证账户 |
学生的电子邮件地址:lucia.garcia@email.com |
部分数据脱敏 | l***@email.com |
确认学生身份而不泄露完整邮箱地址 |
学生的全名:Lucía García |
永久性替换脱敏 | Student_1048 |
使用假身份信息测试系统功能 |
学生的家庭住址:Calle Mayor 24, Madrid |
通用化处理 | Madrid |
在不了解具体地址的情况下分析居住区域 |
学生的出生日期:18/04/2001 |
年龄范围概括 | 20–25岁 |
不透露具体出生日期即可分析年龄段 |
学生的内部识别编号:STU-45821 |
假名化处理 | 9F3A-71BC |
在不共享学生真实身份信息的情况下管理相关事务 |
在某些实现方式中,数据屏蔽、假名化以及匿名化这些技术之间存在重叠,但它们并不能相互替代。仅进行数据屏蔽并不能确保数据集已经实现了匿名化。假名化是指用代码替换标识符,同时仍保留将这些代码与具体个人关联起来的所需信息。由于仍然存在重新识别的可能性,因此经过假名化处理的数据依然属于个人信息,也需要得到保护。而匿名化则要求将识别风险降低到人们无法通过合理可行的手段来识别这些数据的程度。
在这种情况下,数据管理员会决定哪些数据需要被隐藏以及隐藏的原因,而安全团队和数据工程团队>则会负责在技术层面落实这些决策。
隐私保护措施
上述技术有助于防止未经授权的访问,而隐私保护措施>则关注另一个问题:该组织是否具有处理个人数据的合法目的,并且是否制定了相应的规则。
“设计之初就考虑隐私保护”以及“默认设置即为隐私保护”这些原则意味着,从系统设计的最初阶段就开始将隐私保护纳入考量范围,并设定一些能够保障隐私的默认设置。其中一项基本的控制措施就是数据最小化,即只收集实现既定目的所必需的数据。例如,除非有特定的服务需求或法律依据,否则注册表单不应要求用户提供完整的医疗历史记录。
其他隐私保护措施还与数据的使用目的及其保留期限有关。因此,在实际应用中,学生的个人数据不应被过度保留,也不应未经授权就被用于个性化营销等活动。
在欧洲,《通用数据保护条例》为这些隐私保护措施制定了相应的原则和要求。各组织还必须明确自己在各个运营地区需要遵守的具体规则。当这一职责由数据保护官来承担时,他们会负责监督并确保各项规定得到遵守;而数据所有者、隐私专家、安全团队以及系统设计人员则会将这些要求转化为具体的操作措施。
审计与合规性管理
各组织必须能够证明自己所采取的控制措施和政策是有效的。审计是对现有证据进行独立审查,以确认各项控制措施是否按预期发挥作用;合规性管理>则涉及持续遵守内部政策、标准、合同要求以及相关法规的过程。
日志记录是审计的重要依据。它们能够记录谁在什么时间通过哪个系统访问了哪些数据,以及他们具体进行了哪些操作。各团队会采取措施防止这些日志被篡改,并根据风险程度、法律要求及成本因素,确定这些日志的保留期限。安全信息与事件管理平台则可以整合来自不同系统的事件信息,并在发现异常行为时发出警报。
例如,如果一位教师偶尔查看自己所授课学生的记录,这种行为可能是合理的。但如果是他们在夜间从另一个国家下载数百名与自己毫无关联的学生的记录,那么就应该触发警报,由安全团队对此事进行调查。
审计工作可能会分析日志文件,检查某些账户是否拥有过高的权限,并审查各团队在数据加密及其他安全控制方面的执行情况。独立的审核人员以及职责分离机制能够有效防止同一位管理员同时掌控系统和用于评估其行为的证据。
涉及的相关角色包括CISO、DPO、数据所有者、数据管理员,以及合规性和审计团队。总之,保障数据安全与隐私意味着要明确哪些数据存在,限制哪些人可以使用这些数据,通过各种控制措施来保护数据,并保留能够证明所有这些规定都得到正确执行的证据。
安全运营
数据安全是一项需要持续努力的工作。除了制定政策和使用加密技术之外,安全运营还结合了人员、流程和技术手段,以实现持续性的防护。
安全运营团队会监控系统运行状况,检测潜在威胁,调查各类警报,并对发生的事件作出响应。他们致力于在风险尚未造成实际损害之前就将其消除,同时也要为那些不可避免的事件做好应对准备,以便能够及时控制事态并恢复系统的正常运行。
在大学环境中,安全运营团队负责实时监督整个数字化生态系统。例如,当SIEM系统检测到某位教师在夜间下载了大量学生信息或从事其他可疑活动时,安全运营分析师会收到通知,评估风险后采取相应措施,比如暂时封锁相关访问权限作为预防手段。
安全运营团队还可能协调对虚拟校园及其他系统的漏洞扫描与修复工作,确保在攻击者利用这些漏洞之前将其消除。
在安全运营中,关键角色包括安全运营工程师和安全分析师,他们与CISO合作制定并执行防御策略。这些专业人员依靠SIEM平台来集中处理各类安全事件信息,并借助SOAR(安全编排、自动化与响应)工具来自动应对常见的安全威胁。
数据架构
一旦明确了谁负责数据相关决策以及如何保护数据,接下来还需要对存储、传输和处理数据的系统进行合理的组织与安排。
数据架构旨在设计出能够满足这些需求的系统结构。一旦组织明确了自己希望通过数据实现的目标,数据架构就能说明各种系统将如何存储、传输、保护及分析这些数据。
这种能力将业务目标与技术实现方式紧密联系起来。它不仅仅涉及选择数据库或绘制数据流图:数据架构设计会明确指出组织需要哪些数据、这些数据存放在哪里、它们之间是如何相互关联的,以及数据流动的路径。通过这项工作,可以生成数据模型、流程图、相关标准以及其他架构设计方案。
在实际情况中,例如在候选人注册时,他们可能需要在一个网页表单中填写自己的家庭住址。这些信息随后可以被发送到招生系统,并通过调用地理信息API来计算距离校园的距离;同时,这些数据还可以与其他系统中存在的信息(比如课程安排)结合使用,以判断申请人是否具备申请交通服务的资格。
在这里,数据架构负责设计整个数据处理流程的具体实现方式。
一个设计不佳的数据架构可能会引发多种问题:系统之间可能会错误地交换数据,或者停止通信,从而导致用户无法正常使用相关服务;即使没有出现明显的故障,团队也可能会不必要的重复存储数据,从而增加成本并使系统集成变得更加困难。良好的数据架构能够有效降低这些风险,并明确各种设计方案中的权衡因素。
企业数据架构师负责从整体层面规划数据架构,而数据架构师和解决方案架构师则会根据具体应用场景对这一总体设计进行细化调整。数据建模师、数据工程师、数据管理员以及数据负责人也会参与设计工作,并协助将数据架构方案付诸实践。
简单来说,架构师负责设计并记录整个解决方案的细节,工程师和开发人员则负责将其实现出来,而数据负责人及数据管理员则会明确数据的含义、使用规则及相关责任。
企业数据架构
数据架构的最高层次就是企业数据架构,它从整体角度规定了数据应该如何被组织、连接以及管理。
在大学环境中,企业数据架构能够全面说明各个系统之间应该如何协调运作、各自承担什么功能,以及信息是如何在这些系统之间传递的。
例如,候选人通过网页应用程序完成注册流程后,这些信息必须被正确地传输到招生系统或存储数据的数据库中;同时,这个数据库或系统还需要支持其他用于分析这些数据的内置系统的运行,当然这一切都需要遵循相关的隐私政策。
这项工作的开展由企业数据架构师牵头负责,CDO会协助确保数据架构与组织的数据战略保持一致,此外应用架构师和安全架构师等其他角色也会提供必要的支持。同时,数据负责人还会确认该数据架构确实能够满足他们所在领域的具体需求。
数据领域
数据领域是组织架构中不可或缺的重要组成部分。并非所有数据都用于描述业务的同一方面,因此团队会将相关的概念归类在一起,以便更便于对数据进行整理、理解和管理。
数据领域是指包含相关组织概念和数据的逻辑区域。例如,一所大学可能会为学生、教职员工、财务以及交通出行等方面定义不同的数据领域。通过这种分类方式,数据的含义会变得更加清晰,同时也有助于组织为每个数据领域指定相应的负责人。
此外,各个数据领域并非彼此孤立,因为很多时候,即使数据属于不同的领域,也需要将其放在具体的上下文中来理解。例如,交通服务可能需要来自“交通出行”领域的数据,同时也需要另一个领域中存储的课程安排信息。
每个被纳入管理的数据领域都应配备具有相应决策权的数据负责人。数据架构师会协助确定这些数据领域的边界及它们之间的关联关系,团队可以将这些信息体现在概念模型中,并将其记录在数据目录中。
数据流
一旦明确了各个数据领域及其对应的系统,团队接下来就需要设计数据在这些系统之间流动的路径。数据流记录了数据的来源、涉及的系统和流程、所经历的处理转换过程,以及最终的数据存储或使用位置。
描述数据流时可以从多个层面来进行。高层次的图表可以展示数据在不同领域之间的传输过程;实现细节层面的设计则会详细说明各系统所需的字段、接口及数据处理步骤。
以大学招收新生的流程为例,主要的数据流路径如下:
候选人通过招生门户填写个人信息、学术背景及联系方式等表格。
招生门户会验证所填信息的完整性和数据格式的正确性,随后通过API将申请信息发送到招生系统。
招生系统会为候选人创建档案,并将身份证号、学历证书等相关文件存储在数据库中。
当申请获得批准后,招生系统会生成录取通知,候选人可通过招生门户查看并确认接受该通知。
招生门户会查询学术管理系统,以显示可供选择的课程、课程安排及空缺名额,帮助候选人做出选择并完成注册手续。
支付系统会将交易信息发送到外部支付平台,该平台会返回支付状态(如已授权、被拒绝或待处理)。大学只需保存对该交易的参考记录及其结果即可。
如果支付成功,学术管理系统会完成最终的注册手续,并将候选人的档案转换为正式的学生档案。
随后,系统会更新身份识别平台、虚拟校园系统和计费系统,学生将会收到自己的登录凭证、付款收据以及注册确认信息。
最后,相关数据会被进行匿名处理,然后通过数据传输渠道发送到分析平台。在分析平台上,可以计算出各类与申请、招生、支付及注册相关的统计数据,并将这些结果展示在仪表板上。
某些数据传输操作需要近乎实时的响应,尤其是在交通运输领域;而另一些数据传输则可以批量处理,在稍后的时间完成。数据流设计应明确这些时间要求。
负责设计数据流并确定哪些组件参与其中的主要角色是数据架构师,而数据工程师则负责将这一设计方案付诸实施。此外,安全架构师也会参与其中,他们会审查数据流中的数据保护措施;数据所有者则会授权不同系统之间的数据交换。最后,需要特别强调的是,数据溯源工具对于维护、监控和审计数据流而言具有重要意义。
操作型数据架构
一个数据架构中的各种系统具有不同的功能。区分那些用于处理日常业务流程的系统与那些主要为分析目的而设计的系统是很有必要的。
第一类系统构成了操作型数据架构。这类系统负责保障组织的日常运作正常进行。在线事务处理系统能够处理频繁发生的业务交易,并通过相应的控制机制来确保数据的完整性与一致性。
例如,一所大学的操作型数据架构可能包括虚拟校园系统、各类应用服务以及数据库。通常情况下,门户网站会使用应用层或服务层来处理用户请求,而不会直接让用户浏览器访问数据库。这些组件主要用于日常数据采集与管理工作,而非进行耗时较长的历史数据分析。
也就是说,操作型数据库可以用来获取当前的学生注册情况等信息;然而,它并不适合用于连续多年分析大量历史数据以生成统计结果,因为这样的操作会消耗掉系统用于日常运作的资源。因此,那些用于分析趋势、比较不同项目或制作数据看板的数据,需要通过架构中的其他部分来处理。
对于这类数据分析需求,通常会使用PostgreSQL或MySQL等关系型数据库。但在选择具体技术时,需要根据业务量、预期可用性、现有基础设施以及最大响应延迟时间等其他因素来进行决策。
解决方案架构师或数据架构师负责设计操作型数据架构,软件工程师则负责构建相应的应用组件,而数据工程师则会协助确定这些组件之间的数据交换机制并推动其实现。
分析型数据架构
虽然操作型数据架构用于处理日常业务活动,但分析型数据架构则致力于历史数据的整合、汇总与分析。它的各种系统能够帮助团队生成报告、发现数据规律,并为人工智能模型的训练准备所需的数据,同时不会给操作型服务带来不必要的负担。
在大学中,这种架构可用于整合课程安排、出勤情况以及预算数据,从而使分析师能够计算出每个硕士项目的月度支出,或分析学生在不同时间段内的出勤变化情况。同样,数据科学家也可以利用历史数据来预测未来对交通服务的需求。
典型的分析流程会使用ETL或ELT(我们将在下文中进一步讨论这两种方法)从多个来源获取数据。相关团队会在将这些数据加载到数据仓库等专用系统之前或之后对其进行处理。这样一来,商业智能工具和机器学习工作流程就能获得合适的数据来进行分析,而不会与虚拟校园系统争夺相同的运营资源。
在这个领域,数据架构师或分析架构师负责设计整个分析系统的架构组成部分;而分析工程师与数据工程师则共同设计那些为数据分析师或数据科学家进行分析工作做准备的数据处理流程。
云与混合数据架构
数据架构还决定了各个组件应该运行在何处:是云端、本地环境中,还是两者结合使用。云数据架构>利用云计算、存储服务、数据库以及分析工具来实现各种功能。这些技术能够简化系统的扩展流程,减少对物理硬件的管理需求,但组织仍然需要负责配置安全措施、控制成本,并管理自身数据。
另一方面,混合数据架构>则将本地系统与云服务结合起来。当一个组织希望继续在自家数据中心运行现有应用程序,同时又想利用云服务的灵活性或分析功能时,通常会采用这种架构。
为了理解采用混合架构的必要性,以大学为例:学术系统和存储着学生信息及缴费记录的数据库最初可能会被部署在本地基础设施中,这样就能防止第三方访问这些数据。不过,一些经过匿名处理的数据可以被发送到云分析平台,以便获取关于虚拟校园使用情况或学术指标的统计信息。
然而,将某些数据保留在本地环境并不一定能带来更高的安全性,同样,使用云服务也并不意味着会失去对数据的控制权。在做出决策时,应该综合考虑数据的敏感性、处理延迟、可用性、可扩展性以及各种解决方案的总成本等因素。
在这种设计中,企业数据架构师和数据架构师会与专门研究云服务的云架构师一起参与方案的设计;网络工程师、云工程师>以及数据工程师也会参与实施过程。同时,数据保护官和数据所有者也需要审核哪些数据可以离开本地基础设施,以及这些数据被用于什么目的。
数据建模与设计
数据架构决定了哪些系统负责管理数据,以及这些系统之间如何进行数据交换。数据建模与设计明确了这些系统应如何表示各种信息。它识别出对组织而言重要的概念,并描述这些概念的属性、相互关系以及相关规则。
数据模型是对现实世界中某些部分的简化表征。它为人们提供了一种大家都能理解的结构,便于后续的实际应用。例如,在创建大学数据库之前,团队首先需要明确“候选人”“学生”“硕士课程”以及“注册”等概念的含义,了解每个概念需要哪些信息,以及它们之间是如何相互关联的。
团队通常会从三个层面来描述设计方案:
一个包含主要业务概念的概念模型;
一个不依赖于特定技术、但能详细说明各部分内容的逻辑模型;
以及一个将设计内容映射到具体平台结构中的物理模型。
随着团队对需求了解得越来越深入,这些模型也可以不断进行完善和调整。
数据建模师负责主导设计工作,并与数据架构师合作,确保设计方案能够融入更整体的系统架构中。数据所有者、数据管理员、业务分析师以及领域专家会协助明确各项概念的含义及规则。数据库管理员、数据工程师和软件工程师则参与物理设计的实现过程。
概念数据模型
概念数据模型能够让人们从宏观层面了解一个组织的数据结构。它展示了主要的业务概念及其相互关系,但不涉及存储方式或数据格式等技术细节。
例如,如上图所示,在一所大学中,概念数据模型会包含“候选人”“学生”“课程”或“注册”等概念。(需要注意的是,这只是一个辅助理解的示例图,并非实际使用中的图表。)
在这个阶段,只需明确这些概念的含义以及它们之间的相互关系即可。例如,学生可以申请注册,而一次注册操作通常会涉及多门课程的选修。这样做的目的是确保技术团队和学术决策者能够在设计具体解决方案之前,对实际情况有共同的认识。
这种模型通常是通过与数据所有者、数据管理员、业务分析师以及领域专家进行访谈或研讨会来开发的。鉴于这项工作的性质,这些参与者一般并不具备很强的技术背景。在这个过程中,数据建模师或数据架构师会创建相应的图表来表示模型,并确认其中使用的概念与企业的术语体系是一致的。
逻辑数据模型
逻辑数据模型会在保持独立于特定技术的前提下,对概念模型进行更详细的阐述。它定义了实体、属性、标识符、关系、基数以及其他业务约束规则。
例如,“学生”这一实体可能包含ID、姓名、电子邮件和地址等属性。一个学生可以注册多门课程,而一门课程也可以有多名学生。这种多对多关系在逻辑层面上可以通过一个名为“注册记录”的中间实体来表示,该实体可能会包含日期、状态或学年等属性。
人们常常将逻辑数据模型与关系数据库联系在一起,但实际上逻辑数据模型并不一定非得使用关系数据库这种技术架构。可以将它看作是一种与具体技术无关的信息及其关联关系的描述方式,尽管不同的技术框架会以不同的方式来表示实体和关系。
这些逻辑数据模型还可以进一步优化。例如,在关系数据库中,可以通过规范化处理来减少数据重复和错误的依赖关系;但在其他技术体系中,优化方法可能会大不相同。如前所述,这种模型的设计工作是由数据建模师与数据架构师共同完成的。
物理数据模型
物理数据模型将逻辑设计转化为具体的技术实现方案。以关系数据库为例,它会把逻辑层面的实体和关系转换为表格、列、键、约束条件、分区以及低级数据结构(如索引),而这些索引通常会采用B树结构)来实现。
在大学环境中,学生的信息可以存储在关系数据库的表格中。数据库管理系统会负责决定如何存储这些表格,而开发团队则可以在选定的列上创建索引(通常是B树索引),以此来加快常见的查询速度。
正如你所想象的那样,同一个逻辑数据模型可能会生成不同的物理实现方案。例如,学术管理系统可以使用PostgreSQL或MySQL等不同的数据库系统来构建,因此物理设计时必须考虑所使用的数据库类型、数据量、查询模式、安全性、可用性以及运营成本等因素,才能制定出有效的解决方案。
在这个设计阶段,数据建模工具或数据库设计工具、数据架构师以及数据工程师会主要与软件工程师合作来实施相应的解决方案。
实体关系建模
实体关系图是表示关联概念的常用方法。根据其所包含的细节程度,这些图表既可以用于概念性建模,也可以用于逻辑建模。实体通常用矩形来表示,而线条则用来表示各种关联关系、基数以及选项属性。
例如,一个学生可以注册多门课程,而每门课程也只对应一名学生;相反,学生与课程之间的关系则是多对多的,因为一个学生可以同时注册多门课程。
此外,还会为实体设置键值,以便区分不同的实体实例,并确保它们之间的关联关系保持一致性。还有一些其他细节在这里就不赘述了。
如果你感兴趣,可以在我的前书中阅读更多关于数据库设计的资料:点击这里查看。
维度建模
在数据仓库和分析系统中,另一种非常有用的方法是维度建模。这种建模方式是围绕“事实”和“维度”来组织数据的。事实记录可测量的事件,而维度则为分析这些事件提供必要的背景信息。
以交通服务为例,你可以创建一个名为“行程”的事实表,其中每一行都记录一次完整的出行信息,包括费用、距离和耗时等数据。但是,旅行者的相关信息并不会存储在同一张表中,而是会通过与其他表示“维度”的表格建立关联来进行存储。例如,“学生”“日期”或“交通服务提供者”这些表格就会用来描述与特定行程相关的背景信息。因此,这种结构被称为星型模式。
采用这种建模方式的主要原因是它能够简化分析查询的复杂度,并允许人们从不同的“角度”来研究相同的数据。例如,学校可以轻松地计算出每月、按学生或交通服务提供者分类的行程总费用,而无需编写过于复杂的查询语句。
数据模型治理
数据模型也需要进行有效的治理,以确保它们的一致性、时效性,并能与实际应用需求保持同步。随着各种设计方案的不断调整,团队需要时刻维护概念模型、逻辑模型与物理模型之间的关联关系。
一旦各团队批准了某个模型,后续的实施工作就应该遵循该模型进行;如果需要对其进行修改,也应当通过受控的变更流程来进行更新。当预期的数据结构与实际的数据结构之间存在差异时,这种现象通常被称为数据结构偏差。
例如,某大学的模型可能定义了一个用于存储数字年龄的字段,但实际上在数据存储过程中却将其以文本形式保存。这种差异看似微不足道,但如果下游系统依赖于事先约定的数据类型,就可能会出问题。因此,各团队应当及时发现并控制这些模式变更,以确保模型、文档说明和实际实现方式保持一致。
数据治理委员会或架构审查小组可以负责审核那些重大的模型变更。数据所有者会确认设计方案是否符合业务规则,而数据库开发团队则会通过规范的流程来实施这些经过审批的变更。
数据存储与操作
数据模型为那些需要持久存储数据并使其能够被应用程序及其他系统使用的系统的实现提供了指导。团队必须选择合适的存储技术,确保在需要时能够顺利访问数据,并使系统具备良好的性能。
数据架构决定了一个组织需要哪些系统,以及这些系统之间应该如何进行通信;数据建模则明确了这些系统应如何表示信息;而数据存储与操作环节则将这些设计转化为可实际运行的存储系统。例如,某个物理模型可能会规定“学生”实体应该对应于PostgreSQL数据库中包含student_id字段的B树索引的表结构。本节的内容主要讨论如何实现并运作这种设计。
数据存储的主要目标是确保数据的可用性、完整性,并使底层系统具备良好的性能。为了实现这些目标,一个组织不应该总是使用同一种技术来存储所有类型的数据——因为比如学生注册信息与课程视频这类数据,在结构、用途和需求方面存在很大差异。因此,同一个组织往往需要结合使用多种不同的存储系统。
| 用途 | 示例数据 | 。最常用的存储系统 | >相关技术示例 |
|---|---|---|---|
| 记录系统的当前运行状态 | 学生信息、注册记录、支付信息以及交通请求等相关数据 | 操作型数据库 | PostgreSQL、MySQL、SQL Server、Oracle Database或MongoDB |
| 存储大型文档和内容文件 | 学术证书、辅助文件、教学材料及视频等 | 文件存储系统或对象存储系统 | NFS、SMB、Amazon S3、Azure Blob Storage、Google Cloud Storage或MinIO |
| 用于分析整合后的历史数据 | 每月的差旅费用及出勤情况等数据 | 数据仓库 | Snowflake、BigQuery、Amazon Redshift、Azure Synapse Analytics或Teradata |
| 存储用于高级分析的数据 | 原始文件、事件记录以及虚拟校园系统的运行日志等 | 数据湖或Lakehouse | 对象存储系统、Parquet格式、Delta Lake、Apache Iceberg、Spark或Trino等 |
团队应根据数据预期的处理量、访问模式、敏感度、可用性、成本等因素来选择相应的技术。每添加一项新技术都会增加运营的复杂性,因此每一项技术都应能解决实际存在的问题。
数据库管理员负责创建、配置、保护、优化及维护数据库。存储管理员则管理底层的存储资源,而站点可靠性工程师与平台团队则会监控各项服务并处理出现的可靠性问题。具体的工作分工会因所使用的平台及组织结构的不同而有所差异。
数据库
数据库是一种有组织的数据集合,应用程序可以利用它来存储、修改和查询数据。数据库管理系统(DBMS)就是用于管理数据库并提供查询、并发控制、安全性保障、数据恢复及行政管理等功能的软件。PostgreSQL就是一种数据库管理系统。大学里的学术数据库,通常是由PostgreSQL服务器或相关服务来管理的。
操作系统往往需要事务性支持,尤其是在处理注册和支付等业务流程时。事务会将相关的操作组合成一个逻辑单元。ACID特性(原子性、一致性、隔离性和持久性)为应用程序提供了保障,使得它们能够在发生故障或面临并发访问的情况下依然保持数据的有效性。
例如,在进行支付操作时,用户的账户信息需要在多个相关位置被更新。因此,事务的原子性确保了所有这些修改能够一起完成;如果其中任何一步失败,系统也可以将数据恢复到之前的状态。
数据库设计往往需要在数据模型、扩展性、一致性、延迟以及访问模式之间做出不同的权衡。正因如此,才出现了多种不同的数据库范式:
| 范式 | 特点 | 应用场景示例 | 相关技术 |
|---|---|---|---|
| 关系型数据库 | 将数据组织成相关的表格,使用预定义的数据库结构,支持键、约束条件以及事务处理 | 适用于需要管理学生信息、课程安排、注册记录、发票信息以及交通请求等场景,其中数据的完整性和关联性尤为重要 | PostgreSQL、MySQL、SQL Server或Oracle Database |
| 文档型数据库 | 将信息组织成类似JSON的文档结构,这些文档可以包含嵌套数据,并且具有更强的灵活性 | 适用于需要存储来自不同提供者的信息,而这些信息所包含的字段并不一定完全相同的情况 | MongoDB或Couchbase |
| 键值型数据库 | 通过唯一的键来检索数据,注重简单、快速的访问效率 | 适用于维护用户会话信息、临时结果数据,或是缓存频繁被查询的数据 | Redis或Amazon DynamoDB |
| 图结构数据库 | 用节点和关系来表示数据,能够高效地处理复杂的关联关系 | 适用于分析学生、课程、讲师之间的关系,或是各种服务之间的依赖关系 | Neo4j、Amazon Neptune或ArangoDB |
这些仅仅是其中几种数据库范式而已。一所大学可以使用PostgreSQL来构建学术管理系统,通过表格和关联关系来管理学生信息、注册记录以及课程资料。而对于需要进行特定路径分析或网络分析的场景,图形化数据库则更为适用——它可以将位置表示为节点,将连接关系表示为边。至于日常的出租车服务,根据其数据访问需求,仍然可能会选择使用关系型数据库或其他事务型数据库系统。
数据架构师与数据模型设计者会在听取负责实际开发与运营该系统的工程师的意见后,来决定选用哪种数据库范式并进行相应的设计工作。
一旦数据库投入运行,就会由数据库管理员负责对其进行维护。在系统正式上线之前,数据库工程师会首先实现物理模型,创建实例、数据结构、表格等所有必要的组成部分,以便后续能够顺利运行该系统。软件工程师则负责开发那些用于访问这些数据库并执行查询操作的应用程序。
文件存储与对象存储
ضمنًا،并非所有数据都适合存储在数据库中。大学需要管理毕业证书、身份证明文件,以及诸如课堂录像这类大型文件。虽然数据库管理系统能够存储二进制数据,但对于这些类型的文件而言,文件存储或对象存储通常能提供更合适的访问方式、更高的扩展性,以及更优的成本效益。
文件存储会将文件组织到目录结构中,并通过诸如NFS或SMB这样的协议来提供对这些文件的访问路径。团队可以选择使用网络附加存储系统,或者像Amazon EFS、Azure Files这样的云服务来实现文件存储功能。
两者之间的主要区别在于访问方式:文件存储类似于共享文件系统,而应用程序通常是通过API,利用对象的标识符和元数据来访问对象存储中的数据的。例如,大学可以使用文件存储将每个学生的注册信息、证书等行政文档保存在共享文件夹中,这样授权人员就可以像使用传统文件系统一样来管理这些文件。
另一方面,对于大量的课堂录像、图片等多媒体资料,学校也可以选择使用对象存储。在这种情况下,系统可以直接通过文件的标识符来检索所需内容,或者根据元数据来进行筛选操作,而无需先遍历复杂的文件夹结构。
负责配置和操作这些系统的角色主要是存储管理员、云工程师和平台工程师,而软件工程师则负责为其他应用程序提供对这些系统的访问功能。数据仓库
操作型数据库通常会被优化以便处理当前的交易和应用程序查询,而不是用于对多年积累的历史数据进行重复分析。复杂的分析任务也会与使用相同资源的应用程序产生竞争。因此,企业往往会将合适的数据复制到单独的数据仓库中。
数据仓库是一种分析型存储系统,它能够整合来自多个来源的数据,并对这些数据进行组织,以便进行重复性的分析、生成报告或使用仪表板来展示分析结果。这类系统支持在线分析处理功能,能够扫描并汇总大量数据记录;这与操作型应用程序中常见的在线事务处理任务截然不同。
这种差异往往会影响存储系统的设计。许多数据仓库采用列式存储结构,因为分析查询通常只需要扫描大量行中的少数几列数据。例如,如果要计算某段时间内所有出租车乘车的总费用,系统可能只需要使用费用和日期这两列数据即可。
而许多操作型关系数据库则采用行式存储结构,因为这种结构能够高效地检索或修改完整的记录。这些只是常见的存储模式,并非普遍适用的规则。具体的产品可能会支持多种存储格式。
在实际应用中,大学可以建立一个数据库,并设置一个数据抽取流程,定期将数据提取出来并插入到数据仓库中。在数据仓库中,可以使用前面提到的维度数据模型来分析这些数据,从而帮助分析师回答诸如以下这类问题:
某门课程每名学生的平均月费用是多少?
在特定时间段内,学生的出勤情况发生了哪些变化?
上个月有多少学生注册了这门课程?
需要明确的是,数据仓库并不会取代数据库。它只是一个专注于数据分析的辅助系统。对于这类系统来说,Snowflake、Google BigQuery或Amazon Redshift等云平台都是非常不错的选择。
与它们一起工作的角色包括数据架构师或分析架构师,他们负责设计分析平台,而数据工程师则负责设计用于提取和加载数据的流程。数据仓库管理员或平台工程师负责管理数据性能、权限、可靠性以及成本方面的事宜。数据分析师与商业智能专业人士可以在不修改原始数据记录的情况下,对这些经过整理的分析数据进行查询操作。数据湖与数据仓库
传统的数据仓库会采用预先定义的模式来组织数据,以满足已知或预期的分析需求。
但实际情况并非总是如此,因为有些组织可能还需要保留原始文件、半结构化数据、日志、图像等信息,而这些数据的未来用途目前尚未完全确定。
对于这类情况,我们可以使用数据湖——这种存储系统专门用于以原始格式或经过最小程度处理的方式保存大量数据。
数据湖同样能够满足分析及数据处理的需求,而且在数据入库时几乎不需要进行任何转换即可保留结构化、半结构化及非结构化数据。它通常与读时模式相结合使用:在这种模式下,查询或处理操作会仅应用部分数据结构;而传统的数据仓库在加载数据之前通常会先进行写时模式下的格式转换。
采用读时模式并不意味着不需要元数据、安全机制、质量控制措施或管理规范。如果没有这些机制,数据湖很可能会变成数据沼泽。
以这所大学的实际应用为例,我们可以了解数据在数据湖中是如何被组织的:根据数据的可用性,这些数据可以被分层次进行处理。
在系统的某些区域,数据可以保持其原始格式而不进行任何修改,例如CSV或JSON文件。这样,如果后续发现转换过程中存在错误,或者需要进行其他类型的分析时,就可以重新处理这些数据。
在另一些区域,数据可能会被转换为不同的格式,或者虽然保持相同的格式,但会经过某些处理步骤来删除无效记录或统一计量单位。
在经过专门处理的区域,团队可以进一步进行质量检查与数据转换,直到数据符合制作数据看板的要求,同时一些统计指标也会被预先计算出来。
这种分类方式并不意味着所有原始数据都会被无限期地保留下来,因为隐私保护、安全要求以及数据保留政策都必须得到遵守。
例如,大学可能会暂时保存考生在申请过程中提交的文件。但如果该考生被拒之门外,并且已经过了足够长的时间,学校就必须删除这些文件,即使这些文件已经被转换成匿名格式或用于生成相关统计分析结果也是如此。
湖仓为通常用于数据湖的灵活存储方案增添了诸如事务处理、模式校验以及表格管理等功能。它们能够让多个分析任务共享同一数据基础,不过这并不能完全消除使用专用系统的必要性。
用于构建Lakehouse的技术包括Delta Lake、Apache Iceberg和Apache Hudi。这些技术定义了通常存储在Amazon S3、Azure Blob Storage或Google Cloud Storage等服务中的数据格式,并通过Apache Spark、Databricks或Trino等工具对这些数据进行处理。
对于这所大学来说,Lakehouse可以用来集中存储学生信息、注册记录、出勤情况以及打车记录。这样一来,学校就可以安全地更新这些数据,并直接利用它们来生成各类报告,比如每月的交通开支统计或上课学生的数量,而无需使用单独的系统。
最后,负责设计并实现从不同来源获取数据并将其导入这些系统的人是数据工程师。另一方面,平台工程师负责管理基础设施,而分析工程师与数据科学家一起利用这些数据来进行相关的分析和研究。
备份与恢复
即使是一个设计完善的存储系统,也可能会遇到硬件故障、软件缺陷、数据损坏、人为错误或攻击等因素,从而导致数据丢失。因此,在实际生产环境中,备份与恢复是必不可少的。
备份是指为应对数据丢失或损坏而保存的数据副本。只有当组织对备份进行了妥善保护、定期验证,并测试了恢复流程时,备份才能发挥其作用。常见的备份机制包括:
完全备份:复制整个数据集。例如,学校可以每周对注册数据库进行一次完整备份。这种备份方式虽然能够简化数据恢复过程,但会占用更多的时间和存储空间。
增量备份:仅保存自上次备份以来发生的变化。在每月进行完全备份后,每天只需备份那些被修改的注册记录即可。这种方式可以减少备份所需的空间,但恢复数据时可能需要多个备份文件才能完成。
快照:在某个特定时间点捕获存储系统的状态。根据所使用的技术不同,快照可能会共享底层的存储资源,因此可能并不属于独立的备份副本。学校可以在进行重大系统更改之前创建快照,同时仍保留其他形式的备份以增强数据安全性。
日志备份:这种备份方式依赖于变更日志,当数据被意外删除时,可以依据日志将数据库恢复到之前的状态。这种方式更加精确,但需要维护完整的日志序列。
复制:创建整个系统的副本,以便在主系统出现故障时能够立即接管其功能。例如,备用数据库可以继续为注册门户提供服务,从而提高系统的可用性。然而,复制过程也可能会导致数据错误被传播,因此备份仍然是必要的。
恢复策略通常会遵循两个核心目标。恢复点目标(RPO)表示在多长时间内允许发生最大程度的数据丢失;而恢复时间目标(RTO)则说明了服务恢复正常所需的时间长度,超过这个时间范围,损失就会变得无法接受。
例如,在注册期间,该大学可能会将招生数据库的恢复时间目标设定为5分钟,将服务中断恢复时间目标设定为1小时。这意味着,在发生严重故障时,他们希望最大程度地减少5分钟的运营延误,并在1小时内恢复服务。相比之下,对于那些已经发布好的视频文件来说,如果其他地方存在备份副本,那么恢复服务的过程可能会慢一些。
在设计备份方案时,一个公认的实践是遵循3-2-1规则:即需要为重要信息保留三份副本,使用至少两种存储介质或技术,并将其中一份副本存放在异地。不过,您应该根据自己组织的具体需求来调整这一方案。
数据所有者及业务负责人有责任确定关键业务流程,并明确可接受的数据丢失或服务中断范围。从技术层面来看,数据库管理员负责实施并验证数据库恢复机制;而存储管理员与云平台工程师则负责管理存储资源并自动化执行备份操作;站点可靠性工程师则会监控系统运行状况并进行测试,以确保各项恢复功能能够按预期发挥作用。
数据保留与归档
任何组织都不应无限期地保存所有数据。这样做不仅会增加成本,还会使数据检索变得更为复杂,同时也会加剧数据泄露带来的负面影响。
数据保留政策应当明确规定数据在何种情况下仍需保持活跃状态,何时应被移至归档目录,以及何时应该被删除或进行匿名处理。该政策必须充分考虑企业的实际需求、合同要求、法律规范以及任何相关的限制条款。
在这个背景下,区分以下两个概念非常重要:
归档:用于存储那些不再经常被使用但仍然需要保留的信息。例如,已毕业学生的档案可以被移至归档目录中,这样既能降低存储和检索成本,也能在需要验证其身份信息时方便地获取这些资料。
数据保留期限:规定数据应被保存多久,以及在该期限结束后应如何处理这些数据。例如,对于被拒绝的申请者的个人及学术记录,可以将其保留到录取流程和申诉期结束之后再予以删除;不过,学校可能会保留一些关于收到申请总数的匿名统计信息。
数据所有者、档案管理员、法律顾问以及隐私保护专家会共同协助确定数据的保留期限。对于那些与调查或法律程序相关的信息,法律保留要求可以暂时阻止这些数据的正常处理。因此,组织在决定是保留还是删除某些数据时,必须有明确的依据,而不能仅仅基于这些数据是否“有用”来做出决定。
之后,数据管理员会对这些数据进行分类,而数据库管理员、存储管理员或云工程师则会负责执行相应的政策。作为一种非常实用的技术,一次写入、多次读取存储方式通常被用于那些必须保持不可更改性的记录。性能与可用性
存储并受保护的信息必须在服务需要时能够被及时获取,并且其运行效果必须符合既定的目标。性能指的是响应时间、吞吐量等指标,而可用性则衡量的是服务是否真的能够被正常使用。
即使一个系统在技术上可以正常运行,但如果它的响应速度过慢,那么它仍然无法被使用;同样地,一个系统虽然运行速度快,但如果频繁出现故障,其可用性也会受到影响。因此,团队需要同时关注这两个方面。
一些能够提升存储系统性能的方法包括:
对于那些经常被查询的数据字段,创建索引;不过在创建索引之前,必须确保这样做所带来的空间开销是合理的。
分析最常出现的查询需求或工作负载,尝试优化数据库管理系统生成的查询计划。
在可能的情况下引入缓存机制,尤其是当某些结果需要被多次访问时。
性能优化的工作方式会因系统类型和工作负载的不同而有所差异。增加硬件设备并不能解决所有问题,因为软件设计同样非常重要。例如,不必要的数据转换操作虽然不会导致系统崩溃,但会增加执行时间并提高成本。
另一方面,冗余设计是提升系统可用性的常用手段。如果同一服务器或系统的多个副本能够同时运行,那么即使其中某个副本出现故障,其他副本仍然可以继续提供服务,从而避免终端用户遇到服务中断的情况。
可以通过故障转移机制来管理这些副本的运行状态。例如,当某个PostgreSQL实例发生故障时,系统可以自动将请求路由到另一个副本上,从而确保终端用户能够继续正常使用服务。
以大学为例,在招生截止期的最后几天,可能会有成千上万的学生同时访问校园门户网站。为了保证良好的性能,请求会被分配到多台服务器上进行处理,这样就不会有某一台服务器因负载过重而无法正常运行,从而缩短用户的等待时间。此外,数据库也可以设置多个副本,这样当某个实例发生故障时,另一个副本可以立即接管其工作。
通过这样的设计,系统在高并发请求的情况下依然能够保持快速响应的能力,同时也能在遇到意外故障时继续提供服务。
为了评估一个组织的性能与可用性目标,可观测性是一个非常重要的概念。这意味着需要生成各种指标、日志和统计数据,并利用Prometheus、Grafana等工具对这些数据进行处理,以便随时监控系统的运行状态及其性能表现。
通常情况下,存储系统的优化工作是由数据库管理员来完成的,不过某些软件工程师和数据工程师》也可能参与其中,他们负责优化各个系统之间进行信息交换的数据流程。在保障系统可用性方面,运维工程师、平台工程师以及云工程师会负责自动化部署任务、监控系统的运行状态、调整系统资源分配,并实施故障转移机制。
文档与内容管理
到目前为止,我们处理过多种类型的数据:表格中的结构化记录、半结构化数据(如JSON),以及扫描文件、图片、视频和自由格式文本等非结构化内容。
文档通常会同时包含结构化的元数据和非结构化内容,因此需要专门的管理方法。
文档一般不会遵循严格的行列结构,但仍然可以包含标题、作者、类型、日期或标签等元数据。某些数字格式还具备内部层次结构。例如,JSON文档就会使用命名字段和嵌套对象来组织数据:
{
"student_id": "ALU-2026-8942",
"full_name": "Amélie Dubois",
"master_program": "人工智能硕士项目",
"campus_distance_km": 18.2,
"rideshare_benefit_approved": true,
"last_trip": {
"date": "2026-03-09",
"cost_euros": 24.50
}
}
许多数字文件会将内容与标题、作者或创建日期等描述性元数据结合在一起。这些元数据有助于更方便地识别、组织、保护和检索这些内容。文档与内容管理提供了实现这一目标所需的流程和系统。
在组织规模上,仅仅将文件存放在文件夹中是不够的。团队需要具备对文档进行分类、描述其内容、控制访问权限、跟踪版本及保留期限,并能在日后方便地查找这些文件的能力。基本的文件系统或数据库可以作为解决方案的一部分,但专门的文档或内容管理平台才能提供组织所需的管理功能。
例如,在大学系统中,一份文档的流转过程可能如下:
候选人的学术记录会通过表格、电子邮件或其他相应方式被收集起来。
这些记录会被建立索引,并添加元数据以提供上下文信息。
随后,这些记录会被存储在适当的存储系统中。
经过授权的用户和系统可以在规定的控制范围内访问或共享这些文档。例如,招生分析师可以查询已提取的字段信息,从而统计出那些在某个学科领域有学习经历的候选人,而无需手动查看每一份证书。
最后,这些文档会根据相关政策被删除或保留下来。
非结构化数据
一个组织所管理的数据中,有一部分包含了非结构化信息。正如上文所述,这类数据的内容并没有被严格地组织成清晰可识别、可直接查询的字段结构。例如,一份PDF格式的动机信、一张扫描后的文凭图片或一份合同,其中包含的信息往往难以被结构化处理。
文档可能包含特定于其格式的元数据,例如标题或创建日期。这些元数据有助于识别文件,但很少能描述文件中的所有内容。文档的正文可能包含自由格式的文本、图片、表格或其他内容,系统在能够回答详细查询之前,必须先提取或对这些内容进行索引处理。
为了对这些信息进行查询,系统会对这些内容进行索引处理,或者运用诸如光学字符识别、自然语言处理或智能文档处理等技术。
{
"index_id": "idx_cert_2026_0042",
"student_id": "ALU-2026-8942",
"student_name": "Amélie Dubois",
"document_type": "Academic Transcript",
"extracted_subjects": [
{
"original_name": "Algèbre Linéaire",
"normalized_area": "Mathematics",
"score": "18/20"
},
{
"original_name": "Introduction à Python",
"normalized_area": "Computer Science",
"score": "16/20"
}
],
"metadata": {
"issuing_country": "France",
"language": "fr",
"confidence_score_ocr": 0.98
},
"original_file_url": "https://s3.uni.edu/bucket-cert/2026/8942_transcript.pdf"
}
文档捕获
第一个操作步骤就是文档捕获,即将文档导入组织系统的这一受控过程。
验证文件的格式和大小,确保其中不含有恶意软件。
为文件分配一个标识符以及基本元数据,例如文件的来源和接收日期,并为其生成一种数字指纹(如哈希值),以便日后检测文件是否发生了变化。
保留文件的原始版本;在必要时,提取文件内容的可用表示形式。
如果文档是扫描生成的,其文本会以像素的形式存在,而无法直接被搜索系统识别。OCR技术可以将这些可见文本转换为机器可读的格式。更先进的智能文档处理系统还能利用规则和机器学习模型对文档进行分类,并提取其中的字段、表格及布局信息。
例如,求职者可能会通过手机上传一份用外语颁发的毕业证书。扫描系统会识别出文件的语言类型,然后使用OCR技术提取所有相关文本,并将这些文件与求职者的申请材料关联起来,这样日后在审核文件内容时就能知道这份证书属于哪位求职者。
文档分类
在文件被捕获后,系统可能需要对其进行分类,以便确定它的类型以及应适用哪些工作流程、访问规则和保留政策。人们可以手动完成这一分类过程,或者让软件利用规则和机器学习技术来辅助完成这项工作。
在某些工作流程中,学校可能会允许用户上传证书、报告等其他支持性文件。但系统无法仅凭文件名来判断这些文件的安全性,因此必须对文件进行验证,根据安全政策对其进行扫描,并确定文件的类型后才能继续进行处理。
仅仅依靠文件名是无法判断文件性质的:A.pdf这个文件名可能代表几乎任何类型的文件。通过分类,系统可以为文件分配一个组织内部定义的文档类型,从而确定后续的处理步骤。对于低风险文件,团队可以自动化处理流程;而对于那些存在不确定因素或后果严重的文件,则需要由人工进行审核。
内容存储
在文件被捕获和分类之后,组织会将其原始版本及元数据保存起来。对象存储或文件存储通常用于存放二进制文件,而像MongoDB、Couchbase或Amazon DocumentDB这样的文档数据库则适合存储灵活的元数据或提取出的文件内容。选择哪种存储方式取决于具体的访问需求、保留策略、搜索功能以及系统扩展性要求。
其他可行的解决方案还包括使用文档管理系统或具备企业内容管理功能的平台。这些文档存储系统内部通常基于对象存储或文件存储技术构建,但它们还提供了单独的桶或文件夹所无法提供的额外功能,比如高级元数据管理功能。最后,还需要提到内容管理系统,这类系统专门用于在网站上创建和发布内容。
搜索与检索
只有当授权用户和系统在需要时能够找到某份文档,这份文档才具有实际意义。在完成存储和索引工作后,该平台会提供多种搜索方式:
元数据搜索:根据诸如
document_type = Academic Certificate这样的字段进行筛选。全文搜索:在提取出的文本中查找指定的词语或短语,并对匹配到的文档进行排序。
语义搜索:即使文档中并不包含查询中使用的确切词汇,也能根据其含义检索到相关文档。
例如,授权员工可以使用“合同”或相关人员的姓名等关键词来查找某位教师的聘用合同,即使他们不记得文件的具体名称。或者,通过类似谷歌提供的语义搜索功能,他们也可以根据文件内容的含义找到所需文档。
记录管理
并非所有文档都具有相同的价值或生命周期。团队可能会迅速丢弃草稿文件,而某些活动或决策的正式记录则必须被妥善保存。记录管理负责确保这些记录在整个生命周期内得到恰当的管理。
与草稿不同,记录是必须被保留且其真实性、完整性必须得到保障的正式文件。例如,录取通知的草稿可以随意丢弃,但学生签署后的正式录取通知书就属于记录。
每种类型的记录都有一定的保存期限,这一期限决定了记录需要被保存多久,以及到期后应采取何种处理措施。如果发生调查或法律诉讼,可能会实施法律保留措施,暂时暂停这些记录的处置流程。在大学环境中,正式的课程记录或最终成绩单通常也被视为记录。
总体而言,文档管理中常用的技术及相关角色可以归纳如下:
| 文档处理阶段 | 关键技术 | 负责角色 |
|---|---|---|
| 捕获阶段 | Azure AI Document Intelligence、Google Document AI、Amazon Textract、Tesseract OCR | 软件工程师与集成专家负责构建数据捕获流程,机器学习工程师则设计数据提取模型。 |
| 存储阶段 | OpenText Content Management、MongoDB | 信息架构师设计逻辑内容结构,平台工程师与ECM/DMS管理员负责存储系统的实施与运营。 |
| 索引与搜索阶段 | Elasticsearch、OpenSearch、Apache Solr | 信息架构师制定索引策略,搜索工程师则负责搜索引擎及查询功能的实现。 |
| 保存与维护阶段 | Microsoft Purview Records Management、Amazon S3 Object Lock | 记录管理员、数据所有者及合规专员制定政策规则与合规要求,安全与合规团队则负责实施安全措施并开展审计工作。 |
参考数据与主数据管理
许多组织和系统会在不同的流程中重复使用某些数据。例如,同一个学生可能会同时出现在招生平台、虚拟校园系统和计费系统中。如果这些系统对同一人的信息描述各不相同,就会很快出现重复记录或矛盾之处。
参考数据与主数据管理的作用就是协调这些共享数据,确保各个系统能够使用一致且可靠的信息。
首先,需要区分以下两类数据:
主数据:这类数据描述的是那些在多个流程中都会被使用的实体信息。例如,学生
Amélie Dubois的记录就属于主数据。参考数据:这些数据是主数据分类体系中的有效值。比如,“APPROVED”这个状态就可以用来表示招生申请已被批准,而候选人的相关记录则属于主数据范畴。
我们的目标并不是将所有数据都集中存储在一个数据库中,而是要确定哪些信息是可靠且可供系统使用的,明确谁负责维护这些数据,并确保每个使用这些数据的系统都能获得正确、一致的信息。
主数据
主数据指的是代表人员、组织、地点或产品等核心实体的信息。在大学环境中,主数据可能包括学生、教职员工和课程等信息。一个可靠的学生记录应该包含全球唯一的标识符、姓名以及选定的联系信息,而敏感的支付细节则应保存在需要使用这些信息的系统中。
不过,并不是所有涉及这些数据的流程都会用到支付信息。因此,必须将经过授权的数据分发到各个系统中,这样整个组织才能对同一数据有统一且一致的认知,即使这些数据在不同系统中被用于不同的用途。
记录中的某些属性并不一定非得来自同一个数据源。例如,支付平台可能会保存财务信息,而学生门户则会存储最新的联系邮箱地址。这时,主数据管理平台就会整合这些不同来源的数据,为其他系统提供可靠的信息。
用于实现这一目标的工具包括Reltio、SAP Master Data Governance和IBM InfoSphere MDM等。负责操作这些平台的通常是主数据管理员或数据架构师,他们负责定义数据模型及部署方案;而主数据管理工程师则负责配置相关平台。数据工程师和集成工程师也需要了解这些权威的数据来源。
参考数据
参考数据提供了用于对其他数据进行分类或整理的标准化值。例如,在大学系统中,运输申请的状态可能被定义为PENDING、APPROVED或REJECTED。如果不同的系统使用不同的术语来表示同样的状态,那么数据集成和报告工作就会出错。这些被广泛认可的状态值都属于参考数据的范畴。
这些数值通常变化不大,但并非不可更改。出现这种情况是因为需要为分类体系添加新的数值,比如CANCELLED这个数值。
要进行这样的修改,数据管理员会记录该数值的含义,而相应数据领域的数据所有者则会批准这一变更。随后,集成工程师负责将新的数值分发到那些需要使用这些数值的系统当中。
黄金记录
关于某个实体的信息往往会出现在多个系统中,每个系统只会存储它所需要的那部分信息。MDM平台可以将选定的可信属性整合起来,形成一个统一的视图,这就是所谓的黄金记录。其目的在于提供一个经过规范管理、且具有实用价值的实体表示方式,而不是简单地复制组织所持有的所有信息。
例如,某所大学可能有一个招生系统,在其中存储学生的个人信息,比如姓名Amelie Dubois;而学生的支付信息则保存在专门用于处理支付事务的系统中。在确认这些信息确实属于同一个人之后,就可以将它们关联起来,从而形成关于这个学生的完整信息视图。
黄金记录并不会自动成为完美的、永久有效的信息来源。它只是在当前的信息匹配规则下所能得到的最可靠、最可信的信息表示方式而已。
实体识别
为了构建这样的信息视图,平台必须确定哪些记录实际上指的是同一个真实的实体。这项任务被称为实体识别。
例如,名为Amélie Dubois和A. Dubois的记录可能分别指的是同一个人,也可能指的是不同的人。通过比较电子邮件地址、电话号码或出生日期等权威信息,并运用确定性规则或概率匹配算法,就可以完成实体识别工作。由于错误的匹配结果或遗漏的匹配情况可能会造成不良后果,因此团队应该仔细审查那些不确定的情况,并提供相应的纠错机制。
这项任务通常由MDM工程师负责完成,而数据质量分析师则会与数据管理员一起分析监督识别结果。这一过程可以通过MDM平台内置的功能来实现,也可以借助像AWS Entity Resolution这样的服务,或者Splink这样的记录关联工具来完成。
去重处理
导致需要进行实体识别的另一个原因是存在重复数据。例如,某个候选人可能用一个电子邮件地址在虚拟校园平台上注册,后来又用另一个电子邮件地址申请入学。如果确认这两条记录确实属于同一个人,那么就必须在相应的场景中采取适当的措施来处理这些重复数据。
这个过程被称为去重处理,其核心就是利用实体识别技术来检测并管理重复的记录,从而防止它们被当作独立的实体来处理。常见的去重方法包括链接机制:这种机制会保留原始系统中的记录,并在它们的标识符之间建立对应关系;另一种方法是合并记录,从而生成一个统一的、完整的记录信息,类似于黄金记录的做法。
在这里,各项职责由不同的角色来承担。数据所有者制定指导去重处理过程的标准,MDM工程师在平台上将这些标准付诸实施,而数据质量分析师与数据管理员则负责监督这一过程的执行结果。
存活规则
当多条源记录指向同一个实体时,MDM系统必须决定在“黄金记录”中应使用哪个数值来表示该实体的各个属性。
以前我们通过学生姓名Amélie Dubois和A. Dubois这个例子就了解过这一点——这两个名称可能会出现在多条记录中。因此,在创建“黄金记录”时,就必须确定应该保留哪一个版本。
为此,人们制定了存活规则。顾名思义,这些规则就是根据所涉及的数据来决定如何解决这类问题的。
这些标准由数据所有者制定,数据管理员负责监督规则的实施过程,而MDM工程师则会在平台上将这些规则付诸实践。
元数据管理
在上一节中,文档元数据帮助我们识别文件,并描述了其类型、创建日期等详细信息。但实际上,元数据的应用范围远不止于此。
元数据就是用来描述其他数据的信息。单独来看,“42”这个数字本身并没有明确的含义,但像age这样的列名、相应的单位、定义以及时间戳,就能帮助我们理解这个数值代表的意义以及如何解读它。
在组织层面,元数据需要得到有针对性的管理。元数据管理>负责收集、整理、维护并发布元数据,这样人们和系统才能正确地查找和使用这些数据。
其目标在于让数据变得易于理解,并为数据治理、质量控制、安全保障以及信息检索等工作提供支持。有些元数据是由人工创建的,而扫描工具或集成系统则可以从各种系统和文件中收集技术性或操作性的元数据。元数据仓库将这些元数据信息连接起来,数据目录则使用户能够方便地访问这些信息。
CDO与数据治理委员会可以制定元数据管理策略和治理模式。元数据管理员或元数据工程师>负责操作相关平台,而数据所有者与数据管理员>则负责维护各种元数据的定义、归属信息等细节。
业务元数据
元数据不仅仅包括列名和文件属性。业务元数据是用组织所使用的语言和规则来描述数据的。
它包含经过文档化的定义、业务规则、所有权信息以及使用限制。例如,某大学可能会将“在读学生”定义为至少有一门课程处于激活状态的学生,并明确说明“激活状态”的具体含义。这种定义就属于业务元数据。
生成这些定义所需的知识由业务分析师提供,他们会与数据管理员一起,将这些知识转化为清晰且一致的定义。
技术元数据
技术元数据描述了系统是如何存储数据的,以及数据的具体位置。它包括数据结构、数据类型、表名和列名、文件路径、文件格式、键值对以及各种接口信息。
例如,在目录系统中,可能会说明某位学生的地址信息存储在某个表的某个字段中,该字段是文本类型的,并且不允许输入空值。所有这些信息都属于元数据,因为它们说明了数据的存放位置及其表示方式。
在这个层面上,数据架构师或数据建模师通常会定义数据的具体存储格式,以便数据工程师、分析工程师和数据库管理员能够据此进行相关开发工作。
操作元数据
操作元数据记录了系统在处理数据时所发生的情况。它可能包括任务开始和结束时间、处理的数据行数、查询活动情况、数据的更新频率、状态以及出现的故障信息。
例如,在大学环境中,可能会记录下注册申请流程是在早上6点启动的,共处理了543名学生,且整个流程在20秒内顺利完成。
这类元数据通常是通过Apache Airflow等调度工具、应用程序日志以及云平台获取的,而这些系统是由数据工程师和数据运营团队或负责监控这些流程的平台专业人员来管理的。
数据目录
数据目录是用于整合这些不同类型元数据的主要系统之一。
数据目录是对组织内部数据资产进行管理的工具,它通常存储元数据以及指向原始系统的引用信息,而不会复制所有底层数据。它的主要作用是帮助人们发现和理解这些数据,不过某些数据目录也支持访问请求处理流程和管理机制。
例如,如果分析师需要查找过去6个月内的注册记录,数据目录应该能够指出这些信息存储在哪个数据库或存储系统中,谁负责管理这些数据,还有该数据的系统名称、存储表名等元数据信息,以及相应的访问规则。
其中最为人熟知的商业解决方案包括Collibra、Alation以及Microsoft Purview,这些工具通常会被部署在AWS Glue Data Catalog或Google Cloud Knowledge Catalog这样的云生态系统中。这些平台的管理工作由元数据管理员或元数据工程师负责。
商业术语表
商业术语表是一种受控词汇体系,用于明确组织中各种概念的官方定义。它不应与数据字典混淆:数据字典描述的是特定系统中的表格和列结构,而商业术语表则定义那些可能被应用于多个系统的业务概念。
例如,“已完成行程”这一术语指的是已经到达目的地且账单手续也已完成的行程。这样的定义可以避免移动管理部门在行程结束时就认定其已完成,而财务部门却在收到发票后才确认行程完成。一个完整的商业术语条目应该包括其定义、同义词、相关规则、所属部门、负责人以及审批状态等信息。
商业专家或业务分析师会提出某个术语的候选定义,数据管理员会审核该定义的清晰度及可能存在的冲突之处,而数据所有者则最终决定是否批准使用这一术语。术语表最初可以只是一份简单的文档,但随着内容的不断扩充,应将其纳入数据目录中进行管理,从而将每个术语与相应的列结构、规则、报告和政策建立关联。
数据来源追踪
数据来源追踪用于记录数据的来源、传输路径、所经历的转换过程,以及最终被使用的去向。
在大学环境中,数据来源追踪可以帮助了解某个地址信息是如何通过某个应用程序输入系统、随后传递给地理信息API、计算出行驶距离,进而影响是否满足出行条件的决策过程。而另一个运营流程可能只会向交通服务提供商提供最基本的信息。这类元数据有助于团队评估各项变更带来的影响、排查错误,并明确结果是如何生成的。
数据工程师、分析工程师以及元数据工程师会使用dbt、OpenLineage或Apache Atlas等工具来帮助实现数据的来源追踪功能。自动化系统可以从支持这些功能的系统中收集相关数据,并生成从数据源到仪表盘的可视化路径,但团队仍需要人工验证其中存在的遗漏、语义上的差异以及那些需要手动处理的流程。
元数据标准
元数据同样需要相应的标准、质量控制机制以及管理框架。元数据标准规定了各团队应如何对元数据进行记录、表述及交换。我们的目标是帮助人们和系统能够以一致的方式定位、理解、整合以及交换数据。ISO-8601是一种用于表示日期和时间的数据标准。在某个组织内部,蛇形命名法可能被用作元数据的命名规则,而明确的JSON规范则可以标准化工具之间交换元数据的方式。
其中最著名的外部标准包括:ISO/IEC 11179系列标准,这些标准被用于元数据注册系统中;以及Dublin Core标准,该标准用于描述各种类型的数字资源。实施这些标准的责任通常由数据架构师和元数据管理员承担,他们负责选择适用的标准。
元数据质量
与其他数据一样,元数据也必须满足准确性、完整性、一致性以及时效性等方面的要求。
如果元数据的质量不佳,就可能会影响数据的治理与处理流程,因为用户可能会错误地解读这些数据。例如,如果目录中说明距离是以公里为单位测量的,而系统实际上却以米为单位存储数据,那么后续的计算结果就会出错。
团队可以通过检查元数据的完整性、有效性、一致性以及时效性来评估其质量。通过追踪元数据的来源信息,还可以确定不良的定义或缺失的字段可能会影响哪些下游系统或数据。这项工作通常由元数据管理员、数据管家以及数据质量分析师共同完成。
元数据治理
元数据治理明确了谁有权创建、审批、修改或删除元数据。元数据具有自己的生命周期,通过受控的流程,可以确保在生产环境中不会在未经适当审核的情况下随意更改元数据的定义。
例如,如果一名数据分析师提议将“到校区的距离”这一概念的定义改为以米为单位进行测量,他们不能直接修改这一定义。必须先由数据管家审核新定义的内容,确保其表述清晰且与其他术语保持一致,然后才能得到相应的数据所有者的确认。
只有经过这样的审批流程后,元数据的定义才会正式在生产环境中得到更新,从而避免不必要的错误发生。
虽然这项职责通常由数据管家和数据所有者承担,但实际情况并非一成不变。在高层管理层面,首席数据官和数据治理委员会会制定总体政策,指导整个组织如何开展元数据治理工作。
数据集成与互操作性
大多数组织并不会将所有数据存储在同一个系统中。它们会使用不同的系统来处理各种任务,因此这些系统需要具备可靠的信息交换与整合机制。
数据集成与互操作性正是为了解决这类需求而存在的。所谓互操作性,是指各个系统能够相互交换数据,并以一致的方式解读这些数据;而数据集成则是指将来自不同来源的数据进行整合或连接,以便将其用于特定的用途。
由于每个系统仅保存了部分数据信息,因此数据集成的作用就是从不同的数据源中收集信息,或将这些信息进行关联处理,从而为用户提供所需的信息视图。
我们的目标是在正确的时间、以正确的格式将正确的数据提供给用户。其中一个重要的考量因素是延迟时间:即数据从被创建或被请求到最终能够被用户使用之间所经历的间隔。例如,一个出租车调度系统可能需要能够在几秒钟内显示出当前可用的出租车数量,而一个用于显示每月费用情况的仪表盘则可以每隔一段时间更新一次数据。此外,数据集成过程还必须具备安全性、可监控性以及可审计性。
以大学为例,各个系统必须就“距离校园的距离”这一概念及其计量单位达成一致,或者明确规定一种可靠的转换方式。如果没有这样的统一标准,千米这个单位就可能被误认为是米,从而导致严重的错误。
一旦确保了互操作性,这些数据就可以被整合起来,用于生成各种报表或仪表盘。在大学环境中,可以从不同的系统中获取数据——比如包含交通服务记录的数据库以及支付平台——最终生成出能够反映某项服务在特定时间段内的费用情况的报表。
数据架构师负责制定互操作性的原则和通用模式,而数据工程师与集成工程师>则负责设计并实现数据采集、映射及交换的相关流程。平台工程团队、数据运维团队以及系统可靠性保障团队也会协助部署、监控并维护这些支持性服务。
数据采集
数据采集>是指将数据从来源系统传输到目标系统中进行存储或处理。目标系统可能会暂时保存这些数据,也可能会永久保留它们。
数据的来源可以是数据库、API、文件、应用程序或是事件流等;而数据的去向则可能是操作系统、队列系统、数据仓库、数据湖等其他平台。在推送式数据传输模式下,是数据源主动将数据发送到目标系统;而在拉取式模式下,则是由目标系统或连接工具主动请求数据。
还需要注意的是,根据数据是被插入到系统中还是直接从来源处被查询出来,数据集成也可以分为不同的类型。
其中一种类型是物理集成,在这种方式中,数据会通过ETL或ELT流程被提取出来并存储在共同的目标位置。例如,大学可以利用Apache Airflow、Apache Spark或Azure Data Factory等工具,每晚将学生的出行记录和支付信息导入到数据仓库中,之后再利用这些数据生成费用报表。
另一方面,虚拟集成使得人们可以在无需将不同数据源的信息存储在目标环境中的情况下对这些数据源进行查询,就好像这些数据源构成了一个统一的系统一样。通过这种方式,该大学可以利用Denodo等技术,将旅行数据库和支付平台结合在一起进行统一查询,从而获得整合后的数据。
通常情况下,虚拟集成并不会生成单独的、经过整合的数据副本,不过查询引擎可能会暂时缓存或处理这些数据。而数据导入过程则是有意地将数据转移到另一个环境中,在那里这些数据可能会被进一步处理或转换。
例如,该大学可能想要分析免费出租车服务是否真的提高了学生参加面授课程的积极性。为此,它需要将记录旅行信息的学生出勤数据从不同的系统中提取出来并进行整合。在这个过程中,相关数据源会被查询出来,然后被导入到数据仓库中进行分析。
用于数据导入的技术包括Apache NiFi、Kafka Connect,以及AWS Database Migration Service和Azure Data Factory等工具。选择哪种技术取决于数据来源、目标系统、数据量、处理频率、安全要求以及系统间的互操作性需求。通常由数据工程师与相关的数据源提供方及平台团队合作来设计并实施数据导入流程。
批量集成
在确定了数据来源和目标系统之后,团队需要决定数据导入和处理的执行时间。这个时间点的确定取决于用户对数据更新速度的要求。
在批量集成模式下,系统会按照预定的时间表或触发条件来收集并处理多组数据记录。当用户不需要实时结果时,这种处理方式往往更为简单且成本更低。不过,团队仍然需要关注批量处理操作可能对数据源系统和目标系统造成的负担。
例如,该大学可能会每晚将已完成的所有旅行记录和支付信息导入数据仓库,以便更新交通服务费用统计报表。具体来说,这个过程会先提取数据,将其临时存储在中间区域,然后进行必要的数据处理,最后将处理后的数据导入目标系统。如果数据导入的频率较高,那么这些批量处理任务就被称为微批次处理,因为每个微批次包含的数据量较少;不过处理流程本身是相同的。
这种集成方式主要通过Apache Airflow、Apache Spark、AWS Glue或Azure Data Factory等技术来实现,通常由数据工程师负责具体实施。同时,数据运营团队或平台工程团队也会对集成过程的运行情况进行监督和监控。
流式集成
当消费者需要更低的延迟时,流式集成会在数据产生后立即或连续地处理这些数据。生产者不会等待批量数据集中处理,而是会实时发布数据,使数据一到达就能被接收并开始处理。
例如,一家运输公司可以实时发布行程请求、确认、出发、完成或取消等事件,这样学生门户就可以立即得到更新。
这些数据通常通过Apache Kafka、Apache Pulsar或Amazon Kinesis等平台进行传输,而Apache Flink或Spark Structured Streaming则可用于对这些数据进行过滤、转换、聚合等操作,最终实现集成。
在这里,数据工程师仍然扮演着最重要的角色;不过,流式集成工程师这一更加专业化的职位也应运而生,他们能够确保这些流程以所需的低延迟方式运行。
https://docs databricks.com/aws/en/data-engineering/batch-vs-streaming
基于API的集成
内部和外部系统通常会通过API来提供数据或功能,而不是直接访问数据库。
应用程序编程接口 (API)是一种契约机制,通过这种机制,一个系统可以公开某些数据或功能,而无需暴露其内部实现细节。你可以将其理解为其他软件可以使用的一组预先定义的调用方式或资源。
大学可能会向地理信息API发送请求,从而获取坐标信息;当学生申请交通服务时,内部API会接收经过身份验证的学生信息,并返回是否符合条件的结果,而不会透露学生的学术记录。
一些数据平台会提供受控的查询API,但公共服务应避免接受来自客户端的未经限制的SQL请求。API契约应该仅暴露消费者被授权使用的操作和数据。
从技术角度来看,最常用的方式是通过HTTP协议使用API,以JSON格式交换数据,并遵循REST架构;当然,也有gRPC、GraphQL或SOAP等其他选择。无论采用哪种实现技术,API都必须明确界定其契约内容,这些内容可以使用OpenAPI或AsyncAPI进行文档化。
API通常由后端工程师或API工程师负责设计和开发,而集成方案则由集成架构师来设计,无论数据源是通过API访问的还是其他方式访问的。
ETL与ELT
如果我们关注数据导入过程,就会发现数据需要从源头提取出来,然后插入到目标系统中。但目标系统的数据库结构通常与数据源不同:每个数据源都会按照特定的方式存储数据,以便解决特定问题;而目标系统则会以不同的方式组织这些数据,因为它需要整合来自多个数据源的信息。
例如,某个数据源可能会存储包含某些学生信息的数据记录(姓名、出生日期、电子邮件地址),而目标系统在集成这些数据时,还会同时存储每名学生的支付信息,因此某些字段的内容可能会发生变化(如姓名、年龄、卡号)。这意味着需要对学生记录进行转换处理,比如根据出生日期计算年龄。
在实际的集成过程中,通常需要更多的转换操作,因为数据源和目标系统的结构往往存在差异。这种转换的边界并不总是明确的:开发团队可能会在数据处理的各个阶段,出于兼容性、数据质量、隐私保护、数据丰富化或后续分析等方面的考虑,对数据进行相应的转换。
总之,这里所提到的各种转换操作,实际上就构成了所谓的提取、转换和加载(ETL流程)。简单来说,这是一个由多个步骤组成的过程:首先从数据源中选取并提取所需数据,然后对其进行转换以使其符合目标系统的数据结构要求,最后将处理后的数据加载到目标系统中。
在之前的例子中,唯一需要进行的操作就是将出生日期转换为年龄,前提是其他字段的数据类型是匹配的。
当你需要严格控制数据在进入目标系统之前的内容时,ETL流程是非常适合的。不过还有一种方法叫提取、加载和转换(ELT流程),这种方法会先将数据加载到目标系统中,然后再进行转换处理。这种做法在云数据仓库和湖仓中非常常见,因为这样就可以保留原始数据版本,并将其用于多种不同的用途。
例如,在使用ELT流程时,大学可以将经过授权的学生记录以及供应商提供的原始交易信息加载到受保护的数据仓库中,之后再对这些数据进行分析处理。需要注意的是,即使这些数据是“原始格式”的,也不应该复制其中包含的完整卡片信息,更不能绕过安全审查机制。保留类似源数据的形式有助于后续的数据重新处理,但数据的存储、使用及访问政策仍然需要得到遵守。
开发团队可以使用Apache Spark、AWS Glue或Azure Data Factory等工具来实现这些转换流程。数据工程师通常会负责设计整个数据处理流程的端到端架构,而分析工程师则往往会在分析平台上具体定义各种转换操作。
数据交换标准
正如你刚才所看到的,数据源和目标系统之间的结构差异必然会导致数据需要被转换。
为了减少集成过程中所需的转换操作次数,人们制定了数据交换标准,这些标准规定了数据的结构、格式及其含义。其目的在于尽可能鼓励所有系统使用相同或相似的数据结构,从而避免在数据交换时出现不必要的转换操作。
例如,大学可以定义一种交换模型,其中包含诸如(student_id, name, date_of_birth, email)这样的字段,同时明确这些字段的格式及含义。如果某个系统需要获取年龄信息,那么合同应明确规定计算年龄所依据的日期,这样才能避免出现数据含义模糊的情况。数据交换标准并不规定数据的内部存储方式,它们仅定义在系统边界处使用的数据表示形式。
这些规则可以被归纳为所谓的规范数据模型,并通过OpenAPI、AsyncAPI等工具进行文档化。制定这些规则的责任通常由数据架构师或数据建模师承担,而最终负责在各种系统中落实这些规则的是数据工程师或集成工程师。
模式管理
许多系统都会使用一种定义了字段名称、类型及约束条件的模式。例如,一个学生记录最初可能只包含(name, date_of_birth, email)这些字段,后来可能会增加电话号码字段。因此,随着需求的变化,这些模式也会随之演变。
模式管理机制能够确保这些变化得到妥善控制,从而使生产方和消费方能够安全地协同工作。兼容性政策则规定了系统可以接受哪些变更,而不会影响现有数据或消费者的正常使用。
在这里,我们可以区分向后兼容性和向前兼容性。向后兼容性指的是使用新模式的系统能够正确读取或处理用旧模式保存或生成的数据;而向前兼容性则是指使用旧模式的系统能够在不引发错误的情况下读取、处理(或者至少安全地忽略)用新模式保存或生成的数据。理想情况下,系统应该在这两个方向上都具备完全的兼容性。
开发团队可以使用JSON Schema、Apache Avro、Protocol Buffers等技术来定义数据模式,并在Confluent Schema Registry或AWS Glue Schema Registry中为这些模式指定兼容的版本格式。数据架构师和数据建模师会与负责数据生成和使用的工程师们一起,共同确定这些统一的规范。
数据质量
虽然集成技术可以将来自多个来源的数据结合起来,但仅仅从技术层面来看,成功的集成并不能保证最终得到有用的结果。集成后的数据仍可能包含缺失值、不完整的记录、矛盾的信息或重复项,这些都会影响数据的实际使用效果。
数据质量是指衡量并提升数据是否适合其预期用途的能力,换句话说,就是判断数据是否适合其所要被使用的场景。
质量并不是一个绝对的概念,它并不能让数据在所有情况下都完美适用。数据的适用性取决于它的具体使用目的。对于汇总人口统计数据而言,居住地址可能已经足够了,但若用于安排取货等实际操作,则这样的信息显然不够用。数据必须满足当前任务所要求的具体标准。
通常来说,维护数据质量的职责并不由某一个人来承担。一般而言,数据质量经理会与数据所有者一起评估哪些数据对组织来说最为关键,潜在错误可能带来的影响,以及什么样的质量水平是可以接受的。
随后,数据质量分析师会实际分析并监控数据的质量,而数据工程师及开发团队则会实施必要的流程来确保数据达到所需的质量标准。这些人员在管理数据质量时并不会使用特定的技术工具,而是依赖SQL等常规技术。
数据质量的维度
数据质量可以通过一系列具体的维度来进行衡量,这些维度反映了数据的可观察特征。每个维度都针对数据的不同方面进行考量,既可以应用于单个数据项,也可以用于整条记录:
准确性:用于判断数据是否真实地反映了实际情况。
- 示例:如果学生的地址与他们实际居住的地址一致,那么这个地址就是准确的;否则,它就无法准确反映现实情况。
完整性:用于检查特定用途所需的所有数据是否都齐全。
- 示例:假设一个注册表单要求填写姓名、姓氏和电话号码,但如果用户没有提供电话号码,或者这些信息丢失了,那么该注册记录就是不完整的,因为电话号码字段会显示为空值。
唯一性:确保同一条数据或记录不会出现重复的情况。
- 示例:当学生注册大学时,数据库中应该只保存他们的一条记录,而不应该有重复项,除非有特殊的设计需求要求 otherwise。
一致性:确保数据的不同表现形式之间不会相互矛盾。
- 示例:如果某个学生的电子邮件地址或电话号码需要在一个或多个系统中被多次使用,那么这些信息的值必须保持一致。不能同一个学生在不同的系统中使用不同的电子邮件地址或电话号码,否则就违反了数据一致性原则。
及时性:确保数据在需要的时候能够得到更新并可供使用。
- 示例:当学生叫出租车时,他们应该能够实时获取自己的位置信息,而且这些信息的更新延迟必须尽可能低,以便他们能够立即使用。
有效性:确保数据符合既定的类型、格式、范围及约束条件。
- 示例:如果注册请求的状态只能是
已接受或已被拒绝,那么这些字段的值就不能有所不同,而且必须按照规定的格式进行存储。否则,这些数据就不符合既定的约束条件和业务规则,因此也是无效的。
这些维度是相互关联的,在实际应用中,某些维度可能对数据的使用更为关键。例如,当学生叫出租车时,数据的实时性就非常重要,因为他们期望能够立即看到自己的实时位置信息;而对于财务数据而言,唯一性则是至关重要的,因为一条支付记录不可能存在多次记录,否则就会造成严重的错误。
数据剖析
数据剖析有助于团队了解数据集当前的状态。它会对数据的结构和内容进行检测,计算相关统计信息,并寻找其中存在的规律或异常现象。通过数据剖析,可以了解到字段中空值的占比、不同数据的数量分布、最小值和最大值、数据类型分布以及各字段之间的关系等。
例如,如果一所大学维护着包含学生个人信息的表格,就可以检查这些姓名是否被存储在文本字段中而非数字字段中,或者确认没有记录存在空值等情况。
在关系型数据库中,还可以分析列与表之间的关系,从而确保所有注册信息都与真实存在的个人或科目相关联,否则数据就会出现不完整或不一致的情况。
然而,仅通过数据剖析并不能判断这些数据是否适合特定的用途。某个字段中的空值可能在另一个字段中是允许存在的。因此,数据质量分析师会与数据管理员及领域专家一起,根据所使用的平台和技术环境(如SQL、pandas或Apache Spark等工具),对分析结果进行解读。
数据质量规则
数据质量规则将各种要求转化为具体且可量化的条件。它们能够帮助团队及时发现数据是否不适合预期的用途,并决定接下来应该采取什么行动。
数据剖析用于了解数据的实际状况,而数据质量规则则明确了合格的数据应具备哪些特征。例如:
学生的联系邮箱不能为空,且必须符合该机构规定的邮箱格式。
到校的距离必须是一个大于零的十进制数值。
同一次出租车行程不能被记录两次。学生的费用可能为零,但提供服务的供应商的成本必须被记录在官方的财务系统中,这样学校才能合理管理预算。
这些规则实际上属于一种元数据,因此必须对其进行妥善记录并设置版本号。数据管理员和数据所有者会根据业务需求来设计这些规则并进行验证,而数据质量分析师和数据工程师>则会将这些规则转化为可执行的检查流程。最后,这些规则会通过适当的技术手段表达出来,比如查询语言(如SQL、Cypher等)。
数据验证
数据验证通过执行相关规则来判断数据是否符合既定要求。与仅用于分析数据当前状态的流程不同,数据验证会将数据值与明确的条件进行对比。
注册表单可能会要求填写学生的姓名,但API和数据库仍需对其进行验证,因为客户端进行的检查可能被绕过,而且数据在传输过程中也可能会出现问题。关系型数据库可以通过NOT NULL、UNIQUE、CHECK约束以及外键等机制来确保数据的合法性。应用程序和数据处理流程中的检查则可以处理那些涉及多个系统或需要更多背景信息的验证规则。
数据质量分析师负责定义并评估这些验证规则,而数据工程师、软件工程师、分析工程师及数据库专家则会将这些规则应用到相应的层级中。
数据清洗
验证过程可能会显示所有记录都符合规则要求;但当有记录不符合规则时,团队需要制定明确的处理措施:拒绝这些记录、将其隔离、进行修正、补充相关信息,或者在记录中注明异常情况后仍接受它们。
数据清洗的作用是检测并纠正已知的数据缺陷,从而使数据符合使用要求。具体的数据处理方式取决于数据的类型、相关的规则,以及团队是否能够安全地确定正确的处理结果。例如:
为避免出现不一致的情况,某条规则可能会规定姓名中不能包含开头或结尾的空格。因此,如果出现像' Chloé Moreau '这样的姓名,该规则就会判定这些数据不符合要求,此时可以通过删除多余的空格来修复这个问题,从而恢复数据的准确性。
另一条规则可能要求所有日期都必须采用YYYY-MM-DD这种格式。因此,如果出现像'15/09/2025'这样的日期格式,数据就不符合规则要求,但可以通过将其转换为'2025-09-15'来使其符合规定的格式。
根据数据的类型、相关规则以及所存在的问题,有些数据处理操作可以自动完成,而有些则可能需要人工干预才能确保其正确性。例如,姓名中的空格很容易被检测出来并删除,但其他一些问题可能会更加复杂,需要手动进行处理。
数据工程师、分析工程师、应用程序开发团队或运维人员都可以负责数据的清洗工作,而数据质量分析师和数据管理员则会对这些清洗方法进行审核。整个数据处理过程必须保留足够的可追溯性,以便能够解释哪些内容发生了变化以及变化的原因。仅仅消除表面问题并不能从根本上解决数据质量问题。
数据质量监控
数据验证不应仅在数据首次进入系统时进行。数据质量监控会定期运行相关的规则和检测流程,存储检测结果,并在数据质量下降时及时提醒相关团队采取行动。
例如,该大学可以安排系统每晚自动检测学生数据是否符合相关质量标准。系统会检查诸如地址是否完整、距离校园的距离是否为非负值以及日期格式是否有效之类的条件。这些检测结果可以被保存下来,并在控制面板上显示出来,这样就能及时发现某些趋势——比如在系统更新后,与校园的距离数值突然开始出现负数情况。通过这种方式,负责相关改动的团队就能够迅速找出问题的根源并加以解决。这些定期评估是使用AWS Glue Data Quality或Microsoft Purview等技术来进行的,而这些技术都是由数据工程师和DataOps团队负责维护的。
问题管理
当出现质量问题的时候,问题管理会记录该问题、确定其优先级、进行调查并最终解决它。问题的优先级取决于它对人们、决策过程、合规性以及业务流程的影响,而不仅仅取决于错误数据的数量。
例如,如果由于某些错误导致所有距离数值都显示为负数,从而导致学生无法使用交通服务,那么这就会影响用户体验;而如果某个学生因此无法参加重要的考试,后果可能会更加严重。因此,问题必须尽快得到解决。
一般来说,问题管理会遵循以下步骤进行:
记录与分类:当有规则被违反时,就会对该事件进行记录,包括其严重程度以及负责处理相关规则或数据域的人员。
控制问题的进一步发展:根据质量问题的严重程度或影响范围,会采取相应的措施来防止问题进一步恶化。例如,如果某条规则规定支付记录不得重复,而检测到了重复记录,那么可能会暂时阻止所有支付操作,直到问题得到解决。
分析问题原因:会通过数据追溯机制来排查问题产生的原因。
进行纠正:一旦找出了问题的原因,就会对其进行纠正,并重新执行相关规则,以验证纠正措施是否有效,并将整个解决过程记录下来。
如果出现了重复的支付记录,数据质量分析师会负责发现并协调处理这个问题;数据所有者会确定问题的优先级,而数据工程师或应用程序团队则会解决其中的技术问题。财务和合规部门也可能需要对纠正措施进行验证。
简而言之,质量标准决定了某个使用场景中哪些因素是重要的;数据分析可以了解当前的数据状况;规则能够明确各项要求;验证机制可以确认这些要求是否得到满足;数据清洗步骤可以针对存在的问题进行适当的调整;而监控系统则能及时发现任何变化。当问题真正影响到生产环境时,问题管理流程就会协调各方资源来应对这些问题。
数据工程
我们之前已经讨论过那些用于存储、交换、保护及验证数据的系统。现在,我们可以来看看各团队是如何在实际工作中构建数据采集流程、数据处理管道以及实现这些系统之间的连接的。
数据工程致力于设计、构建并运维那些用于收集及处理数据的流程与系统组件。它的作用是将数据从一个或多个数据源传输到人们或各种应用程序所需要的系统中,这些系统包括数据仓库和数据湖等平台。
数据工程涉及架构设计、数据存储、系统集成以及数据质量保障等方面,但它并不会取代这些领域的相关工作。正是由于这种交叉性,数据工程师在之前的许多章节中都被提及过。
数据工程的实现范围可以从简单的SQL查询任务延伸到复杂的分布式流处理管道。无论哪种情况,数据工程都会负责管理各种依赖关系、自动化重复性工作、测试变更内容,并监控整个流程的执行过程。
其目标在于让其他专业人士能够使用可靠的数据,而无需重新从各个数据源获取信息。
例如,假设某所大学想要为管理层创建一个仪表板,以便分析每月的交通服务成本。为此,仅仅查询一个数据库是远远不够的——因为出行相关数据可能存储在一个数据库中,而费用或支付信息则可能保存在交通服务提供商的系统中。
此外,各个数据源的更新频率各不相同,且它们使用的数据结构也各不相同。因此,在这种情况下,数据工程的作用就是构建一套流程,来完成以下这些步骤:
- 从每个数据源中提取所需数据。
- 通过规则验证数据的准确性。
进行必要的
数据转换操作,包括修复数据错误、统一日期格式、单位以及标识符等。
将处理后的数据
插入目标系统,如数据仓库或数据湖等。
在数据插入目标系统后,可能还需要对它们进行
汇总或进一步处理,以便后续使用。
数据工程师会与数据架构师、数据管理员以及数据质量分析师一起设计并实施这些流程。他们共同努力,确保最终方案能够满足技术及组织方面的要求。分析工程师、数据分析师、数据科学家以及其他用户都会使用这些处理后的数据。
如果基础设施的规模足够大,那么数据平台工程师、DevOps工程师以及站点可靠性工程师等也会参与其中,协助维护系统的正常运行。
数据管道
数据管道是一系列自动化任务的组合,它负责将数据从一个或多个数据源传输并处理后,存储到一个或多个目标系统中。其中某个任务可能会读取数据、验证其准确性、对数据进行转换、确定数据传输路径,或者将处理结果传递给下一个任务。
在大学环境中,相关系统可以从数据库中提取经过授权的交易记录、行程信息以及学生注册数据,将这些数据转换为统一的目标格式,然后将其加载到数据仓库中。分析人员就可以利用这些整理好的数据来制作报告或使用数据仪表板来进行分析工作了。数据管道可以以批量模式或流式模式运行。全量加载会读取所有选定的数据集,而增量加载则只会处理自某个已知时间点之后新增或发生变更的记录。其中一个非常重要的设计特性是幂等性:安全地重复执行相同的操作不应会导致不必要的数据重复或结果不一致的问题。
其他重要的特性还包括可扩展性——这意味着即使处理大量数据,也不会影响系统的正常运行;同时,还需要具备可追溯性,以便了解数据处理的具体时间以及产生的结果。
数据管道通常由数据工程师设计并实现,但根据数据的最终用途,集成工程师或分析工程师也可能参与其中。
用于实现数据管道的技术种类繁多,具体取决于所使用的基础设施。这些技术可能包括使用SPARQL或SQL进行查询、利用Python、Apache Spark或Apache Flink进行数据转换,甚至还会借助Google Cloud Dataflow等云服务来完成相关任务。
管道编排
在定义了数据管道的任务、输入源、输出结果以及数据来源和目标之后,接下来就需要协调这些组件之间的依赖关系。这种协调工作就是管道编排。
举个例子,假设某个数据管道需要先获取学生的信息和旅行记录,然后再收集支付数据,而这些数据最终都需要被插入到一个只接受同时包含支付信息和学生个人信息的记录的数据仓库中。在这种情况下,在进行数据插入之前,必须先从所有来源获取完整的数据,因为这些数据需要被合并处理。而在其他一些数据管道中,可能可以在数据刚被获取到时就立即将其插入数据库中。
数据管道中的这些依赖关系通常用有向无环图来表示,其中每个节点代表一个任务,而每条连接线则表示它们之间的依赖关系。这种数据结构还可以帮助编排软件精确地判断某个任务何时可以执行,以及根据其执行结果应该采取什么行动。
目前最常用的管道编排技术包括Apache Airflow、Dagster和Prefect,此外还有Azure Data Factory、AWS Step Functions以及Google Cloud Composer等云服务。
数据转换
许多数据管道任务都会对数据的结构、表示方式或内容进行修改,以便后续的处理者能够使用这些处理过的数据。
数据转换操作可能非常简单,比如将公里转换为米、将日期格式统一为某种标准格式,或者重新命名某个字段;而有些转换则更为复杂,需要遵循一些抽象的业务规则。例如,可以将出租车路线信息与学生的课程安排关联起来,从而自动判断某次出行是否与学生必须参加的课堂时间冲突,以此来发现服务使用中的不当行为或存在的问题。某些数据转换操作还可能涉及过滤数据、删除重复项或对数据进行汇总处理。
当数据经过转换处理后,这些数据就会从最初从来源获取的状态转变为可供使用的状态。在这里,我们可以根据数据所经历的转换程度来对其进行分类:
原始数据:这类数据几乎保持了其从来源获取时的原始形式。例如,某个提供者提供的日期字符串05/03/2026,就必须明确其日/月的排列顺序。
中间处理数据:这类数据已经经过验证和标准化,以便进一步进行处理。一旦了解了数据的原始含义,那么这个日期就可以被转换为标准的ISO格式2026-03-05。
整理过的数据:在这一阶段,数据会被进一步丰富和完善,还会与其他数据结合在一起,从而准备好被最终使用。例如,如果前面的日期对应某次旅行信息,那么就可以将其与其他数据结合起来,生成一份包含支付信息在内的完整旅行记录。
转换过程的本质就是将原始数据转化为中间处理数据或整理过的数据。从技术上来说,根据所涉及的系统以及公司的具体决策,可以使用多种技术来实现这些转换。通常会使用Python、R、SQL这类编程语言,或者Apache Spark这样的框架。
工作流程自动化
数据处理管道还可以检查数据的来源是否可用、验证数据的质量、管理审批流程,并发送通知。工作流程自动化能够按所需的顺序协调这些操作,从而确保重复性的工作不会依赖于有人手动执行每一道步骤。
需要明确的是,数据处理管道与工作流程是不同的。数据处理管道描述了数据的传输路径及其转换过程;而工作流程则包括那些并不直接修改数据、但对数据处理的顺利进行至关重要的任务。
例如,当大学从运输公司收到一份文件时,工作流程可以验证该文件的格式,监控数据处理的整个过程,并更新相关的数据追溯工具。
不过,自动化工作流程并不意味着完全消除人工干预。比如,可以设置规则来检测源数据中是否出现了本不应出现的个人信息。如果系统检测到这类信息,数据管理员就需要介入,决定是批准这些变更还是拒绝它们,并采取相应的措施。
最后,工作流程通常是借助Apache Airflow、Dagster或Prefect这样的工具来实现的,同时还会结合CI/CD系统和事件管理工具一起使用。
数据测试
在自动化执行数据处理管道时,即使没有完全消除人工监督的需要,整个流程中仍会存在出现错误的可能性。即便实施得非常完美,也依然有可能发生影响数据质量或导致任务失败的问题。
数据测试旨在检查转换代码以及通过数据处理管道传输的数据本身,这样团队就能在这些问题影响到最终用户之前及时发现并加以解决。
测试套件应当涵盖代码、数据结构、数据本身、依赖关系以及基础设施可能出现的各种真实故障情况。数据测试与数据质量规则存在重叠,但团队可能会出于不同的原因来应用这些规则。
质量规则体现了业务需求或系统性能要求,而流程测试则用于验证某些技术前提条件或预期的处理结果。同样的检查措施可以同时满足这两种目的。
常见的测试类型包括:
单元测试:这类测试用于确认在给定输入条件下,相关代码能否产生正确的输出结果。例如,如果某个转换函数负责将距离从公里转换为米,那么就可以用18、4、6这些数值作为输入进行测试,预期输出结果应为18000、4000、6000。
数据结构测试:这类测试用于确认数据的格式和结构是否适合特定用途。例如,当接收到存储为整数42的学生年龄信息时,数据结构测试会验证该数据确实属于整数类型。
集成测试:这类测试用于确认系统中的各个组件能否按预期进行交互。例如,集成测试可以验证大学的数据库是否能够从学术管理系统中获取数据。
端到端测试:这类测试会执行整个处理流程,以确保最终结果在给定初始数据的情况下是正确的。
一致性测试:这类测试用于比较不同处理阶段中的计数值、总数或控制参数是否一致。例如,如果某个规则规定应保留100条输入记录中的50条,那么测试就会同时验证输出结果的数量以及被排除在外的记录的原因。
性能测试:鉴于某些处理流程的复杂性,性能测试用于评估其在指定时间内、使用现有资源的情况下是否能够顺利完成。
在大学环境中,在部署任何处理流程之前,可以创建包含虚构信息的数据集(即合成数据集)用于测试。通过这种方式,就可以执行所有这些类型的测试,从而确保各项任务都能正确完成,数据在每次转换后都能保持预期的格式和属性,并且整个流程也能在规定的时间内结束。
测试技术的实施与具体的处理流程密切相关。例如,使用Python编写的转换脚本可以采用pytest进行测试,而SQL则适用于一致性测试和数据结构验证。数据工程师通常负责编写大部分流程测试代码,而平台工程师或DevOps工程师则会帮助将这些测试集成到自动化部署环境和运行时环境中。
数据版本控制
由于业务需求的变化、数据源的更新或其他原因,数据管道通常会发生变更。因此,记录数据管道随时间的发展历程至关重要,这样就能追溯其变化过程,尤其是有助于排查故障。
数据版本控制能够保存生成特定结果所需的所有资源的历史记录。根据具体的应用场景,这些资源可能包括转换代码、数据结构、配置信息、参考数据、模型输入数据,以及数据集本身的快照或不同版本。
举个例子,假设某份报告显示某个月花费了10,000美元用于打车,但后来核实后发现实际上这个数字是8,000美元。这种差异可能是由于计算错误,或是用于成本核算的规则发生了变化(比如不再将取消的行程计入费用中)。
为了确定这种情况是否属于错误,通过版本控制可以查看参与该计算的数据管道的早期版本,从而了解数据是如何被计算出来的。
团队通常会使用Git来管理代码、配置文件以及基于文本的数据结构。而像Apache Iceberg、Delta Lake和Apache Hudi这样的表格存储技术,则能够为支持这些技术的表格保存数据快照及变更历史记录。在某些情况下,同时使用这两种工具才能确保数据处理的可重复性。
数据平台运维
一旦数据管道被创建并进行了版本控制,就需要相应的基础设施来运行它们——这些硬件可以安装在大学服务器上,也可以部署在云端。通常还需要存储空间来保存数据,计算资源用于数据转换处理,调度系统用于协调各项任务,此外还需要专门的系统来保障数据和流程的安全性。所有这些组件共同构成了数据平台,也就是执行数据管道及其他业务流程的技术环境。
数据平台本身也需要进行管理和维护,因为它并非完全自主运行的系统,而是需要人工监管的。这种管理活动被称为数据平台运维,它包括一系列旨在确保平台能够安全、稳定、高效地运行数据管道的任务。
其中一些最基础的任务包括:
资源配置与扩展:需要为数据库和平台各组件配置所需的硬件资源数量。
环境管理与隔离:会为测试、开发和生产环境分别创建独立的系统环境,其中生产环境会向最终用户提供服务。
权限控制:为每位工作人员设定合适的操作权限,以防止安全漏洞的发生。
成本控制与优化:监控资源使用情况,避免过度支出,力求以最少的资源消耗来实现所需的服务功能。
例如,一个用于计算出租车月使用成本的流程可能需要连接交通公司的API,对数据进行处理,然后将其存储在数据仓库中。
为了实现这一目标,平台必须提供必要的计算资源来执行数据转换、存储操作,并确保能够与API进行安全连接。因此,合理的平台管理对于保证流程的正常运行至关重要。
通常由数据平台工程师来负责这项工作,他们需要了解平台所依赖的各种服务,比如AWS、Azure、Google Cloud、Databricks或Snowflake等。Docker可用于打包合适的工作负载,Kubernetes可以在复杂情况下对容器进行调度管理,而Terraform则可以实现基础设施的代码化定义。虽然这种代码化方式可以提高工作的可重复性,但它并不能确保服务能够在不同的云服务提供商之间自动迁移。
数据可观测性
即使所有任务都报告成功,数据平台也可能会以隐蔽的方式出现故障。数据可观测性能够帮助团队了解数据的状况以及生成这些数据的系统的运行状态,从而及时发现并处理故障,减少其带来的影响。
可观测性允许我们根据系统产生的各种信号来推断其当前的状态。在数据处理的背景下,这些信号包括数据的更新频率、数据量、数据结构、分布情况、质量结果、数据来源等信息,以及任务的状态、日志记录、各项指标和追踪信息等。
监控机制会检查一些已知的条件,比如某个任务是否已经完成,数据的更新频率或数量是否在预期范围内。基础设施相关的信号(如CPU使用率和内存占用量)有助于分析故障原因,而数据层面的信号则能说明最终接收方是否得到了正确的数据结果。
例如,如果一个数据处理流程本应生成数百条记录,但实际上只产生了几十条,监控系统就能及时发现这种异常。此外,它还能显示在相同时间点获取的其他相关指标信息,比如参与该流程的各个任务的CPU使用情况,从而帮助判断是否存在任务失败的情况,防止错误数据继续被处理。
为了让可观测性结果能够为实际操作提供指导,团队可以为相关的性能指标定义服务水平指标(SLI),并为期望达到的目标设定服务水平目标(SLO)。例如,SLI可以用来衡量最新数据的生成时间间隔,而SLO则可能规定每天有99%的更新内容必须在早上7点之前准备好。当系统运行情况接近这些目标时,警报机制会及时提醒团队。
在可观测性领域,Prometheus和Grafana是应用最为广泛的技术工具,它们主要用于收集和可视化各种指标数据。此外,OpenTelemetry用于管理遥测数据和日志记录,而OpenLineage则能够实时追踪数据的来源路径。
在这种情况下,数据工程师可能会负责实施相应的可观测性机制。不过,这项工作并不总是由他们单独完成,因为SRE团队、平台工程师或数据运营团队也可能会参与其中,共同维护这些机制的正常运行。
数据契约
可观测性有助于检测各种错误,例如任务失败、数据过期、数据量异常以及模式变更未预见等情况。例如,如果某出租车服务提供商在未经通知的情况下将地理坐标从数字形式改为文本形式,那么即使网络连接仍然正常,下游流程也可能会出错。
数据契约通过明确规定生产方与消费方之间的期望值,从而降低这类风险。它们定义了数据的结构与特征,同时也规定了各团队之间如何进行沟通以及版本变更该如何处理。可观测性机制仍能确保这些契约在实际运行过程中得到遵守。
更具体地说,数据契约可以明确规定数据的模式、类型、格式、语义规则、质量标准、所有权信息、交付频率、延迟时间以及变更管理的相关要求。
例如,某运输公司可能会约定,每条行程记录应包含(trip_id, student_reference, provider_vehicle_id, price, origin, destination)这些字段。契约可以规定price应以欧元为单位进行表示,坐标信息应为数值形式的纬度/经度对,同时为student_reference设置隐私保护限制,并且当数据结构发生不兼容的变更时,必须使用新的契约版本。
需要强调的是,数据契约并不仅仅是一种文档形式。还会通过相应的检查机制来验证各项规定是否得到遵守,这样就能确保任何变更都不会影响到数据处理流程——因为变更既可能影响数据的可用性,也可能威胁其安全性。
为了制定数据契约,人们通常会使用JSON Schema、Apache Avro、Protocol Buffers之类的技术来描述数据结构;当然,开放数据契约标准这类标准也同样会被采用。
数据契约的制定和审核工作通常由企业内部的数据工程师和分析工程师来完成,他们会与其他公司的专家进行协作,比如那些了解自身数据来源特性的软件工程师。在更高层面上,数据所有者及数据管理员也会参与其中,以确保数据的语义正确性、质量标准以及使用规范得到满足。
数据运营
数据工程涉及众多人员与各个组成部分。即使当前的系统目前运行正常,但如果各团队在修改数据来源、契约内容、代码、基础设施或质量规则时缺乏协调,系统也可能会变得不可靠。
数据运营是一种旨在提升这种协作效率与交付流程的方法。它的目标是在保证数据质量、安全性和可追溯性的前提下,缩短从业务需求产生到获得可靠数据的整个过程。
数据运营并不是一种特定的技术工具,而是一系列实践方法,包括对代码进行版本控制、自动化测试、在受控环境中审核并部署变更内容,以及监控生产流程等。这些方法借鉴了敏捷开发与软件运维领域的理念,并将其应用于数据管理领域。
例如,假设某所大学开始与一家新的出租车公司合作。第一步可能是制定一份规定数据交付相关条件的数据合同。随后,数据工程师会使用相应的工具通过连接器获取这些数据,并将其存储在Git中。
另外,在将相关系统投入实际应用之前,还需要进行数据和代码测试,以确保其功能正常。部署完成后,还需要通过数据量、数据质量以及响应延迟等指标来监控系统的运行情况。
数据工程师、分析工程师、数据管理员、数据负责人、平台工程师、运维人员以及数据使用者共同参与了DataOps的实施。只有当那些负责数据的生成、操作和使用的人员能够共同承担确保数据可靠交付的责任时,这些实践才能真正发挥作用。
从技术角度来看,DataOps依赖于我们之前讨论过的一些工具,比如用于版本控制的Git,以及用于自动化测试和部署的CI/CD工具等等。然而,它的价值并不取决于某一种具体的工具,而在于人们能否正确地运用这些最佳实践。
其中许多理念实际上源自DevOps。不过DataOps会根据数据处理的特殊需求对这些理念进行调整,从而融入质量控制、语义管理、数据来源追溯以及数据生成者与使用者之间的关系等具体要素。
DevOps
正如我刚才提到的,DataOps借鉴了DevOps中的诸多理念。DevOps是一系列最佳实践的集合,这些实践有助于协调软件的开发与系统的部署工作,其最终目标就是确保各项变更能够以自动化且可靠的方式得到测试、部署和维护。
其中最重要的实践包括持续集成,它要求将每一处代码更改都纳入版本控制系统中,从而自动触发测试流程。接下来是持续交付或持续部署,这些机制能够确保变更在受控环境下自动且有序地应用于不同的环境之中。最后还有基础设施即代码,这一理念允许人们通过编程方式定义基础设施组件,从而方便对其进行版本管理并在各种云平台或服务器上进行部署。
例如,当数据工程师修改了用于从出租车公司获取数据的连接器时,这个更改会被保存到Git中,然后CI系统会自动运行相应的测试。如果测试通过,新的软件版本就会被生成,并在测试环境中自动部署,以便继续验证其功能是否正常,直到最终将其部署到生产环境中。 常用的技术包括 GitHub Actions、GitLab CI/CD 或 Jenkins,这些工具可用于自动化测试和部署流程。Docker 也被广泛用于软件打包,而 Terraform 或 OpenTofu 则用于定义基础设施架构。当系统的规模和复杂性要求时,Kubernetes 也可以用来管理容器。
DevOps工程师、平台工程师以及系统运维工程师负责实施和维护这些技术机制,而数据工程师则利用它们来部署自己的数据处理流程。两者之间的主要区别在于:DevOps更侧重于软件和基础设施的交付与运营管理,而 DataOps还会关注数据的质量、语义、来源追溯性以及可用性等特定方面。
数据仓库与商业智能
企业会通过各种数据处理流程来收集、整合并转换数据,然后将其存储在适合特定工作负载要求的系统中。操作型数据库则为维持日常业务运转所需的应用程序和交易提供支持。
数据分析通常需要整合历史数据、使用稳定的数据定义,并执行能够扫描大量记录的查询操作。数据仓库和数据湖等专用平台正好能满足这些需求。数据仓库与商业智能使人们能够获取经过规范管理的分析数据,从而利用这些数据来做出决策。
这两个概念是相互关联的。数据仓库指的是用于整合来自不同来源的历史数据,以便进行重复性分析工作的系统设计及应用。
操作型数据分析与分析型数据分析在工作优先级和数据访问方式上存在差异。虽然有些平台能够同时支持这两种类型的数据处理需求,但团队在面对性能、数据更新频率、数据一致性以及成本等方面的权衡时,仍需做出选择。将这两类数据处理任务分开处理,通常有助于保障日常业务的正常运行,并让分析人员能够使用专为他们的查询需求设计的分析模型。
商业智能涉及用于数据查询、分析及呈现的各种实践和技术,这些技术为决策制定提供了支持。虽然商业智能工具也可以使用其他数据来源,但数据仓库往往能为商业智能分析提供规范化的数据基础。
例如,一所大学可能会在数据仓库中整合学生的出行数据和财务数据。分析人员可以通过对比不同供应商的服务成本、使用情况、出席率以及预算等信息,来评估该校提供的交通服务是否具有可持续性,并估算短期内的相关支出成本。
此外,为了进行这些数据分析、构建数据看板,并最终做出决策,所使用的数据必须具有高质量,同时必须得到妥善保护,并且其来源信息也需要得到清晰的记录与维护。在这些方面出现的任何问题都可能影响决策的制定过程。分析数据存储系统
分析型工作负载通常需要扫描较长的时间跨度,整合来自多个来源的数据,并对大量记录进行汇总处理。专为操作事务设计的存储系统可能并不适合用于执行这类重复性操作。
分析数据存储系统就是专门为分析查询、数据转换及汇总操作而设计的。这些系统同样需要具备安全性控制机制和数据一致性保障措施,但其性能优化方向通常更侧重于在大型数据集上执行扫描和计算任务,而非处理高频发生的行级事务。
分析数据存储系统最典型的代表就是数据仓库——它能够以稳定且可扩展的方式存储数据,从而确保即使在数据量不断增加的情况下,也能重复使用相同的分析流程。
不过,这并不是唯一的解决方案。数据湖也同样适用于这类用途,而数据集市则提供了规模较小的分析环境(通常只是数据仓库中的一部分数据),专门用于满足特定部门或业务领域的需求。
例如,一所大学可以创建一个数据集市,其中存储与学生出行情况相关的信息以及分析服务成本所需的有限财务数据,同时确保不会泄露学生的其他私人信息。这个数据集市应该像其他分析资源一样,配备相应的血缘关系追踪机制、安全控制措施、质量保障体系及审计功能。
目前最常用于实现这些系统的平台包括Snowflake、Google BigQuery、Amazon Redshift、Microsoft Fabric Data Warehouse以及Databricks SQL。这些平台的設计与实施工作由分析架构师或数据架构师负责;数据工程师则负责维护为这些系统提供数据的信息管道;而分析开发人员则会处理数据入库后的转换操作,以便后续的分析工作能够顺利进行。
在管理和维护层面,还有数据仓库管理员或平台工程师>负责监控系统的运行性能、管理用户权限以及控制相关平台的成本开支。
基本概念与技术细节
根据所使用的平台和层次结构的不同,分析数据存储系统可能会以原始数据的形式保存信息,也可能会将其组织成特定的数据模型。数据湖通常会在早期阶段保留原始数据格式,而经过整理的数据层或数据仓库则会采用更为结构化的数据库模式。
一种常见的分析方法是前面提到过的维度建模。这种方法会将信息分为事实数据和维度数据两类:事实数据用于记录具体的事件,而维度数据则为过滤、分组和比较操作提供必要的背景信息。
一个特别重要的设计决策是粒度,也就是事实表中每一行所代表的具体含义。团队在选择维度与度量指标之前,就应该明确这一概念,这样才能确保后续的数据聚合操作能够准确进行。
例如,行程事实表的粒度可能是“一次完成的行程”。如果某学生在同一天进行了两次行程,那么该事实表就会记录下两条记录,每条记录都会包含费用、距离、耗时以及日期等信息。学校可以按月份对这些记录进行求和分析;但绝对不能在同一事实表中添加反映“月度总计”信息的记录,因为这些记录的粒度不同,会导致数据重复计算。
一旦确定了粒度,接下来就应该根据描述事实内容的背景信息以及预期要执行的分析需求来选择相应的维度。一个实用的判断方法就是思考:对于每一条事实记录来说,涉及的是谁、发生了什么、在何时何地发生的、又是如何发生的?例如,如果每一行记录都代表一次行程,那么就可以选择“学生”“日期”“交通服务提供者”“出发地”和“目的地”等维度,因为这些维度都能为该行程提供独特的信息。
通过这些维度,我们可以分析行程发生的地理位置、哪些交通公司提供的服务更受欢迎等等。这样,所选择的维度就能为我们分析事实数据提供有用的视角。
这种数据建模工作通常由分析工程师或数据模型设计师与领域专家(如数据管理员)共同完成。之后,数据工程师会负责实现数据导入及转换操作,使数据能够适配到每个系统的具体最终数据模型中。
指标与关键绩效指标
在维度模型中,事实记录可以被视作由数值组成的行,这些数值被称为度量指标。这些度量指标有助于我们了解某段时间内特定事件的发展情况,但数据分析的目的通常是为了回答涉及某一时间段内所有事件的问题。
团队会将各种度量指标合并成可重复计算的指标,比如总数、比率、平均值和百分位数等。当某个指标与重要的业务目标相关联,并且能够帮助我们判断组织是否实现了这一目标时,它就变成了关键绩效指标。以下是一些例子:
概念
含义
示例
度量指标
记录在事实数据中的数值
某次行程的费用为18欧元
指标
针对一组度量指标进行重复计算得出的结果
月度交通费用 = 当月所有已完成行程的费用之和
关键绩效指标
与业务目标相关联的指标
月度移动出行预算消耗情况,其目标是确保不超过分配的预算额度
显而易见,并非所有的指标都属于关键绩效指标。例如,某个用于反映某个月内出行次数的指标,虽然有助于了解交通服务的使用情况,但只有当存在需要量化这一出行次数的业务目标时,它才会被视作关键绩效指标。
关键绩效指标通常会被用于数据看板和可视化展示中,不过它们一般不会单独出现。当将多个关键绩效指标及其当前数值收集起来,并与既定目标进行对比时,这种汇总方式就被称为“记分卡”。
尽管这两个概念之间存在关联,但记分卡与数据看板的作用是不同的:记分卡的目的是用来判断各项目标是否已经实现,而数据看板则有助于了解组织当前正在发生什么以及原因何在。
同一个指标可能会同时出现在数据看板、记分卡、报告以及应用程序接口中,因此团队需要为这一指标制定一个可重复使用的定义。其文档应包含以下内容:
该指标的名称、用途以及负责它的业务部门。
用于计算该指标数值的公式、数据来源及其详细程度。
该指标的值所使用的单位、统计的时间周期、时区,以及数据更新的频率。
相关的过滤规则,比如是否在计算过程中排除被取消的行程。
如果这是一个关键绩效指标,还需要记录制定这一指标的具体业务目标。
实际上,指标和关键绩效指标的定义工作主要由业务负责人、数据所有者以及数据管理员来完成;而它们的具体实施工作则由分析工程师和商业智能开发人员负责;最终,这些指标的结果会被数据分析师等其他专业人士所使用。
语义层
正如我之前所说,对各种指标进行文档化记录的目的是为了确保人们能够准确理解它们的含义及计算方法。然而,这并不能保证所有系统都会严格遵守这些文档规定。
例如,某个系统在计算月度成本时可能会排除被取消的行程,而另一个系统却可能不小心将它们包含在内。在这两种情况下,虽然使用的是同一个“指标名称”,但计算结果却截然不同。
语义层这一概念正是为了解决这类问题而提出的。它通过将可重复使用的业务定义集中存储在数据存储系统与数据使用工具之间,使得人们无需再直接从数据库表结构中推导出各种计算逻辑。例如,“行程”“学生”或“课程”这样的概念就可以被直接使用,而无需每个数据使用者都重新编写相应的计算代码。
这样一来,构成各个指标的计算公式和过滤规则就被统一地存储在语义层中,而不是由不同的分析师在数据库、数据仓库或其他系统中分别编写代码来实现。这种机制起到了中介作用:它能够将用业务语言表达的指标计算逻辑转化为特定系统所需的执行代码,从而便于日后对指标进行修改,同时也便于在不同系统之间实现数据共享与迁移。
例如,在数据仓库中,可能会存在一个“行程”事实表、一个“日期”维度,以及每个事实记录中的成本数值。在这里,语义层会定义诸如“行程”和“成本”这样的概念,而这些概念的计算方式会被以某种方式“映射”到用于实现各个系统的具体技术上。
在这种情况下,“每月总成本”这一指标的计算可以在语义层中进行定义;系统内部会将这一定义转化为SQL操作或相应的技术手段,从而按月份对行程进行分组,并汇总各组数据中的成本数值。
指标的定义与其在语义层中的实现方式之间的主要区别在于:指标的定义仅说明了该指标是什么以及其计算方法,而在语义层中,这些定义会被转化成特定技术能够执行的操作步骤。
因此,多个仪表板或报告都可以重用在语义层中定义的相同逻辑,因为有时需要对不同系统中的数据进行处理和分析。
用于实现语义层的工具包括Power BI语义模型、LookML、dbt语义层以及Cube等。分析工程师和BI开发人员通常会在业务负责人和分析师的参与下构建并维护这些定义。
报告与仪表板
在将“分析数据存储”系统投入实际使用并确定了一些指标或关键绩效指标之后,下一步就是创建能够向最终用户、专业人士或高管展示分析结果的商业智能产品。
最常见的这类产品就是报告和仪表板,不过它们并不是唯一的形式——分析结果还可以被用来生成可视化图表,或者用于记录决策过程等内容。
让我们进一步了解这两种产品的区别:
报告是一种详细、有条理地呈现特定主题和时间段内信息的文档。它可能包含图表、指标以及解释性文字。报告可以定期以PDF等静态格式生成,也可以设计成交互式形式,让用户能够筛选或操作其中展示的数据。
例如,一所大学可能会编制一份月度报告,其中会按服务提供者划分交通服务的成本,同时列出被取消的行程、使用该服务的学生人数等信息。
仪表板则是一种汇集了最相关指标和关键绩效指标的视图,用于实时监控某种情况。仪表板通常包含图表等视觉元素,这些内容的更新频率通常比报告更高。
例如,行政管理部门使用的仪表板可以显示已消耗的预算、注册学生的数量以及出勤趋势;如果该仪表板是交互式的,用户还可以根据培训项目来筛选相关数据。
在创建仪表板时,有一些最佳实践可以遵循,以确保这些仪表板能够发挥实际作用。例如,你应该只展示少数几个指标,并且这些指标必须与仪表板的用途密切相关。此外,选择合适的可视化方式并不仅仅是为了美观,这些图表应当能够帮助人们理解所呈现的信息,其设计也必须符合相关最佳实践。
一般来说,当需要定期监控一小部分指标并迅速发现其中的变化或偏差时,就会使用仪表板;而当你需要对某个主题进行更深入的分析时,则会使用报告。不过,这两种工具其实可以相互补充。
例如,管理部门可以使用仪表板来监测运输费用的增加情况,然后通过查阅月度报告来确定是哪些供应商、路线或时间段导致了这一现象。
在创建这类工具时,最常用的技术包括Microsoft Power BI、Tableau、Looker、Apache Superset和Metabase。这些技术主要由商业智能开发人员使用,不过商业智能管理员也会参与管理这些工具的开发环境。最终,商业智能分析师可以解读这些分析结果,在某些情况下,他们也会与商业智能开发人员一起合作编写报告或设计仪表板。
自助式分析
数据分析过程会生成诸如仪表板或报告之类的工具,这些工具会以结构化的方式呈现特定信息。但有时,人们可能需要对这些工具的用途进行修改。
例如,财务部门可能会创建一个专门用于监控学校为出租车服务分配的预算的仪表板,但某个硕士项目的负责人可能需要将这些交通数据与该培训项目的出勤记录进行对比分析,以确定这项服务是否真的带来了好处——这种特定的需求是原始仪表板所无法满足的。
协调人可以要求技术团队修改仪表板,但这样一来,每一个小改动都可能进入开发流程。而自助式分析则允许授权用户自主探索受管控的数据,并创建合适的分析报告,而无需在每一步都依赖技术专家的帮助。
这种做法依赖于我们之前讨论过的一些要素,比如用于存储各项指标的语义层、能够帮助用户快速查找所需信息的数据目录,以及用于统一商业概念含义的业务术语表。这些工具被团队成员们用来独立创建可视化图表和报告,不过由于现有的隐私政策限制,他们可能无法访问所有类型的数据。正因为如此,这种分析方式才被称为“受管理的自助式分析”。
例如,如果某个仪表板显示运输费用有所增加,负责协调工作的主管可以使用语义层为该项目的数据设置筛选条件。这样,语义层就能确保使用官方规定的成本计算标准,同时权限设置也能防止访问其他项目的数据或不必要的个人信息。
需要指出的是,原始的仪表板并不会被直接修改,而是由协调者根据需要进行更新,创建新的仪表板。
在实际应用中,这种方法的可行性主要得益于分析工程师、商业智能开发人员和商业智能管理员之间的紧密协作。最终使用这一功能的用户主要是数据分析师、业务分析师以及企业管理人员。
大数据
数据生命周期会贯穿一系列系统和流程。数据首先被输入系统,然后进行传输、存储和处理,最终到达需要使用这些数据的部门或个人手中。
对于工作量适中的情况,相对简单的架构往往能够满足性能、可靠性及成本方面的要求。然而,随着组织规模的扩大,可能就需要存储更多的数据,更频繁地处理各种事件,并支持更多种类型的 数据格式和应用场景。
最初在单台机器上运行的数据库,可以通过增加CPU、内存或存储空间来实现纵向扩展。当工作负载或系统容错需求达到一定程度时,就需要通过多台机器进行横向扩展,不过这种复杂性的增加必须是出于实际需要的考虑。
大数据指的是那些数据量巨大、处理速度快、种类繁多,或者其组合方式超出了传统工具所能处理的范围的数据集。挑战并不在于数据量的庞大,而在于如何在这样的规模下保证处理速度、可靠性和成本控制。
在讨论大数据时,人们可能会认为存在一个明确的界限,超过这个界限的数据就属于大数据。但实际上,并非如此,因为这个界限取决于当前的基础设施、目标处理速度、团队为管理这些数据愿意承担的成本,以及数据结构的复杂性等因素。
只有当现有基础设施无法满足组织在性能、可靠性或成本方面的要求时,才应该考虑采用大数据解决方案。虽然分布式架构可能会带来一些好处,但也会增加运营管理的复杂性,因此这些好处必须能够证明采取这种方案的必要性。
例如,一所大学由于院系规模的扩大或引入在线课程,其学生人数可能会从1000人增加到10万人。在这种情况下,数据库必须能够存储所有这些学生的个人信息,以及他们在使用虚拟校园等各种服务与平台时所产生的数据,而且存储速度必须足够快,以确保服务的可用性和质量不会受到影响。
大数据需要在更大规模上运用各种数据管理技术。大数据工程师通常是指那些专门从事分布式存储与处理工作的数据工程师。他们与负责设计解决方案的数据架构师以及负责运营数据平台的工程师们共同协作。
三大特征:数据量、处理速度和数据多样性
虽然并没有一个统一的标准来界定什么是大数据,但“数据量”、“处理速度”和“数据多样性”这三个要素为人们提供了有用的参考依据。这些并不是每个项目都必须满足的条件,而是指那些会使得现有基础设施难以应对的数据挑战。
数据量指的是需要被存储和处理的总数据量。这里面临的首要问题是:数据会占用大量的存储空间,因此当数据量过大时,某些系统可能无法有效处理这些数据。此外,随着数据量的增加,各种管理流程也会变得效率更低,因为所有数据都需要经过相应的处理流程才能被存储或使用。
- 举例:以学生产生的数据为例:学生人数越多,需要存储和处理的数据量也就越大。每个学生都会生成诸如登录记录之类的数据,如果数据量过大,这些数据就会占用大量的存储空间,并消耗大量的计算资源。
处理速度指的是数据到达、发生变化以及被用户获取的速度。
- 举例:对于打车服务来说,系统必须每隔几秒钟就更新一次车辆的位置和状态信息,这样用户才能实时了解到附近有哪些可用的出租车。因此,确保数据能够快速被获取对于提供良好的用户体验至关重要。
数据多样性指的是数据的种类、结构或格式的复杂性。例如,学术数据库可能使用关系型数据库模型来存储学生信息,而虚拟校园则可能会用半结构化的JSON文档来记录各种数据;还有一些基于图结构的数据库,它们会利用图表来表示学生、司机和地点之间的关系,从而优化交通路线规划。
- 举例:学术数据库可以使用关系型模型将学生的注册信息和个人信息存储在表格中,而虚拟校园则可能使用半结构化的JSON文档来记录各种活动日志;图结构数据库则可以通过图表来展示学生、司机和地点之间的关系,从而帮助优化交通路线。
数据量的增加会直接影响存储、传输和处理成本。因此,在分配数据处理任务之前,团队可以对数据模型、数据分区方式、查询逻辑或数据保留策略进行优化。当单台计算机的性能无法满足需求时,水平扩展就成了一个可行的解决方案。
并非所有数据都需要实时处理。实时的行程状态更新可能只需要几秒钟的时间,而历史学费支付记录则可以按每日固定的时间间隔进行更新。所需的延迟时长应当由用户需求和业务实际需要来决定,而不是出于将所有数据处理流程都设置为实时的考虑。
最后,数据的多样性是其最重要的特性之一,因为这种多样性决定了组织内部数据集的复杂性。由于存在结构、格式及表现形式各异的数据,因此针对每种不同类型的数据,采取特定的处理技术就显得十分必要,这样才能确保对这些数据的高效管理。
这些通常被认为是大数据所具备的特性。但同样重要的是,也要关注其他重要的特性,比如数据的真实性,即数据的可靠性;以及数据的价值等其他方面。
大数据架构
当“三大数据特征”超出了“传统”解决方案的处理能力时,就有几种方法可以提升基础设施的能力以满足这些需求。但首先,有必要明确什么是基础设施。
基础设施是指那些支撑组织应用程序和数据系统运行的计算、存储、网络以及基础软件资源。
架构则描述了各组成部分是如何利用这些基础设施来满足特定需求的。它规定了系统运行所在的地点,存储与处理任务是如何分布的,以及数据从生成点到最终被使用的过程中所经过的路径。
因此,如果“三大数据特征”使得现有的解决方案无法正常运作,那么可能就需要对它的架构进行修改。如前所述,应对数据量增加或处理速度提升的一种方法是垂直扩展,即通过升级硬件为每台机器提供更多资源。但这种扩展方式存在极限,因此才有了水平扩展这一概念——通过增加更多的机器来分散存储和处理任务。
另一种提高处理速度的方法是在多台机器上并行执行各种处理流程,这就是所谓的大规模并行处理技术。
有很多方法可以提升基础设施的能力,尤其是在需要以更快的速度处理更多数据的情况下。然而,对于种类繁多的数据而言,如果没有成熟的通用处理技术,对其进行有效管理往往是一项挑战,尽管数据分布策略在一定程度上可以帮助缓解这一问题。
要更好地理解什么是架构,可以将它想象成由多个层次构成的系统,其中每一层都包含某些特定的组成部分,而这些部分共同决定了数据在组织内部整个生命周期中所经过的路径。
层次
功能
示例
使用的技术
数据来源
数据的获取或生成地点
出租车公司的API及支付平台
REST API、PostgreSQL、物联网传感器
数据导入
将数据从来源处传输到平台上
接收校园活动信息以及提供者的行程更新
Apache Kafka、Apache Airflow
数据存储
持久化存储数据
保存各类事件记录、文件以及经过整理的分析数据表
Amazon S3、Google Cloud Storage
数据处理
根据数据用途对数据进行清洗和转换
在数据流程中删除重复的行程记录
Apache Spark、Apache Flink
信息展示
提供可供查询的信息
数据仓库会呈现整合后的行程信息及相关费用
Snowflake、Google BigQuery
数据应用
利用这些信息进行决策或实现其他用途
仪表盘可显示交通服务的月度费用情况
Power BI、Tableau、Jupyter
任何架构的另一个重要方面在于,其各个层级都必须实施安全性、数据追溯机制以及可观测性措施,同时还要确保数据的隐私性。
想象一下,有学生通过虚拟校园系统叫了一辆出租车。此时,该架构必须能够保护这一操作并对其进行追踪。通过流处理方式,可以在几秒钟内更新门户网站上的行程状态;而之后再通过批处理流程来整理相关数据,以便进行成本分析。
这种处理速度上的差异,正是调整架构的一种方式——这样就能确保某些关键功能具备所需的处理速度,同时也能让那些不需要实时处理的分析任务能够处理更大的数据量。
最终,架构是由数据架构师或大数据架构师设计的,而数据工程师、流处理工程师或软件工程师则负责将其实现。其维护工作则由数据平台工程师、云工程师以及系统运维人员来完成。
大数据存储与处理
在设计好架构之后,就需要将其各个组成部分付诸实施,其中一些组件专门用于以所需规模存储和处理数据。一方面,存储系统的作用是确保数据的持久性、安全性以及可访问性;另一方面,处理系统则利用计算资源对数据进行转换与分析。
大学可能会将经过授权的虚拟校园事件记录、出勤信息以及行程数据保存数年之久,因此这就产生了巨大的存储需求。而数据处理的需求则可能变化较大,在报告期或重大学术活动期间,处理量会达到高峰。
通过将存储功能与处理功能分开来看,如果我们需要设计用于在基础设施中存储数据的系统,那么可能会遇到以下几种解决方案:
分布式数据库:这类数据库被部署在多台机器上运行,所使用的技术包括Cassandra或DynamoDB等。
对象存储系统:这些系统专门用于存储大量数据,数据以独立对象的形式进行存储,常用的工具包括Amazon S3、Azure Blob Storage、Google Cloud Storage或MinIO等。
搜索引擎:这类系统专门用于快速索引和查询日志、文本以及其他类型的半结构化数据,所使用的技术包括Elasticsearch或OpenSearch等。
分布式文件系统:这些系统利用HDFS或CephFS等技术,在多台机器上存储并分发文件。
另一方面,基础设施中的数据处理方式也可以根据所采用的技术手段来进行区分,而这些技术手段的选择往往取决于数据量和处理速度的要求。
批处理:在这种处理方式中,数据会随着时间的推移被逐步积累起来,然后定期以批量形式进行处理。例如,可以使用Apache Spark来实现这一机制,它能够将数据转换、清洗等操作分配到多台机器上同时执行。
流式处理:对于在数据处理流程开始时产生的所有数据,这种处理方式会持续对其进行实时处理,因此当需要立即获得处理结果时,这种方式非常适用。在这种情况下,可以使用Apache Flink或Spark Structured Streaming等技术。
分布式查询与处理:通过让多台机器并行执行操作,这种方式能够有效分析海量数据。SQL是最常用的查询语言,Trino和Spark SQL等工具都支持使用SQL进行数据处理。除此之外,这些系统通常还提供Python、Java或Scala等编程语言编写的API,并提供了DataFrame这样的数据结构抽象层,从而为实现复杂的数据转换或自定义处理逻辑提供了更大的灵活性。
以这种架构为例,该大学可以使用Kafka来接收由虚拟校园或交通公司生成的事件,而Flink则可以对这些事件进行处理,从而确保终端用户所使用的应用程序中能够实时显示每趟旅行的最新状态。随后,利用Spark这些数据还可以被进一步处理并整合到数据仓库中,进而通过SQL语句进行查询。
在实际应用中,负责实现和优化这些存储与处理系统的核心角色是大数据工程师或专业的数据工程师。他们需要使用Cassandra、Amazon S3或HDFS等技术,决定如何利用Spark来执行相关任务,并确保系统具备足够的性能。
另一方面,数据平台工程师、云工程师以及运维工程师则负责维护基础设施的稳定性、可用性及弹性。
大数据分析
在大数据领域,除了需要存储海量且种类繁多的数据,并以极高的速度进行实时处理外,这些数据还必须被转化为信息、知识,最终产生实际价值。因此,数据处理主要指的是对数据进行各种转换操作,以便于存储、清理数据或保持其质量。
不过,在数据存储之后,还会进一步运用处理技术来计算统计结果或分析数据本身。这就是大数据分析的作用——这一领域专门致力于通过分析大量数据,将信息转化为实际价值。
只有当数据分析的工作量规模或数据流动特性需要借助分布式架构或其他专业基础设施才能完成时,这种分析才属于大数据范畴。进行数据分析并不一定需要先进的机器学习技术,而且仅仅使用可扩展的云平台,并不能使一项普通的分析任务变成“大数据分析”项目。
基于这样的技术基础,根据具体的分析需求,你可以采用以下几种基本的分析方法:
描述性分析:这类分析侧重于运用各种技术来探究数据,从而了解已经发生的情况。例如,可以通过这些分析手段计算出共进行了多少次旅行、这些旅行的总成本是多少,以及每个月有多少名学生使用了这项服务。
诊断性分析:这种分析的目的是弄清楚某个结果产生的原因。在大学环境中,可以利用这类分析来研究哪些供应商提供的时间段会导致交通服务成本的增加。
预测性分析:通过分析历史数据,可以对未来可能发生的情况进行预测。例如,可以预估下学期会收到多少份入学申请。
规范性分析:这类分析会将分析结果转化为具体的建议或方案。比如,在优化出租车队列分配或重新安排月度预算时,这类分析就能提供有价值的参考意见,从而确保尽可能多的学生能够享受到相关服务。
在大数据环境中,分析可以根据各个流程的需求,采用批量处理或流式处理的方式来进行。例如,使用Apache Spark可以定期计算出租车费用的变化情况以及课堂出勤率;而使用Flink则可以对实时发生的交易数据进行分析,一旦需求量超过某个阈值,就能立即发出警报。
要想让分析过程真正发挥作用,首先需要明确通过这些分析想要得到的答案,以及预期能够因此产生的价值,也就是这些分析结果将用于做出哪些决策。接下来,就需要挑选并准备所需的数据,确保其质量足以满足分析需求。分析完成后,结果可以通过仪表板、报告、警报、API或预测模型等方式进行呈现。
需要注意的是,数据量越大,并不总能带来“更准确”的结论或更多的价值。例如,如果使用出租车服务的学生出勤率更高,也不能直接据此认为交通便利是导致这一现象的原因,因为这些学生可能本来就参加了更多面对面的课程,或者存在其他差异。
因此,除了要处理海量信息之外,正确解读分析结果也同样至关重要。在这个例子中,我们需要明白:相关性并不总是意味着因果关系,但这也不是分析过程中唯一可能出现的问题。
数据工程师负责构建和维护数据分析流程及环境;数据分析师则使用SQL、Trino、Spark SQL、Power BI、Tableau等工具进行各种分析工作,这些分析通常具有描述性或诊断性性质;数据科学家则利用Python、R、Jupyter、Spark或MLlib等工具来进行统计建模、实验验证、预测分析及优化工作。
商业智能开发人员会将经过处理的指标和分析结果转化为报告或仪表板;机器学习工程师则负责模型的训练、部署和运行管理;领域专家、数据所有者及数据管理员则会协助团队负责任地解读和使用这些分析结果。
分析科学与数据科学
各组织通过数据分析来了解当前的情况、支持决策制定、验证各种想法,并建立相应的模型。这是他们将数据转化为知识与价值的主要途径之一。
分析技术与数据科学是相互交叉、相辅相成的领域。分析技术通常侧重于运用描述性、诊断性、预测性或规范性的方法来回答特定的问题。在大学里,分析师可能会研究过去一个月内的出勤情况,进而探究哪些变化与成绩下降之间存在关联。
数据科学通常通过统计学、机器学习、计算方法以及领域知识来处理那些定义不明确或需要依赖复杂模型来解决的问题。它能够揭示数据中的规律、估算各种效应、对观测数据进行分类,或者进行预测分析。例如,大学可以利用这些技术来预测未来六个月的交通需求。
实际上,数据分析和数据挖掘都是利用数据来实现特定目标的,而两者之间的界限往往因组织而异。无论是数据分析还是数据挖掘,都需要使用规范、高质量的数据,并且要清楚地了解这些分析结果将用于支持哪些决策。
任何分析工作都应从明确的问题开始。大学可能会想知道:提供交通便利是否真的能提高学生的出勤率,又或者下周学生们会请求多少次乘车服务。对于第一个问题,需要设计严谨的因果分析模型;而对于第二个问题,则需要运用预测模型来得到答案。
在明确了分析目标之后,接下来就需要制定一套完整的分析流程,这个流程涵盖了从问题提出到最终生成分析结果的全部环节——无论是制作数据看板、编写报告,还是形成有助于决策的知识体系。
在这个分析过程中,通常会首先构建一个分析数据集,作为后续分析的基础。然后会对这个数据集进行深入研究,以便了解其中的数据特征、用数学模型对数据进行建模,或者对其进行必要的处理。换句话说,分析工作总是从选择适合具体业务需求的技术方法开始的。
如果需要训练机器学习模型,还需要对数据集进行特定的预处理,以确保其能够被用于模型训练,从而被认为是“适合模型训练”的数据集。训练完成后,分析结果可以通过报告、应用程序编程接口(API)的形式呈现出来,或者直接将训练好的模型部署到实际应用系统中来进行预测等操作。
在这个过程中,不同的角色会共同协作:数据分析师负责解决与数据分析相关的问题;数据科学家则负责提出假设并开发模型来解释数据或进行预测;分析工程师专注于构建分析数据集,而数据工程师则负责搭建提供这些数据集所需的基础设施和数据处理流程。
当需要将机器学习模型集成到某个应用程序中时,机器学习工程师也会参与其中。
分析数据集
分析数据集是为特定的分析目的而专门准备的数据集合。它并不是随意收集的各种文件,而是具有明确的结构、数据粒度、样本规模、时间范围、质量标准以及数据来源等信息。团队会根据分析需求有选择地提取相关数据,而不是简单地包含所有可用的字段。
以大学为例,如果想研究出租车服务是否有助于提高学生的出勤率,就可以构建一个数据集,其中包含那些使用过出租车服务和没有使用过出租车服务的学生的出行记录以及他们的出勤情况,这样就能对比这两组学生的出勤数据了。另一方面,如果要预测交通需求,那么构建一个将出行历史与课程安排、教学日历或天气状况相结合的新数据集会更为合适。因此,尽管这两组数据可能会重用一些数据来源,但它们的结构、详细程度以及质量标准会有所不同,因为每一组数据都必须根据特定的业务需求来进行设计。
数据集的设计工作应由数据分析师或数据科学家负责,而进行数据转换及其他构建数据集所需流程的工作则由分析工程师来完成。不过,如果需要整合来自多个来源的数据,那么数据工程师就会承担这项任务,正如我们前面所提到的那样。
这些数据集通常会以表格的形式存储在数据仓库或数据湖中,或者以Apache Parquet这类列式文件的形式存在。
探索性数据分析
大多数分析工作都会包含探索性数据分析,因为刚开始时,人们很少能完全理解一个新的数据集。
在团队得出结论或建立模型之前,探索性数据分析会先研究数据集的分布情况、存在哪些模式、各种数据之间有什么关联,以及哪些数值是不正常的。此外,它还会检查数据的类型、缺失值的情况、重复数据的存在,分析数据的质量问题,以及可能存在的偏差来源。
在探索性数据分析的技术手段中,描述性统计分析和制作可视化图表通常是关键步骤。例如,数据分析师可以统计每天有多少人完成了缴费操作,比较不同的支付方式,分析在哪些时间段内缴费事件发生得更加频繁。通过这些分析,他们可以发现其中某些支付平台或银行是否在某个环节导致了缴费问题。
他们还可能会观察到一些现象,比如那些提前完成缴费的学生往往取得了更好的学习成绩,但这种相关性并不能证明提前缴费就是导致这一结果的根本原因。不过,探索性数据分析确实有助于提出这样的假设,并找出其他可能的解释因素,但它本身并不能确定因果关系是否成立。
无论是数据分析师还是数据科学家都会进行探索性数据分析,只不过他们的分析方法有所不同:分析师们主要是通过分析来发现问题,而数据科学家则通过探索数据来决定该如何对数据进行建模。
他们用于探索性数据分析的工具非常多样,从用于查询数据集的SQL语言,到便于记录Python代码的Jupyter笔记本,再到pandas、NumPy、SciPy、Matplotlib和Seaborn等Python库。R、Julia或Scala等其他编程语言也同样可用于数据探索。
特征工程
在分析数据之后,通常会根据具体的使用目的对数据进行相应的处理,以使其更具实用性。如果我们将数据视为一组记录,而每条记录都包含一系列被称为“特征”的属性值,那么这些特征在用于训练机器学习模型或帮助理解数据时,其作用可能会有所不同。
例如,如果我们拥有的学生记录格式为“(姓名、电子邮件、1)”,那么其中那个值为1的特征,除非它具有某种实际意义且始终取值为1,否则对分析来说并没有任何帮助。在这种情况下,最好删除这个特征,只保留那些真正有用的特征。
“特征工程”这一技术旨在对模型输入数据进行处理或转换,使其能够更有效地反映问题实质。常用的方法包括:对于那些对数据规模敏感的算法,可以使用“规范化”或“标准化”来调整数据的范围;对于存在缺失值的字段,可以采用“数据填充”技术来补充这些值;此外,还需要对分类变量进行编码处理,并将连续型数据离散化。在选择具体的处理方法时,应始终考虑业务需求、模型类型以及评估方案,而不是盲目遵循某种固定的流程。
举个例子,假设某所大学想要预测学生是否能够完成硕士学业。为此,他们收集了一组分析数据,其中包含学生的出勤情况、成绩以及访问虚拟校园的次数等特征信息,这些数据随后将被用来训练机器学习模型来进行预测。
对于那些对特征数值范围敏感的模型来说,“规范化”处理可能会非常有用。因为成绩的范围通常是0到10分,而访问次数的范围可能高达数千次,通过规范化处理,可以将这些数据的范围统一调整到[0, 1]区间内,从而使得模型能够更准确地进行预测。当然,也有可能有其他更适合的算法或方法来处理这类数据。
团队还需要剔除那些在预测时无法获取的信息。如果某个特征能够直接或间接地预判结果,那么使用这种特征进行预测可能会导致评估结果显得不真实、过于理想化。
这些数据转换工作通常由“数据科学家”、“分析工程师”、“数据工程师”或“机器学习工程师”来负责完成。他们会使用SQL、Apache Spark或Python等技术来进行这些操作,不过也有可能使用其他工具或方法。
## 实验验证
许多数据分析过程实际上都是在测试某种假设。如果团队认为某个特征对模型的效果没有提升,他们可以明确地提出这一观点,并通过实验来比较在包含该特征与不包含该特征的模型之间的差异。实验是指通过改变数据集中的某些受控部分、所使用的方法或训练流程,来验证某种假设。这种研究方式是迭代性的:一次实验的结果可能会否定最初的设想,或者为下一次实验提供新的方向或问题。
在这个领域,区分两种目的不同的实验类型是非常重要的。首先,有一种是分析性实验,这种实验是在已经收集到的数据上进行的,其目的是通过比较各种特征、模型类型以及训练方法,来确定哪种组合才能最好地解决实际业务问题。
例如,如果想要预测某位学生是否能够完成硕士学业,学校可以先使用仅包含成绩和出勤情况的简单模型进行测试;然后,他们可以尝试加入虚拟校园登录次数这样的因素,或者换用不同的算法来进行实验。
通过这种方式,就可以判断这种改变究竟是真正提升了模型的预测能力,还是仅仅增加了模型的复杂性而已。
另外,这种模型必须使用在训练过程中未曾使用过的数据来进行评估。否则,该模型可能会“投机取巧”——在训练数据上表现良好,但在实际应用中却无法取得同样的效果。
对照实验则会引入某种变化,并比较接受这种变化的实验组与未接受改变的对照组之间的实验结果。在条件允许且符合伦理规范的情况下,随机分配样本有助于确保两组之间的可比性。
比如,如果想验证某项出租车服务是否能够提高学生的出勤率,学校可以在符合伦理和法律规定的前提下,先在一小部分学生中逐步推行这项服务。然后,通过分析接受该服务的学生与未接受服务的学生的数据,比如出勤课程的比例等指标,来验证这一假设是否成立。
实验结果必须是可复现的。开发团队可以使用Git来管理代码和配置文件,而像MLflow这样的工具则可以记录实验运行的详细信息,包括参数设置、评估结果等各种数据。
数据科学家通常会与数据分析师以及领域专家一起制定假设并设计实验方案;而机器学习工程师则可以帮助确保这些训练和评估流程在大规模应用环境中能够稳定运行。
适合模型训练的数据
虽然分析性数据集往往已经可以直接用于分析,但实际情况并非总是如此。如果目标是利用这些数据来训练机器学习模型并进行预测,那么这些数据就必须满足额外的要求。
要想训练出一个有效的模型,数据必须适合模型训练——也就是说,这些数据必须能够适应所选算法、评估方法以及实际应用环境。对于监督学习来说,数据集中需要包含记录实验结果的目标变量;而对于无标签的数据集而言,是否适合模型训练则取决于具体的应用场景。
例如,如果想要预测某位学生是否会放弃硕士学业,那么历史训练数据中就需要包含诸如(学生编号, 报名课程, 是否退学)这样的标签信息。团队在将数据用于模型构建时,应尽量避免使用姓名等可以直接识别个人身份的信息,同时也要仔细评估所提出的预测方法是否公平、合理。
根据评估要求,该团队还会将数据分为用于训练、验证和最终测试的部分。在开发模型时,他们不会使用被保留下来的测试数据来做出决策,而是利用这些测试数据来客观地评估模型在处理未见过的数据时的表现。对于基于时间的预测任务,数据的分割方式也必须遵循时间顺序。
最后,所谓“模型可用”,也意味着这些数据能够真实反映我们希望模型学习的目标现象。例如,如果我们仅使用那些已经退学的人的数据来训练一个预测模型,那么这个模型很可能无法掌握那些能够判断某人是否会退学的规律,因此这样的数据集就不具备代表性。
因此,确保数据集具备模型使用的条件是数据工程师、数据科学家以及机器学习工程师的职责所在。
分析型产品的交付
只有当分析结果以人们可以使用的形式传递给目标受众或系统时,它才能真正创造价值。例如,如果一所大学使用模型来检测异常的考试行为,那么它应该将模型的输出视为需要人工审核的信号,而不是证明某人存在不当行为的证据。
分析型产品的交付会为每种分析结果提供合适的呈现方式。这种呈现形式可能是报告、仪表盘、警报信息、文件、API,或是嵌入在应用程序中的预测功能。
例如,学校可以通过报告或仪表盘来展示考勤分析结果。而一个用于评估学生退学风险的模型,则可以通过内部API向授权的支持团队发送警报信息,这些团队会在提供帮助之前先了解具体情况。所选择的呈现方式及其控制机制必须与数据的预期用途和可能产生的影响相匹配。
在分析型产品的交付过程中,需要明确结果的使用者、更新频率以及质量评估标准。所有这些细节都需要被记录下来,同时还要对数据来源及其他相关方面进行管理,并且要持续监控各种交付机制的运行情况。
以考勤分析为例,如果使用仪表盘来展示分析结果,那么校长办公室和硕士项目的负责人就会成为这些结果的接收者,而且数据会每月更新一次。而退学预测模型则会通过API将警报信息发送给学术事务官员,即使这些官员是通过应用程序来获取这些信息的。
产品的交付工作由数据产品负责人或产品经理负责协调,而分析工程师、软件工程师或商业智能开发人员等技术团队则负责实施所有的结果交付机制。
数据产品
分析结果本身并不等同于数据产品。一个数据产品会将相关数据整理成一种结构,同时明确指定目标用户群体及其使用方式,并通过相应的运营模式确保这些数据长期保持其价值。
数据产品可以表现为数据集、API、仪表盘或其他形式。但仅仅是一个仪表盘或文件本身并不一定属于数据产品——它需要具备明确的用途、特定的使用者、明确的归属关系、详细的文档说明,以及明确的质量和服务标准。
以我们的具体应用场景为例,大学可以创建一个交通优惠资格数据产品。这个产品只会包含那些被批准参加相关计划的学生信息、他们的面授课程安排、是否属于远程学习人群等信息,这些信息正是申请交通优惠所必需的。通过API,可以将学生的资格审核结果及其生效日期发送到学生门户网站;而另一个专门的数据集则可以提供各种服务指标的汇总数据。
采取这种精简设计的方式,可以避免将学生的完整个人信息提供给那些并不需要这些信息的用户。
产品特性
在这种情况下,管理数据产品应该与管理商业产品一样进行,因此必须明确产品的目标用户群体以及负责其运营的部门,并确保产品的质量与可用性。
但在数据领域,任何数据产品都应具备一些基本特性:
可被发现:数据产品必须能够通过数据目录或相应的工具被查询到。
易于理解:数据的结构、含义以及所有有助于人们理解这些数据的信息,比如数据的来源等,都必须有明确的文档记录。
可靠性:数据的产品质量与可用性必须根据明确的标准来衡量;当产品未能达到这些标准时,也必须有相应的监控机制和应对措施。
安全性:必须实施访问控制措施,同时尽量减少个人信息的泄露风险。
互操作性:数据应该能够被其他系统集成,并能在这些系统中正常使用。
稳定性:
数据的结构、属性或使用方式都不应频繁发生变化。
数据契约能够明确产品接口中的关键要素,例如数据结构、语义规则、质量标准以及更新频率。此外,该产品还需要相关的文档来规定所有权、访问权限、技术支持、生命周期以及用户的期望值。
所有权与生命周期
没有任何一个角色能够单独完成数据产品的开发工作。数据产品负责人需要与用户进行沟通,明确需求,并根据预期价值设定目标。
从技术层面来看,数据工程师、分析工程师或平台工程师等人员会负责构建用于存储和分析数据的基础设施,进而生成最终的产品成果。
数据产品的生命周期包括:识别用户需求、定义产品及其相关契约、进行产品的开发与发布、监控服务质量和数据质量、不断对其进行优化,最后在适当的时候停止其使用。
产品的被采用程度是衡量其成功与否的一个指标,但仅仅这一点还不够。产品必须能够帮助用户取得实际的价值,并同时保证其质量、可用性、安全性以及可持续的运营成本。
数据管理组织结构
我们已经讨论了许多功能、技术以及相关角色。而数据管理组织结构则决定了这些人员如何协同工作、如何做出决策,以及在产品的整个生命周期中如何解决各种问题。
其运作模式会明确各项职责和权限,规定相应的沟通渠道和工作流程,从而确保各个团队能够以一致的方式解决问题并创造价值。
运作模式
运作模式有助于规范决策过程和成果的交付方式。在集中式运作模式下,通常由一个数据团队负责所有相关工作。这种模式可以提高一致性,但该团队可能会脱离实际业务需求,从而成为发展的瓶颈。
另一种运作模式是分散式运作模式,在这种模式下,组织的各个部门或业务单元分别负责管理各自领域的数据。虽然这种方式能够提高自主性,但也容易导致数据不一致或出现“数据孤岛”现象,进而增加全局决策的难度。
“数据孤岛”指的是那些被孤立在特定区域或系统中的信息,其他部门很难获取这些信息。
许多组织会采用混合式或联合式运作模式,这种模式试图结合两种模式的优点。在这种模式下,各个业务单元可以在一定程度上自主管理自己的数据,并负责保证数据的质量、编写相关文档以及确定数据的用途;而中央机构则会制定必须在整个组织范围内遵守的治理原则、标准和政策。
例如,一所大学采用的混合组织模式可能会设立一个由首席数据官领导的中央数据管理办公室,而学术活动、财务或移动管理等不同领域则会各自配备数据负责人、数据管理员和技术团队。当多个领域需要协作时,数据治理委员会可以协助制定与这种协作相关的决策。
角色与协作
在这种情况下,主要涉及的角色已经提到过。但就它们之间的协作而言,明确界定并记录这些角色的职责至关重要。这可以通过编写文档、使用RACI矩阵等工具、签订数据管理合同、制定治理章程,或建立工作流程等方式来实现。
为了确保有效的协调,人们会使用Git仓库等技术来协作处理各类工作,利用数据目录和Jira这样的沟通平台,还会运用可观测性工具。然而,技术并不能替代对权威、沟通以及明确职责的需求。
数据管理成熟度
不同组织在应用这些能力时的一致性程度各不相同。数据管理成熟度指的是各项实践在组织中的落实情况、衡量方式、治理机制,以及它们与组织目标的契合程度。
例如,一个成熟度较低的组织可能会根据具体需求采取孤立且临时的措施来管理数据。随着成熟度的提高,各种流程和管理实践会逐渐被记录下来并实现标准化、规范化,同时也会得到适当的自动化处理。在最高成熟度阶段,组织会采用系统化的管理方法,通过质量指标、审计和正式的风险管理机制来把控各项管理工作。
数据管理成熟度不仅关注技术层面,还强调协调人员、明确职责以及运用适当工具,从而确保各项工作能够与组织的战略目标保持一致,并取得可持续的成果。
成熟度等级
有一种常用的成熟度评估模型,它将成熟度划分为以下几个等级:
0级 – 无能力:组织没有系统化的数据管理实践,各项操作都是根据当前的需求临时决定的。
1级 – 初始阶段:虽然会指定专人负责数据管理工作,但无法对个人的行为或协作方式进行有效管控。
2级 – 有组织的管理:开始对相关流程、角色和工具进行记录,以便于复制和管理工作的自动化。
3级 – 规范化:政策和标准在整个组织范围内得到统一制定,确保所有团队能够以协调一致且可扩展的方式开展工作。
4级 – 可量化评估:通过审计和各项指标对管理工作进行深入监控,以便评估绩效并主动防范风险。
5级 – 最优化:团队会利用各种测量数据、反馈信息以及适当的自动化手段,不断改进管理流程,并在问题影响用户之前将其解决。
评估与发展路线图
为了确定组织在数据管理方面的成熟度并进一步提升这一水平,您的团队可以使用数据管理成熟度评估工具。
该流程首先需要明确哪些数据领域和管理能力需要被评估。随后会收集相关证据,分析这些能力目前的成熟程度,包括现有文档内容、所遵循的政策等。
通过将实际状况与目标成熟度进行对比,就可以制定出实现这一目标的发展路线图,其中的具体步骤会根据不同组织的情况及其当前水平而有所差异。
这个流程通常由CDO或数据治理办公室牵头推进,数据负责人、数据管理员以及技术团队也会参与其中。
例如,在大学环境中,如果学生是否具备使用某项服务的资格需要通过人工审核,并且这种审核依赖于特定人员的知识,那么相关数据管理能力的成熟度就可以被认定为1级。当达到2级时,就会明确各项职责,开始制定关于资格认定标准的文档,同时一些基本的验证流程也会实现自动化。
到了3级,各种数据产品就可以在统一的规则下提供对指定信息的访问服务;4级时,可以通过仪表盘来监控服务的质量、可用性、使用情况、成本以及公平性等方面;5级时,团队会在适合的情况下自动处理低风险任务,而对于那些需要人工审核或上诉的决策,则会保留相应的人为干预机制,并通过各项指标和用户反馈不断优化服务。
不过,并不是所有能力都必须达到5级。对于一所大学来说,保护个人数据的安全性与质量可能属于优先考虑的重点;而针对课堂使用情况进行的分析,由于不涉及个人数据,其目标成熟度就可以适当降低。
结论
在本书中,我们将数据管理视为一套协调统一的能力体系,这套体系能够帮助组织在其数据的整个生命周期内完成数据的捕获、整合、保护、理解与利用等工作。
大学这个更大的生态系统展示了真实组织的规模,而我们通过招生、学术活动以及交通管理等案例,使这些概念变得更加具体和易于理解。事实上,即便是像交通管理这样的应用领域,也需要远远超出数据库所能提供的功能——它还需要数据治理机制、质量保障措施、隐私保护体系、高效的数据整合能力、可靠的运营流程,以及细致的分析分析能力。
数据本身并不会自动产生价值。只有当人们为数据赋予具体的意义、保护这些数据、确保它们能够被合适的用户所使用,并将它们与实际的目标联系起来时,数据才会变得有用。技术只是实现这一目标的手段,而非最终目的。数据库、数据处理流程、仪表盘、模型以及各种数据产品,只有在它们真正解决了某种实际需求时,才具有意义。
相关文章
如何从大型语言模型中获取可靠的结构化数据
大多数关于如何调用语言模型的教程都会在 JSON.parse(response.content) 这行代码处结束。这段代码在处理前十个测试用例时确实可以有效运行。但当你开始实际应用时,会在第400次左右的一次请求中遇到问题:模型可能会返回一个它自己编造出来的日期,或者当你的数据结构应该包含5个元素时却返回8个数组项,又或者返回一个格式完全正确但实际上缺少某个字段的JSON对象。 我在开发Temploracraft这个简历工具时遇到了这样的问题。这个工具会接收用户上传的文档,并将其转换成应用程序可以编辑的结构化数据。 输入的数据确实具有很大的不可预测性:有些是两列结构的PDF文件,有些表格其实并
阅读全文
如何使用Python和Neo4j构建知识图谱【完整指南】
你所处理的大部分数据实际上都反映了各种关系:一个客户属于某个账户,某次事件会影响某种服务,而一名工程师负责维护某个代码库。你把所有这些信息存储在表格中,长期以来,这种存储方式一直运行得非常顺利。 然而,有时会有人提出这样的问题: 哪些工程师最近了解过昨晚那次事件所影响的服务情况? 这类问题很容易理解,但编写相应的SQL查询却相当困难。通常需要使用四到五次连接操作,每次连接都会生成一个比最终结果范围更广的中间数据集,而大部分这些中间数据最终都会被丢弃。随着表格规模的扩大,查询速度会变得越来越慢,而且每次查看这个查询语句时,都很难理解其具体逻辑。 为了解决这类问题,人们才创造了图数据库。 在这本手
阅读全文
了解人工智能软件开发生命周期流程——构建智能代理功能的完整指南
也许你可以理解这样的场景:本周,你用了同样的说明四次向别人解释人工智能模型的使用方法。 你反复讲解过团队是如何构建演示文稿的框架的,哪些检查步骤需要在部署之前完成,以及为什么测试数据库并不是文档中提到的那个。 每次你都要把这些内容重新写一遍,每次智能助手也能完成得不错,但每次新的会话开始时,一切都得从零开始。 而这正是 智能助手技能 所要解决的问题。 技能 实际上就是一个文件夹,其中只包含一个名为 Skill.md 的文件。智能助手在启动时会阅读其中的一行总结内容,而只有当真正需要时才会打开完整的说明文件。你只需把解释内容编写一次,将其与代码一起提交,那么团队中的每个智能助手就能访问这些信息,
阅读全文
每位开发人员都应该了解的关于产品数据追踪的相关知识
产品数据记录了您的应用程序或网站内部实际发生的情况。它展示了用户的行为、系统的运行状态,以及业务的运营表现。 在本文中,您将了解什么是产品数据、哪些部分值得追踪、哪些部分可以忽略不计,同时也会明白:编写代码的开发者实际上承担着比他人认为的更大的责任。 目录 什么是产品数据? 为什么应该追踪产品数据? 还有谁会使用您所追踪的数据? 为什么应该尽早开始数据追踪? 为什么数据追踪永无止境? 在您的产品中应该追踪哪些内容? 有哪些内容是不应该被追踪的? 如何安全地处理用户数据? 总结 什么是产品数据? 产品数据指的是您的应用程序或网站内部实际发生的情况。它能够回答一些简单的问题:用户喜欢哪些功能?他们
阅读全文