【发布时间】:2015-10-31 00:20:17
【问题描述】:
我们有一个在 Google App Engine 上运行的应用程序,它使用 Datastore 作为持久性后端。当前应用程序主要具有“OLTP”功能和一些基本报告。在实施报告时,我们发现使用 Datastore 和 GQL 处理大量数据(数百万个对象)非常困难。为了通过适当的报告和商业智能功能增强我们的应用程序,我们认为最好设置一个 ETL 流程来将数据从 Datastore 移动到 BigQuery。
最初我们考虑将 ETL 流程实现为 App Engine cron 作业,但看起来 Dataflow 也可以用于此目的。我们对设置流程有以下要求
- 能够使用非流式将所有现有数据推送到 BigQuery BigQuery 的 API。
- 完成上述操作后,在更新/创建任何新数据时推送任何新数据 使用流式 API 将数据存储到 BigQuery。
我的问题是
- Cloud Dataflow 是否适合实施此管道?
- 我们能否推送现有数据?有些种类有 数以百万计的对象。
- 应该采用什么正确的方法来实施它?我们正在考虑两种方法。 第一种方法是通过 pub/sub,即为现有数据创建一个 cron 作业并将所有数据推送到 pub/sub。对于任何新的更新,将数据推送到 pub/sub,同时在 DataStore 中进行更新。 Dataflow Pipeline 将从 pub/sub 中选择它并将其推送到 BigQuery。 第二种方法是在 Dataflow 中创建一个批处理管道,该管道将查询 DataStore 并将任何新数据推送到 BigQuery。
问题是这两种方法可行吗?哪一个在成本方面更好?有没有比以上两种更好的方法?
谢谢,
rizTaak
【问题讨论】:
标签: google-app-engine google-bigquery google-cloud-datastore google-cloud-dataflow