数据同步概述
➡️ 理解 iTop 数据同步机制的基本概念
数据同步允许将 iTop 对象与外部数据源(如 CSV 文件、LDAP 目录、数据库等)对齐。同步是单向的:从外部数据源到 iTop。
如果不熟悉此功能,请先阅读本概述,然后参考数据同步参考了解详细配置。
联邦化多个数据源
强大的数据同步引擎允许将来自多个信息源的数据(例如使用网络发现工具或资产管理工具时)联邦到 iTop 中。
使用数据源对象进行联邦化
这种联邦化在 iTop 中通过数据源对象来定义。每个数据源定义了 iTop 如何处理来自特定源的特定类型对象的同步。
同步数据的通用流程
同步数据的通用(持续)流程基于以下步骤:
- 提取数据 — 从外部源/应用程序提取数据 [不由 iTop 处理]
- 转换数据 — 将数据转换为适合 iTop 的内容/格式 [不由 iTop 处理]
- 导入数据 — 使用 MySQL 命令将数据导入 iTop 中的副本表 [不由 iTop 处理]
- 搜索匹配对象 — 在 iTop 中搜索匹配对象 [由 iTop 处理]
- 创建/更新或删除 — 在 iTop 中创建/更新或删除同步对象 [由 iTop 处理]
- 显示和管理 — 在 iTop 中显示和管理同步对象
此流程可以通过两种方式执行:
方式一:数据直接写入数据库
以下是从外部源到 iTop 的信息流示例,使用 ETL 直接将数据写入 MySQL。
在 iTop 中实现数据同步
要在 iTop 中实现数据同步,请按照以下步骤操作:
从 iTop 管理菜单中,为要导入/同步的对象类型定义一个数据源对象。这会创建一个特定的副本表在 iTop 数据库中,名为
synchro_data_xxx。(创建数据源后,检查数据源的属性选项卡。临时表的名称显示在顶部。)使用您喜欢的 ETL 工具或普通脚本,将来自外部源的数据填充到对应数据源的
synchro_data_xxxx表中。您可以使用特殊列primary_key来存储对象在外部应用程序中的任何标识符。此表中的每条记录将对应 iTop 中的一个对象。id列保留给 iTop 使用,不能写入。所有其他列对应于 iTop 对象的字段。通过执行页面
synchro/synchro_exec.php来触发 iTop 对象与临时表副本之间的数据同步,可以在命令行模式下执行,或通过调用网页(例如使用 wget)来执行。
当然,您可以定期安排上述步骤 2 和 3(每小时、每天或每周)。
有关更多信息,请参阅副本。
方式二:通过 CSV 文件导入数据
另一种方法是创建一个中间 CSV 文件,并使用 iTop 提供的 PHP 脚本 synchro_import.php 执行到 MySQL 的导入。
在这种情况下,信息流如下所示:
- 提取数据 — 从外部源/应用程序提取数据 [不由 iTop 处理]
- 转换数据 — 将数据转换为适合 iTop 的内容/格式 [不由 iTop 处理]
- 写入数据 — 将数据写入中间 CSV 文件 [不由 iTop 处理]
- 导入数据 — 将数据导入 iTop 中的副本表 [由 iTop 处理]
- 搜索匹配对象 — 在 iTop 中搜索匹配对象 [由 iTop 处理]
- 创建/更新或删除 — 在 iTop 中创建/更新或删除同步对象 [由 iTop 处理]
- 显示和管理 — 在 iTop 中显示和管理同步对象
CSV 导入与数据同步的区别是什么?
数据同步
数据同步旨在以定期方式从另一个系统导入数据到 iTop。它可以从命令行或 Web 运行,但不能交互式运行。数据同步针对大量不经常变化的数据进行了优化。例如,LDAP 服务器中的 10,000 个联系人可以每天同步到 iTop 一次。不太可能每天有超过一小部分用户记录被修改。iTop 可以高效地处理这种情况。
同步数据时,iTop 会跟踪 iTop 对象与数据源之间的关系。因此,可以阻止用户在 iTop 中修改同步对象(部分或全部),并告知他们数据来源。这对于在 iTop 中"联邦化"多个数据源非常有用。
CSV 导入
CSV 导入可以交互式运行或从命令行运行。它更针对"一次性"导入。它可以从脚本(使用命令行界面或从 Web)或交互式使用。执行 CSV 导入时,iTop 不会记录有关数据来源的信息。数据加载到 iTop 后,授权用户可以修改对象,无需引用原始源。
总结
CSV 导入适用于:
- 将初始数据导入 iTop
- 对数据执行批量转换(有时导出 > 在 Excel 中修改 > 重新导入,比直接在 iTop 中编辑对象更容易)
数据同步适用于:
- 在 iTop 中联邦化不同系统之间的数据
- 通过某种计划机制导入数据
- 阻止用户修改导入的数据
同步的配置项
当配置项与数据源同步时,其在 iTop 中的显示会略有不同。对 CI 的操作也可能受到限制,具体取决于数据源的配置。
例如,对象中同步的字段可能对最终用户显示为只读。还可以配置 iTop 以阻止用户删除同步对象。同步 CI 的确切行为由每个数据源的属性决定。
(注意对象标题中的"锁"图标及其附加的工具提示)。
附加复杂性
设计
此机制在设计时考虑了以下约束:
- 针对每天同步大量数据进行优化
- 易于与第三方数据管理工具(如 Talend)集成
- 安全且易于操作/故障排除
设置和常见陷阱
由于这些要求,设置它并不像人们想象的那么直观。下面描述了常见的陷阱:
从同步数据表中删除记录
从同步数据表中删除记录不会删除对象。它只会将对象从同步机制中分离。用户将有权编辑或删除对象,就像它们是从 UI 中创建的一样。将对象重新附加到同步需要设置数据源以便可以进行协调,然后将记录重新引入同步数据表。同步机制将为您从同步数据表中删除记录。
定期重新创建完整的同步数据表
使用相关设置,这可以工作。但是,当表被清空时(直到它再次被填充并且同步再次运行),用户不会看到相应对象被视为同步。同步执行需要很长时间,并且会严重影响 iTop Web 服务器的响应时间。对于每个同步的项目,都必须进行协调,需要执行查询来搜索最佳匹配。
使用此机制进行实时同步
通过 REST/JSON 等 Web 服务实现这要容易得多。范式更直观:创建一个对象(分别更新/删除),然后调用 REST 操作"对象创建"(分别更新/删除)。
原文:https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchro_overview
版本:3_2_0/advancedtopics/data_synchro_overview.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1