ETL反饰特:负载唐的过程’t Scale

Etl. 进程开发中最重要的设计考虑之一是要处理的数据量。大多数ETL流程都有时间约束,要求它们在给定窗口内完成其负载操作,并且处理数据所需的时间通常决定负载的设计。

我越常见的一个’看到的是,ETL设计以及通过扩展性能期望基于当前的数据量。这今天有效,但更频繁的是,数据量会随着时间的推移而增加–有时是指数的!处理一百万条记录的负载过程将与10倍或100倍的数据相比非常不同。

Etl. 反饰特:负载唐的过程’t scale

凭借很少的例外,数据量将随着时间的推移而增加。即使在使用时 增量负载模式,最常见的趋势是净数据(新+改变)随时间增加。即使是稳定,线性的变化,它’可以超出ETL设计或系统资源。具有重要数据爆炸–通常发生在公司收购,数据转换或公司快速增长中–ETL需求可以快速超越容量。

重构ETL,用于大量数据增长’T始终如一,在问题上抛出更多资源。为适当的缩放构建ETL不仅仅是余性硬件或服务层;它需要良好的底层数据移动和转换模式,允许更大的数据量。

建立增长

设计和建立秤的进程,规模更便宜,更容易前面。在事实之后重构加载过程基本上是一个全新的项目,需要新的测试,数据验证和部署。您可以通过抛出更多资源(用于托管或云解决方案的服务层或服务层的硬件)来克服一些设计限制,但您最终可以花费远远克服效率低下的ETL设计而不是它所拥有的第一次适当地建立它的成本。

在构建规模的ETL流程时,请记住以下设计模式:

  • 大学教师’刚刚建立在今天 ’需要。思考通过对数据的技术和业务需求,并问自己’■最极端的数据增长案例可能发生。设计你的ETL,以便它会见面 volume of data.
  • 考虑非托管ETL / elt模式。传统的提取 - 变换负载模型适用于大多数情况,但根据数据卷和转换需求,您可能需要移动到提取负载 - 变换(elt)模式以将一些处理卸载到目标数据库。在某些情况下,可能需要迭代过程(ETLT,ELTLT,ELTTT和各种其他字母汤)。
  • It’不仅仅是关于数据量。考虑到ETL的T(转换)部分。如果您的数据量谦虚地增长,但您期望随着时间的推移,该数据的转换需要增加(例如添加新的业务规则或数据清理),您应该以额外的转换赢得的方式设计您的流程’t瘫痪了这个过程。
  • 尽可能地保持其设置。即使在ETL过程之外,这也是一个很好的拇指规则。如果你’重新处理关系数据,让数据库引擎做得好,这意味着尽可能坚持基于基于的处理。
  • 限制您的数据量’re touching. 我写了这篇文章 在这个系列的早期提示中。如果您可以减少ETL流程中需要摄取的数据量,请您’几乎肯定会看到更好的表现。
  • 用大量数据测试您的进程。虽然它’是使用尽可能接近生产数据的测试数据集的好主意’对于偶尔测试那些具有较大数据的负载过程的好主意,以获得可扩展性的感觉。如果您目前正在处理 n 行,但期待10n or 20n 在近期,开始测试该卷(如果可能的话)。
  • 大学教师’T只是假设您可以在任何将来的数据刻度问题上抛出硬件(或更高的服务层)。是的,将来会有一个时间需要更多马力的时间,但唐’T对待这一点作为您的ETL性能需求的银弹。从良好的设计开始,通常会延迟增加资源的必要性。

关于作者

Tim Mitchell
Tim Mitchell is a 数据架构师和顾问 谁专注于摆脱数据疼痛点。 需要帮助数据仓库,ETL,报告或 训练 ?如果是这样的话, 联系Tim. 没有义务30分钟聊天。

是第一个评论 on " Etl. 反饰特:负载唐的过程’t Scale"

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.