我有一个云SQL实例,其中包含数百个数据库,每个客户一个。每个数据库中都有相同的表,但数据只针对特定的客户。
我想对它做的是,以各种方式进行转换,以获得包含所有客户的概览表。不幸的是,我似乎找不到一个工具,可以遍历云SQL实例拥有的所有数据库,执行查询,然后将数据写入BigQuery。
我真的希望数据流将是解决方案,但就我已经尝试并在网上查看,我找不到一种方法来使它工作。由于我已经花了很多时间研究Dataflow,我认为最好在这里问一下。
目前我正在看数据融合,数据流,Apache气流。有什么建议吗?
为什么Dataflow不适合您的需求?您可以运行查询来查找表,然后基于这些结果迭代地构建Pipeline/jdbc源/PCollections。Beam有一个Flatten变换,可以连接PCollections。
你正在尝试做的是创建Dataflow Flex模板的用例之一(在Dataflow本身中有动态DAG创建),但也可以在没有Flex模板的情况下拉。
Airflow可以用于这类事情(本质上,您正在反复执行相同的任务,因此使用适当的操作符和for循环,您当然可以生成包含数百个几乎相同的任务的DAG,这些任务导出每个数据库)。
然而,我不应该问:你应该吗?
在一个实例中创建数百个数据库,而不是在每个表上创建一个具有customer
字段的数据库,这可能是一个非常好的原因。然而,如果安全性是最重要的,那么行级别的安全策略可以增加额外的安全元素,而不会使您陷入这种困难的境地。在customer
字段上添加索引将允许您快速检索适当的子表(在插入新行时以较小的速度成本作为回报),因此性能似乎也不是这样做的原因。
考虑到将数据放入BigQuery非常简单,如果我是你,我会竭尽全力切换到这种设置!