1.1 数据项目的主要类型
我们先来看看数据项目的3种主要类型。
❑数据管道和数据暂存
可以将这类项目视为提取-转换-加载型项目,换句话说,这类项目涉及对数据集的收集、暂存、存储、建模,等等。实际上,这类项目为执行后续的数据处理和分析奠定了基础。
❑数据的处理和分析
这类项目最终会提供某种可用价值,可能是生成报告、创建和执行机器学习模型,等等。
❑应用程序开发
这类项目提供能够实时支持业务需求的数据框架,例如Web应用程序或移动应用程序的数据后端。
接下来,本章将着重关注每个项目类型的以下方面。
❑主要考虑因素
尽管这3种项目类型有很多共同点,但也有一些会影响架构决策和优先级的区别,而架构决策将反过来推动项目的其余部分。在深入探讨这3种项目类型时,我们将首先详细介绍每个项目类型的主要考虑因素。
❑风险管理
任何数据项目都伴随着一定的风险。我们将讨论与特定项目类型相关的潜在风险及处理方法。在很多情况下,特定场景的风险会有多种风险管理方法,因此我们需要从不同的维度进行探讨。
第3章将详细介绍风险管理。
❑团队组成
为交付不同类型的项目组建团队时,需要考虑到一系列因素。不同类型的项目所需要的技能、经验和兴趣是不一样的,因此我们就每一种项目类型提供一些用于组建团队的建议。
❑安全
安全问题可能是所有项目都会涉及的一个重要的考虑因素。安全是一个非常重要和宽泛的主题,所涉及的内容可以单独写成一本书。事实上,针对你所使用的系统,能够找到一些有用的参考资料。因为这是一个非常重要的主题,所以本书不会详细介绍,但会列出在项目过程中需要牢记的一些安全事项。
对于某些开源数据管理系统而言,安全措施更像是马后炮。这是因为早期用户更关心与存储和处理大量数据的能力相关的技术问题。此外,这些系统通常部署在内部网络中,对它们的访问是可控的。随着越来越多的企业部署这些解决方案,他们也越来越关注存储在这些系统中的数据的安全性和私密性。于是,这些项目和供应商努力做出变更和改善,以便帮助企业更好地使用这些系统。
在为项目安全做规划时,应该考虑以下维度。
❑身份验证
确保访问系统的用户是合法的。任何成熟的系统都应该支持强身份验证,这通常可以通过Kerberos或轻量目录访问协议等方式来实现。
❑授权
在确保访问用户的合法性之后,还需要决定他们可以访问哪些数据。成熟的系统需要提供不同粒度的访问控制。例如,不仅可以提供数据库表级别的访问控制,还可以提供列级别的访问控制。在为敏感数据构建数据架构时,具备控制哪些用户和用户组可以访问哪些特定数据的能力是非常重要的。
❑加密
除了控制对数据的访问,出于安全方面的考虑,保护这些数据免受恶意用户和恶意入侵的影响也至关重要。数据加密是最常用的保护方法。我们需要从两个角度来考虑这个问题。
• 静止的数据是指已经进入系统并保存在磁盘上的数据。很多数据管理供应商为此提供了解决方案,并将它们作为管理平台的一部分。一些第三方供应商也为此提供了解决方案。
• 传输中的数据是指在系统中移动的数据。通常,供应商或项目会为此提供标准的加密机制,例如传输层安全协议。
❑审计
安全问题的最后一个考量维度是能够捕获与数据相关的活动,比如数据的传承关系、谁在访问数据,以及如何使用数据,等等。这个问题仍然需要通过供应商或项目提供的工具来解决。
如果安全对项目非常重要,最好的办法是找到可以解决上述4个问题的方案或供应商。这样一来,就可以减少花在数据安全性管理方面的时间,而将更多的时间用于解决其他问题。