Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 将数据从数据库移动到Google大查询_Google Cloud Platform_Google Cloud Dataflow_Airflow_Google Cloud Composer_Data Integration - Fatal编程技术网

Google cloud platform 将数据从数据库移动到Google大查询

Google cloud platform 将数据从数据库移动到Google大查询,google-cloud-platform,google-cloud-dataflow,airflow,google-cloud-composer,data-integration,Google Cloud Platform,Google Cloud Dataflow,Airflow,Google Cloud Composer,Data Integration,我正试图找到一种方法,将数据从on-prem数据库(Oracle)批量(而不是流式)移动到googlebigquery 我正试图通过Google Cloud Composer实现这一点,但我明白,在使用Composer将数据移动到BigQuery之前,我需要先将数据输入GCS 将数据从on prem DB移动到GCS的最佳方式是什么。或者谷歌云中是否有一项服务允许我直接将数据从DB移动到Bigquery 使用云数据流可以更好地做到这一点吗?谢谢所以我认为您将一些工具/服务与迁移这一主要目标相结合

我正试图找到一种方法,将数据从on-prem数据库(Oracle)批量(而不是流式)移动到googlebigquery

我正试图通过Google Cloud Composer实现这一点,但我明白,在使用Composer将数据移动到BigQuery之前,我需要先将数据输入GCS

将数据从on prem DB移动到GCS的最佳方式是什么。或者谷歌云中是否有一项服务允许我直接将数据从DB移动到Bigquery


使用云数据流可以更好地做到这一点吗?谢谢

所以我认为您将一些工具/服务与迁移这一主要目标相结合。因此,在开始之前,我将解释一些概念:

1) Cloud Composer只是一款提供气流服务的GCP产品,什么是气流?一个编排平台,您可以在其中以编程方式编写、安排和监控工作流。因此,当您有多个管道、作业或任务要编排时,这将非常有用。它可以用于初始迁移,但不是必须使用的强制服务

2) 数据流是GCP的一个优秀产品,它使用作为其主要管道语言,因此您可以部署批处理或流式管道。如果您想在GCP中获得更多的云本地体验,Dataflow是Spark或Hadoop等经典产品/框架的替代品。下一幅图是关于何时使用DataProc(Spark、Hadoop等作为服务)或Dataflow的建议:

现在我们理解了这里的术语,答案来了:这要视情况而定。因此,这些服务可以在这一过程中帮助您,但每个基础设施都非常独特。例如:

  • 我们可以停止服务并进行迁移吗?或者它应该发生在数据库接受请求时
  • 需要多长时间?最长时间
  • 防火墙后面是你的数据库吗?VPN会影响什么
  • 这是一种方法吗?我的意思是,您是要直接复制粘贴,还是要进行数据重构以正确使用BigQuery
因此,正如您所看到的,这取决于您的需求和当前的基础设施。然而,我要告诉你我们在公司做了什么:

在我的例子中,我采用了两种方法:Lift&Shift和数据重构。这样做的原因是在我们忙于重构数据体系结构的同时,为业务提供一些可查询的内容。我们做第一个的方法是将表从MSSQL数据库移动到BigQuery。解决方案是一组python脚本,用于复制模式并在另一端重新创建表(以小批量逐表)

注意:例如,可以使用数据流来完成此过程,但是如果您的数据库位于防火墙后面,并且需要VPN访问等,则您在尝试使其工作时会遇到困难

Google建议的方法是在GCS中转储表,然后可以使用BigQuery中的“从源代码创建表”选项(其行为类似于AWS中的Athena)重新构建它们。但是,请记住,BigQuery只识别Avro、parquet、JSON、CSV和ORC格式。这意味着您的数据库转储应该以这些格式之一导出。如果您使用JSON或CSV之类的东西,那么Google BigQuery足够智能,可以自动检测您的模式!!!它不是完美的,它会根据前100行做很多假设。如果您使用avro或parquet,模式将由这些文件定义,因此您将减少误报的风险

注意:在Oracle的情况下,您可以使用类似的方式“导出”到CSV或JSON

一般来说,有很多选择来解决这个问题,还有很多事情要考虑。这是一份来自谷歌的关于从TeraData迁移到BigQuery的文档,但一般来说,它适用于任何其他类型的迁移:


祝你好运

您可以在Cloud Composer之外安排数据迁移到GCS。然后用GoogleCloudStorageObjectSensor创建一个DAG,每隔一段时间插入地面军事系统,检查文件是否到达。然后,您可以使用GCSToBigQueryOperator将数据复制到BigQuery

thx Juan Urrego我的答案我们可以停止服务并进行迁移吗?或者它应该发生在数据库接受请求时?迁移应该正在进行,我们不想停止DB,是的,它可能需要请求,需要多长时间?最长时间?我们希望一次加载几个表,因为这是一个正在进行的过程,是防火墙后面的数据库吗?VPN会影响什么?是的,DB在防火墙后面,这是一种升降方式吗?我的意思是,您是要直接复制粘贴,还是要进行数据重构以正确使用BigQuery?大多数情况下,lift&shiftI理解,我似乎在代码或应用程序之外,将数据从DB移动到GCS作为第一个着陆区域,然后根据您解释的内容,我可以使用Cloud Composer或Dataflow。移动数据的第一步是我写了一个应用程序,让它在prem上运行,还是在GCP上运行,然后让它将表格移动到GCS?当然,如果有一种方法可以通过一些编码从气流或数据流本身来实现,我不希望编写一个单独的连接器。如果是的话,你能给我指一些链接吗?好的,那么对于
来说,迁移应该正在进行,我们不想停止DB,是的,它可以接受请求,我想说你需要一个Oracle DB的读取副本。这样,您可以在不影响当前用户的情况下运行查询。考虑到您还需要迁移即将到来的新数据,我将使用PubSub+DataFlow之类的工具实时插入新数据。因此,按照想法的顺序,您为历史数据创建批处理,并实时接收新数据(保持新旧同步),因为
是的,数据库位于防火墙后面,这是一个提升和转换过程
小心使用您的