IBM InfoSphere Identity Insight 中的数据摄入使用了数据源的概念,将每个数据源映射为通过源系统的提取、转换与加载 (ETL) 过程得到的实体。在典型的摄入场景中,您会有大量的数据源要处理。当数据源的数量超过几十个时,此过程就会开始变得复杂起来。摄入几个数据源时,特别是在初次加载中,常见的复杂因素包括:
- 修改每次数据源加载的优先级
- 快速报告摄入进度图
- 组织各种 UMF (Universal Message Format) 文件
- 验证摄入结果
- 在摄入之前验证数据
IBM InfoSphere Identity Insight 提供运行摄入过程的程序。但为了克服上述复杂因素,需要使用一种基于模型的方法来避免或最小化这些潜在的问题。
该模型用来应对 IBM InfoSphere Identity Insight 提供用于管理摄入流程的机制。该模型描述的摄入流中的一些概念是全新的。该模型包含以下概念:
- 加载:一组来自于不同数据源的 UMF 文件以及一组特性,从逻辑上将,它们代表了摄入功能的一个里程碑。
- 文件集:包含特定加载的 UMF 文件,这些文件满足选择器的标准集(即文件名、日期、数据源等) 。
- 数据块:UMF 文件的一部分,数据块用于通过管道逐步处理 UMF 文件。
- 数据槽:外部系统用来存放要摄入的 UMF 文件的一个临时存放区域。
- 选择器:加载用来确认文件或数据块的一个规则列表。
- 前/后脚本:在加载过程的某些阶段之前或之后运行的脚本,这些脚本有多种用途,比如监控、审计、通知、验证等。
- 管道:处理要摄入的 UMF 文件的 IBM InfoSphere Identity Insight 程序。
- 优先排序器:应用于数据块与加载以确定处理顺序的一个规则与优先级列表。
中描述了包含这些组件的数据流与执行流。
图 1. 加载模型概览
- 外部系统(通常是 ETL 过程的结果)将 UML 文件存放在一个数据槽中。
- 加载选择器 (load selector) 使用数据槽中的文件。
- 每次从数据槽中选择一个文件,然后执行文件前脚本。
- 这些文件组成了一个要处理 UMF 文件的集合,而且每个文件都被划分为多个数据块。
- 优先级列表(实际上是一个指示优先级与选择器的数字)建立了加载处理每个文件数据块的顺序。
- 在将数据块真正发送给管道进行摄入之前,将执行该数据块的前脚本。
- 在系统级别上位不同的加载分配的优先级,以便每个加载能够依次使用管道。
- 根据为每个加载及其数据块定义的优先级,使用管道将这些加载或数据库之一摄入 IBM InfoSphere Identity Insight 中。
- 每次通过管道处理数据块时,会执行该数据块的后脚本。
- 在通过管道处理完所有文件的数据块之后,就会执行该文件的后脚本。
在下面的内容中,我们将更深入地探讨模型中每个组件的功能与特性。
模型考虑使用大量数据槽对 UMF 文件进行分组。数据槽可根据某些标准进行命名,比如数据源、日期范围、阶段名称等。例如,数据槽可以是文件系统中的一个目录,外部系统在该目录中传输要摄入的 UMF 文件。图 2 显示了一个将两个外部系统存放于不同数据槽中的示例。
图 2. 外部系统与数据槽
UMF 文件名称具有一种命名约定,这样选择器就能基于已知的格式对文件名做出一致的选择。数据块优先排序器也可以使用文件名来填充加载数据块队列。
通常情况下,对要摄入的 UMF 文件进行分组有很多要求。在模型中,通过为加载指定一个正确名称,从一开始就解决了这个问题。图 3 说明了如何针对各种目的为加载指定不同的名称。模型假定您可以拥有任意数量的加载,以满足整个摄入过程的分组要求。
图 3. 加载命名
每次加载都有大量 UMF 文件需要处理。如果手动执行,管理来自多个数据源的几个 UMF 文件的优先级可能是一个复杂而且易于出错的任务。模型通过在数据库层次上设置优先级解决了这个问题。某些事情在数据块拥有优先级之前就已经发生了,下面的内容会解释这一点。
前面曾经提过,加载有一个选择器,用于从数据槽收集文件。图 4 说明了选择器如何构成以对加载的文件进行分组。一个选择器通常使用三种规范来选择文件:
- 数据槽规范:定义加载从哪些数据槽获取文件,可以使用通配字符。
- 日期规范:包含文件日期或日期范围。
- 文件规范:是文件名称或文件名通配字符的一个列表。
图 4. 文件选择器规范
每种规范可以有多个表达式,这将组成一个 or 逻辑表达式,例如 SlotSpec 1
的表达式将是 file.slot=DataSource* 或 file.slot=Person。每种规范类型可以有很多实例。结果集是每种规范的结果集的交集。注意,给定加载的结果集会随着时间的推移而变化,因为数据槽中不断存入新文件,因此选择过程也要定期更新。
在一个文件进入加载文件集区之前,会执行该文件的前脚本。这意味着该脚本必须将文件名作为一个参数来处理。前脚本可以是文件传递给要摄入的文件集之前要验证的任意文件相关内容。前脚本可能返回一个成功或失败代码,如果是后者,文件不会传入加载文件集。无论前脚本的输出是什么,加载都会将结果写入一个日志文件中。一旦某个文件位于加载文件集中,您就可以根据数据块优先排序器指定的优先级,开始使用文件的数据块来填充加载数据块队列。
数据块优先排序器有一个规范列表,但也提供了一个编号来指示满足规范标准的每个数据块的优先级。为了填充加载数据块队列,数据块优先排序器将一些规范应用于加载文件集中的各个元素,并将数据块作为一个文件进行剪切,然后为它指定一个优先级并将它放入队列中。图 5 描述了数据块优先排序器规范的一个示例。
图 5. 数据块优先排序器规范
当从加载数据块队列取出一个数据块时,将执行该数据块的前脚本。此脚本可以是在我们将数据块传递给管道进行数据摄入之前需要的任何内容。例如,它可以验证或通知外部系统。脚本的返回代码会指示是否允许数据块继续位于流中,也就是说,是使它流向管道还是跳过它。无论脚本的输出如何,都会将结果写入一个日志文件中。
因为您很可能同时运行几个加载,所以系统级的加载优先级将决定哪个加载能先使用管道。加载优先排序器会处理这个任务。它将使用一系列的规范,其中包括优先级编号以及一个通配字符表达式,以便与加载名称进行匹配。
图 6. 加载优先排序器规范
过程进行至此,当管道处理完一个数据块时,就会执行数据块的后脚本,而且如果该数据块是指定文件的最后一个数据块,还会执行文件后脚本。后脚本可以用于通知或日志记录。
这部分内容可用作完全实现模型的一个参考基础。以下内容将帮助您了解如何在一个假定环境中实现该模型的所有概念。
该模型在构思时考虑的是 Linux/UNIX® 环境,因此所有必需的功能均可在 shell 脚本中编程实现。在以下内容中,我们将探讨如何在一个 Linux/UNIX 风格的环境中实现每个组件或功能。
可以将数据槽直观地映射到目录。外部系统在每个数据槽上存放文件的可能方法是使用文件传输程序,比如 FTP (File Transfer Protocol)、SFTP (SSH's
Secure FTP)、SCP (SSH's Secure Copy) 或者文件共享协议,比如 Linux/UNIX 中的 NFS (Network File System) 或 Windows CIFS (Common
Internet File System)。假设使用 FTP。FTP 客户端将连接到 FTP 服务器,这里使用的是一个 IBM Identity Insight 服务器。在服务器端,客户端应该只能看到数据槽目录层级。客户端在传输期间使用一个临时名称发送文件,并在传输完成之后将其重命名为最终的名称。例如,在传输期间文件名为 filename.transfer,而完成后应该重命名为 filename.umf。因此上传过程不能挑选正在传输的文件,即扩展名为umf 的文件。
要实现一次加载,应该将配置写入一个文件。这个配置文件应该包含以下元素的值:
- 文件选择器规范
- 加载文件集目录路径
- 文件前/后脚本文件路径
- 数据块优先排序器规范
- 加载数据块队列目录路径
- 数据块前/后脚本文件路径
加载本身将在文件系统目录中具体化。在该目录之下将是配置文件、加载文件集的目录以及加载数据块队列的目录。一个目录中可以包含处理文件选择器规范以及数据块优先排序器规范的前/后脚本与控制脚本。此外,目录还要保存一个用于记录所有行为的文件。脚本目录和日志目录应该对所有加载都是通用的。
加载文件集的文件扫描保了留原始的数据槽文件名,因为并不需要按照特定顺序处理文件。但是,对于加载数据块队列,需要使用特殊的命名来允许优先级生效。最简单的做法就是添加一个前缀,即长度为 4 位的优先级编号,例如 0010.filename.umf。这样,标准的列表命令会将优先级最高的文件显示在顶部。
加载优先排序器必须使用一个配置文件,该文件包含用来为各种加载设置优先级的规范。加载优先排序器还必须使用一个脚本来驱动加载期间的数据块选择,并将数据块移动到管道区域。必须根据管道的设置来移动文件数据块。例如,如果将管道配置为消息队列传输,加载优先排序器会将文件放入队列中。该脚本还能促使执行数据块和文件的后脚本。
图 7 显示了我们刚刚描述的实现场景的目录与文件分层结构。
图 7. 目录分层结构
本文中给出的模型会使得使用 IBM Identity Insight 的摄入过程变得更易于管理,而且对整个过程的设计也有好处。在实现身份解析解决方案期间,在开始摄入过程设计之前,有很多步骤需要执行,因此可供您考虑的时间可能并不多。本文中的概念与实现原则可以帮助您确立一个起点。这个模型可以帮助您更早地预见加载优先级、UMF 组织、验证、通知与日志记录方面的需求,从而简化项目开发。
学习
- 向
IBM Identity Insight 信息中心
咨询管道配置。
- 阅读这篇由 Jeff Jonas 撰写的
developerWorks 播客,了解其中关于身份分析总体技术策略的讨论内容。
- 阅读
Use IBM Entity Analytic Solutions to analyze watch lists
,了解关于配置 IBM Relationship Resolution 的观察列表分析的详细信息。
- 在 developerWorks 中国网站 Information Management 专区 中了解关于 Information Management 的更多信息。在其中还可以找到技术文档、how-to文章、教程、下载、产品信息等。
- 随时关注 developerWorks 上讲述各种 IBM 产品与 IT 行业主题的 技术活动 和 网络广播 。
- 在
Twitter 上关注 developerWorks,或者订阅 Linux tweets on developerWorks 的摘要。
获得产品和技术
- 使用
IBM 产品评估试用版软件构建你的下一个开发项目,可以从 developerWorks 直接下载。
讨论
- 关注
developerWorks 博客并加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
