数据保险库模型:集线器有什么用?
Data vault model: what are hubs good for?
我刚刚阅读了有关 Data Vault modeling 的文章,据我所知,集线器只包含密钥(和记录源)。
所以我想知道为什么我应该创建那些仅用于存储记录源的中心表?难道只有 Satellites 和 Links 还不够吗?
顺便说一句:我正在寻找数据保险库形式的简单 mysql 表格来下载和使用。
Data Vault 建模的主要概念之一是业务密钥、详细数据的卫星和连接集线器的链接的分离。
例子
Employee
--------
Personnel Number
Name
Surname
Street
City
Department
--------
ID
Shortcode
Name
Employee Number
假设一个部门只有一名员工。
业务密钥
现在需要识别业务对象 Employee 和 Department 的业务标识符。 员工的人员编号和部门[=70的简码 =].
为什么 ID 不是 部门?嗯,这个 ID 很可能是一个数据库内部 ID。在此示例中,简码类似于 DEP_A1613
,它也在内部用于标识部门。
建模
员工的中心仅包含字段人员编号和部门[=70=的中心] 只有 简码.
这意味着 Data Vault 建模中的 Hub 仅用于存储业务密钥。当然,像 Record Source、Load Date 等 Data Vault 字段也是需要的。两个 Hub 也会有相应的 Satellites 来描述数据。在没有集线器的情况下将 link 个卫星放在一起将违反 Data Vault 建模技术。这也没有意义:您需要某种通用标识符来表示您的卫星数据,如果您省略 Hub,它就不会存在。
结论
所以回答你的问题:你应该为业务密钥建模集线器。绝对地。集线器实际上是 Data Vault 建模的基本元素。链接仅连接到集线器,不连接到卫星。
想象一下 Employee 软件的变化。所有其他字段现在都存储在 Employee 卫星中。使用新的 Employee 源软件时,您可以将所有数据存储在新的卫星 中,同时使用相同的 Hub 和业务密钥 。
只是为了完成这个例子:link 将连接 Employee 和 Department 来自 Department 与 员工编号 .
编辑
例如,结构如下所示。 Data Vault 特定字段标有 [DV]:
Hub Employee
------------
Employee Hash Key [DV]
Load Date [DV]
Record Source [DV]
Personnel Number
Sat Employee
------------
Employee Hash Key [DV]
Load Date [DV]
Load End Date [DV]
Record Source [DV]
Hash Diff [DV]
Name
Surname
Street
City
Link Employee Department
------------------------
Employee Department Hash Key [DV]
Employee Hash Key [DV]
Department Hash Key [DV]
Hub Department
--------------
Department Hash Key [DV]
Load Date [DV]
Record Source [DV]
Shortcode
Sat Department
--------------
Department Hash Key [DV]
Load Date [DV]
Load End Date [DV]
Record Source [DV]
Hash Diff [DV]
ID
Name
集线器是应用多源被动集成的地方。您将有一个数据源列,并记录每个键首次到达您的中心时的所有实例。例如,如果我有一个 CRM 系统和一个 ERP 系统,我先从 CRM 系统同步数据,然后 ERP 数据就可用了。我将添加来自 CRM 系统的所有键,数据源列值为 "CRM"。然后,当我引入 ERP 系统时,假设我对 table 具有相同的键结构,我只会添加仅存在于 ERP 系统中且数据源为 "ERP" 的新键.如果密钥不同,您将不得不添加来自两个系统的所有数据。关键是您要保留来自所有正在运行的系统的所有数据。当您移动到下一层时,无论是业务数据仓库还是数据集市,您都可以根据 "Business Rules" 对中心和卫星应用业务逻辑,以便在适用的情况下为两个系统获取单个结果行.如果您在将转换存储在此中间状态之前使用转换,您将失去审计能力,并且无法在以后更改业务规则。有道理吗?
我刚刚阅读了有关 Data Vault modeling 的文章,据我所知,集线器只包含密钥(和记录源)。 所以我想知道为什么我应该创建那些仅用于存储记录源的中心表?难道只有 Satellites 和 Links 还不够吗?
顺便说一句:我正在寻找数据保险库形式的简单 mysql 表格来下载和使用。
Data Vault 建模的主要概念之一是业务密钥、详细数据的卫星和连接集线器的链接的分离。
例子
Employee
--------
Personnel Number
Name
Surname
Street
City
Department
--------
ID
Shortcode
Name
Employee Number
假设一个部门只有一名员工。
业务密钥
现在需要识别业务对象 Employee 和 Department 的业务标识符。 员工的人员编号和部门[=70的简码 =].
为什么 ID 不是 部门?嗯,这个 ID 很可能是一个数据库内部 ID。在此示例中,简码类似于 DEP_A1613
,它也在内部用于标识部门。
建模
员工的中心仅包含字段人员编号和部门[=70=的中心] 只有 简码.
这意味着 Data Vault 建模中的 Hub 仅用于存储业务密钥。当然,像 Record Source、Load Date 等 Data Vault 字段也是需要的。两个 Hub 也会有相应的 Satellites 来描述数据。在没有集线器的情况下将 link 个卫星放在一起将违反 Data Vault 建模技术。这也没有意义:您需要某种通用标识符来表示您的卫星数据,如果您省略 Hub,它就不会存在。
结论
所以回答你的问题:你应该为业务密钥建模集线器。绝对地。集线器实际上是 Data Vault 建模的基本元素。链接仅连接到集线器,不连接到卫星。
想象一下 Employee 软件的变化。所有其他字段现在都存储在 Employee 卫星中。使用新的 Employee 源软件时,您可以将所有数据存储在新的卫星 中,同时使用相同的 Hub 和业务密钥 。
只是为了完成这个例子:link 将连接 Employee 和 Department 来自 Department 与 员工编号 .
编辑
例如,结构如下所示。 Data Vault 特定字段标有 [DV]:
Hub Employee
------------
Employee Hash Key [DV]
Load Date [DV]
Record Source [DV]
Personnel Number
Sat Employee
------------
Employee Hash Key [DV]
Load Date [DV]
Load End Date [DV]
Record Source [DV]
Hash Diff [DV]
Name
Surname
Street
City
Link Employee Department
------------------------
Employee Department Hash Key [DV]
Employee Hash Key [DV]
Department Hash Key [DV]
Hub Department
--------------
Department Hash Key [DV]
Load Date [DV]
Record Source [DV]
Shortcode
Sat Department
--------------
Department Hash Key [DV]
Load Date [DV]
Load End Date [DV]
Record Source [DV]
Hash Diff [DV]
ID
Name
集线器是应用多源被动集成的地方。您将有一个数据源列,并记录每个键首次到达您的中心时的所有实例。例如,如果我有一个 CRM 系统和一个 ERP 系统,我先从 CRM 系统同步数据,然后 ERP 数据就可用了。我将添加来自 CRM 系统的所有键,数据源列值为 "CRM"。然后,当我引入 ERP 系统时,假设我对 table 具有相同的键结构,我只会添加仅存在于 ERP 系统中且数据源为 "ERP" 的新键.如果密钥不同,您将不得不添加来自两个系统的所有数据。关键是您要保留来自所有正在运行的系统的所有数据。当您移动到下一层时,无论是业务数据仓库还是数据集市,您都可以根据 "Business Rules" 对中心和卫星应用业务逻辑,以便在适用的情况下为两个系统获取单个结果行.如果您在将转换存储在此中间状态之前使用转换,您将失去审计能力,并且无法在以后更改业务规则。有道理吗?