近乎实时的流数据从Mongo DB到Datawarehouse

时间:2017-07-05 19:00:49

标签: python mongodb amazon-s3 stream apache-kafka

我们有一些MongoDB集合,它们将存储从应用程序生成的数据(电子商务订单更新,交付,取消,新订单等)。目前,我们正在遵循传统的ETL方法来安排数据拉取(Covert to file in随着数据量的增加,我们觉得这是一种效率低下的方式,因为与实时流/类似的新ETL方法相比,我们至少有一天生成报告。所以作为一个流媒体选项,我首先阅读了非常受欢迎的Apache Kafka。但是面临的最大挑战是如何将这个Mongo DB集合转换为Kafka主题。 我读了这个MongoDb Streaming Out Inserted Data in Real-time (or near real-time)。我们没有使用上限集合,因此建议的解决方案不适合我们。

MongoDB系列可以成为Kafka制作人吗? 有没有更好的方法将数据从MongoDB实时/接近实时提取到除Kafka之外的Target DB / s3 注意:我更喜欢python解决方案,它可以轻松集成到我们当前的工作流程中,而不是Java / Scala。

由于

1 个答案:

答案 0 :(得分:0)

您是否考虑过提供ETL替代方案的ELT方法?

在ELT中,数据在进入数据仓库时处理,从而加快了加载速度。在大多数情况下,转型技术的设计与用于报告的平台密切相关,使ETL具有更好的硬件和软件同步的优势。

ELT方法优于ETL的优点是:

  • 不需要单独的转换引擎,工作由目标系统本身完成。

  • 数据转换和加载并行发生,因此花费的时间和资源更少。速度与数据大小无关。

  • 数据仓库基础设施的处理能力减少了数据在传输过程中所花费的时间,并使系统更具成本效益。
  • 适合在可扩展的云基础架构中使用,以支持结构化,非结构化的大型数据源

然而,有一些缺点:

  • ELT开发的细节取决于平台,即Hadoop集群通过将问题分解为更小的块,然后将这些块分布在大量机器上进行处理来工作。有些问题可以轻易分开,其他问题会更加困难。
  • 开发人员需要了解他们用于执行转换的系统的性质。有些系统几乎可以处理任何转换,但其他系统没有足够的资源,需要仔细规划和设计。

看看Panoply的这篇文章,它描述了ETL和ELT之间的区别,包括python中的动手实例。