通过缓慢或昂贵的 WAN 链接进行提取
我认为你描述的听起来很合适。对于缓慢或昂贵的 WAN 链接,您可能希望减少数据传输量。对此的一些方法是:
如果您可以轻松地从源头识别新事务或更改的数据,则可以通过仅发送更改来减少数据量。如果您在源头有资源但无法轻松识别更改的数据,您可以执行以下操作(如果需要,请为此构建通用框架):
- 从源头提取
- 使用生日附加概率低的算法(例如 MD5、SHA-1)计算哈希值
- 使用表单中的哈希值维护数据库或文件(源系统键,所有非键属性的哈希值)
- 捆绑任何具有不匹配哈希值的东西,然后通过 WAN 链接发送。
- 更新哈希数据库。
稳健的分布式提取
像这样的分布式系统有许多故障模式,因此您需要为此实现一个相当健壮的错误处理机制。故障模式的示例可能是:
- 源系统或网络连接之一可能按计划发生故障。
- 其中一个数据包迟到
- 数据以某种方式损坏。
- 瞬态负载或其他问题会导致超时,因此必须对传输进行分块。
根据仓库系统的要求,您可能需要容忍单个提要的失败。您将需要为此设计一个强大的错误处理策略。
提取合并与转换合并
如果系统相同(例如连锁零售店中的 POS 系统),您可能会通过在转换阶段之前合并数据来获得更简单的架构。这意味着暂存区需要了解数据源,至少出于审计目的。
如果您有少量系统或多个异构源,则应在转换过程中进行数据合并。在这种情况下,您的 ETL 可能会为每个源系统至少为某些过程提供单独的例程。
我们需要消耗臭氧层物质吗?
数据仓库中的一场重大宗教战争是是否应该拥有 ODS。我已经完成了有和没有 ODS 结构的系统,在个别情况下,设计决策是有原因的。我对此的看法是,这个决定的任何一方都没有普遍令人信服的论据,这首先是宗教战争存在的通常原因。
从 50,000 英尺的角度来看,我对此的看法是,源系统越多,数据越同质,ODS 的情况就越强。可以为此绘制一个加特纳式象限:
High+--------------------------+--------------------------+
| | |
| Kimball Model (low/high) | Enterprise Data Warehouse|
H | Unified ODS model hard | (high/high) |
e | to meaningfully design. | ODS both difficult and |
t | Flat star schemas easier | probably necessary to |
e | to fit disparate | make a manageable system |
r | data into. | Better to separate trans-|
g | | formation ahd history. |
e +--------------------------+--------------------------+
n | | |
e | | Consolidated Reporting |
a | Data Mart (low/low) | (high/low) |
i | | ODS easy to implement |
t | ODS probably of | and will simplify the |
y | little benefit | overall system |
| | architecture |
| | |
Low +--------------------------+--------------------------+
Low Number of data sources High