如何在4周内构建数据仓库,第2部分

我已经谈到了构建属于你自己的数据仓库需要采取的前两个步骤(请参阅:如何在4周内构建数据仓库,第1部分)。选择架构和DBMS是需要完成的第一件事情。到目前为止,我们已经有了需要复制的数据的概念以及我们想要存储数据的数据库。缺失的部分就是复制的过程。我们如何存储复制的数据?我们如何转换数据?这些是我在这篇文章中所要回答的问题。

处理

有很多方法可以将事务数据库中的数据复制到DW(数据仓库)中。为了简单起见,假设我们每天运行一次作业来复制数据。但如果当时,我们的业务不能运行,那么事务数据库就没有被更新。因此我们要两个事务数据库(TDB1和TDB2),所以我们的DW必须包含来自两者的数据。

DW包含两个事务数据库(TDB1和TDB)

IMAGE1显示两个数据库有两种不同的模式,图中我们用数据仓库并且用一个问号来表明我们需要复制(还未知道如何复制)的数据。

我们将使用ETL(提取,转换和加载)作业来填充我们的DW。在这里我们有两个选择:

  • 使其成为一个一步到位的过程。在这种情况下,我们只有一个ETL来完成所有的工作。它提取数据,将其转换到内存中并将其加载到DW中。
  • 两步过程引入了一个临时区域。我们用两个ETL,而不是一个。第一个将数据从我们的事务数据库复制到暂存区域,进行一些最小限度的转换(如转换数据类型)。第二个ETL使用大量地转换将数据从暂存区复制到数据仓库。

让我们仔细看看这两种方法。

一步过程

一步过程

一步到位的过程包含了一个可以处理所有事情的工作,它将来自不同输入源(比如TDB1和TDB2)的数据分类并合并到内存中,并将其加载到DW中。尽管这种方法是最简单的,但它有一些明显的缺陷:

  • 这个过程是单一的。如果您在转换过程中引入了一些错误导致过程失败了,那么你就必须重新运行整个过程。不要忘了,在运行期间,你将不能进行重新运行操作,因为您的交易数据库还处于负载状态。
  • 通常,最短的时间内访问远程服务器(您的数据库实例)是个好主意。但是这将不会允许您通过这种方式来进行ETL工作。
  • 您将无法使用DBMS的功能来合并来自不同输入数据源的数据。一切的工作都必须由你来完成,这将很会很麻烦而且容易出错。

两步过程

两步过程

两步过程包括两个工作:

  • “复制到暂存区域”。它将我们的事务数据库(TDB1和TDB2)中的数据复制到另一个数据库 - 暂存区域。此时,我们不做任何复杂的转换。此步骤的目的是复制所有尚未处理的数据。
  • “填充数据集”。它需要我们在暂存区中的数据转换并上传到DW中。它在处理所有数据后将清理暂存区。因此它从不会处理相同的数据两次。

如果你选择这种方法,你将会得到以下几个好处:

  • 只有第一步涉及到你的事务数据库。您可以根据需要多次重新运行“填充数据集”,而不会影响事务数据库。这意味着它可以在工作时间内完成任务。这个方面非常重要,因为“复制到分段”实施起来非常简单,并且不会引起任何问题。
  • 将来自我们输入源的所有数据放在一个位置,这可以让您使用DBMS的功能来加入,合并和过滤数据。

虽然,引入额外的步骤(将数据复制到暂存区域)可能会导致开始时的实施复杂化,但如果考虑您所获得的好处,耗费的成本并不算太高。而且该过程更可靠,更容易扩展。另外,使用DBMS连接来自多个输入源的数据的能力将为您节省大量时间。

另外,我想分享关于实现细节的一些想法。

其他实施说明:使用BI平台

  • 像Pentaho这样的BI平台将为您提供编写和执行ETL作业的所有功能。如果您没有多少时间,并且您不介意使用拖放式编程,则可以在几天内编写所需的所有ETL作业。
  • 虽然,我是现成解决方案(比如BI平台)的主要支持者,但从多方面看,从头开始编写所有东西是更好的方法。您将不必再部署和支持另一个Tomcat实例。其次,BI平台离敏捷还很远。因此,手动完成是测试ETL作业的唯一方法,这基本上会导致任何方面的重构变得非常费劲。当然,保持ETL工作的空闲是很困难的,在未来,这将会增加进行修改的成本。

其他实施说明:将数据复制到分段

大部分需要复制的表格都属于以下类型之一:

  1. 一些参考表格最多包含几千行。因此您将不必麻烦,只需要每晚将整个表格都复制一遍。。
  2. 包含不可变数据的表。您可以使用主ID来复制新行。
  3. 包含可变数据并具有“updated_at”种类列的表。依据此列查找已更新的数据。

在某些情况下,并不那么容易:

  1. 例如,您可能需要加入几个表来查找更新的行。或者为一个表使用许多列(例如primary_id,inserted_at和updated_at)。

结论

最后,我想再说一次,它不像人们所说的那么复杂。依靠一个人建立一个简单的数据仓库是可以在一个月内完成的任务。当然,它背后有很多理论(比如如何处理不同类型的规则等)。但是为了给你的业务带来一些价值,你不需要具体知道所有理论,仅仅了解基本知识就足够了。

http://victorsavkin.com/post/9875068942/how-to-build-a-data-warehouse-in-4-weeks-part-2

本文的版权归 HesionBlack 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏aCloudDeveloper

DPDK 全面分析

高性能网络技术 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁...

1.1K4
来自专栏大数据架构

超大规模 Spark 集群灰度发布 CI CD

目前主流的代码管理工具有,Github、Gitlab等。本文所介绍的内容中,所有代码均托管于私有的 Gitlab 中。

2433
来自专栏后端技术探索

Facebook 宣布开源 Katran,高性能第4层负载平衡器

为了管理Facebook的流量,他们部署了一个分布式PoP服务器作为数据中心的代理。鉴于极高的请求量,PoP和数据中心都面临着巨大挑战,比如如何将大量的后端服务...

1642
来自专栏FreeBuf

Black Hat Europe 2017:安全专家发现5款最流行编程语言中的漏洞

没有不漏的锅,如果底层的编程语言如果出现问题,顶层的应用程序还能幸免于难吗? 这周在 Black Hat Europe 2017 安全会议上,一名安全研究员公开...

2368
来自专栏恰童鞋骚年

谈谈对于企业级系统架构的理解—李平

原文地址:http://www.cnblogs.com/liping13599168/archive/2011/05/11/2043127.html

1214
来自专栏谢慧志的专栏

数据倾斜解决方法总结

在使用Spark、Hive的过程中经常会碰到数据倾斜的问题,本文会持续记录实际工作中碰到的这些问题以及具体解决方案。

3.2K0
来自专栏嵌入式程序猿

恩智浦对KSDK2.0动大手术换血了

恩智浦针对kinetis系列MCU推出的KSDK2.0比以前的1.x版本有了很大变化,目录结构有很大不同,且不在支持MQX操作系统,所以在应用中要注意区别对待,...

36410
来自专栏杨建荣的学习笔记

一种能够快速进阶的学习方式

晚上下地铁的时候,突然想到一个需求,是关于防火墙的,看似简单的防火墙需求,我已经翻来覆去想了好多的招了。

961
来自专栏大数据文摘

5大架构:细数数据平台的组成与扩展

2668
来自专栏ImportSource

NoSQL Peer-to-Peer Replication 对等复制

翻译内容: NoSQL Distilled 第四章 Distribution Models 作者简介: ? 本节摘要: 今天我们主要讨论有关...

4076

扫码关注云+社区

领取腾讯云代金券