BigQuery 数据仓库设计?

BigQuery Datawarehouse design?

在 Datawarehouse 的典型 HDFS 环境中,我看到了一些不同的阶段,在这些阶段中数据被暂存和转换,如下所示。我正在尝试在 Google 云平台中设计一个系统,我可以在其中执行所有这些转换。请帮忙。

HDFS:: 着陆区 -> 第 1 阶段区域 -> 第 2 阶段区域

着陆区 - 用于获取原始数据 Stage 1 Zone - 来自 Landing zone 的原始数据被转换,然后更改为不同的数据格式 and/or 去规范化并存储在 Stage 1 阶段 2 区域 - 来自阶段 1 的数据在事务 table 上更新,比如 HBASE。如果只是时间段数据,那么还是HDFS based HIVE table 然后,从阶段 2 开始报告(如果要转换,中间也可能有多个区域)

我在 Google Cloud::

中实施的思考过程

登陆(Google 云存储)-> 阶段 1(BigQuery - 托管所有基于时间的数据)-> 阶段 2(BigQuery 用于基于时间的 data/Maintain Big table 用于交易基于键的数据)

我的问题如下:

a) 这个实现看起来是否真实。我打算使用数据流在这些区域之间进行读取和加载?如果有人在构建仓库之前实施过这样的设计,那么什么是更好的设计?

b) 使用 Dataflow 读取 Big Query 然后更新 Big table 的效率如何?我已经看到一些用于大 table 更新的数据流连接器 here

c) Json 数据是否可以用作主要格式,因为 BigQuery 支持这种格式?

  1. 有一个 solution 可能适合您的情况。我会将数据加载到 Cloud Storage,读取数据并使用 Dataflow 进行转换,然后将其发送到 Cloud Storage 以加载到 Bigquery 中 and/or 使用您提到的 Dataflow 连接器直接写入 BigTable。
  2. 正如我之前提到的,您可以将转换后的数据从 Dataflow 发送到两个数据库。请记住,BigQuery and Bigtable 非常适合分析,但是,Bigtable 具有低延迟读写访问,而 BigQuery 具有高延迟,因为它执行查询作业以收集数据。
  3. 是的,这是个好主意,因为您可以将 JSON data 从 Cloud Storage 直接加载到 BigQuery。