Google bigquery 在一个位置管理两个关系数据库中的数据

Google bigquery 在一个位置管理两个关系数据库中的数据,google-bigquery,amazon-redshift,data-warehouse,bigdata,Google Bigquery,Amazon Redshift,Data Warehouse,Bigdata,背景:目前,我们的数据分为两个关系数据库(Oracle和Postgres)。需要运行涉及两个数据库中的表的特殊查询。目前,我们采用以下两种方式之一: 从一个数据库到另一个数据库的ETL。这需要大量的开发人员 时间 在我们 Postgres服务器。这是可行的,但查询运行异常频繁 慢慢地 我们已经使用谷歌云平台(用于使用Postgres服务器的项目)。我们熟悉Google BigQuery(BQ) 我们想做什么: 我们希望这两个数据库中的大多数表(按原样)在一个位置可用,因此查询它们既简单又快速。我

背景:目前,我们的数据分为两个关系数据库(Oracle和Postgres)。需要运行涉及两个数据库中的表的特殊查询。目前,我们采用以下两种方式之一:

  • 从一个数据库到另一个数据库的ETL。这需要大量的开发人员 时间
  • 在我们 Postgres服务器。这是可行的,但查询运行异常频繁 慢慢地
  • 我们已经使用谷歌云平台(用于使用Postgres服务器的项目)。我们熟悉Google BigQuery(BQ)

    我们想做什么: 我们希望这两个数据库中的大多数表(按原样)在一个位置可用,因此查询它们既简单又快速。我们正在考虑将数据从两个DB服务器复制到BQ,而不进行任何转换

    看起来我们需要定期(每天)对表进行完全转储,并更新BQ,因为BQ是。最近BQ中的可用性似乎非常有限

    我们知道,将表按原样加载到BQ并不是一个最佳解决方案,我们需要进行非规范化以提高效率,但这是我们在分析可行性后必须解决的问题


    我的问题是BQ对我们来说是否是一个很好的解决方案,如果是的话,如何有效地使BQ与我们的DB数据保持同步,或者我们是否应该研究其他东西(比如红移)?

    WePay已经发表了一系列文章,介绍他们如何解决这些问题。退房

    要使所有内容保持同步,他们:

    数据流从每个微服务的MySQL数据库开始。这些 数据库在Google云中作为带有GTID的CloudSQL MySQL实例运行 启用。我们已经专门为客户建立了一个下游MySQL集群 德贝齐姆。每个CloudSQL实例都将其数据复制到Debezium中 群集,由两台MySQL计算机组成:一台主(活动) 服务器和辅助(被动)服务器。这个单一的Debezium簇是 让我们更容易操作Debezium的操作技巧。 而不是让Debezium连接到几十个微服务 数据库,我们可以直接连接到单个数据库。这 还可以隔离Debezium,使其不会影响生产OLTP工作负载 主CloudSQL实例正在处理的

    然后:

    Debezium连接器将MySQL消息馈送到Kafka(并添加 将它们的模式添加到汇合模式注册表),其中 系统可以使用它们。我们使用Kafka connect BigQuery连接器 使用BigQuery的流式API将MySQL数据加载到BigQuery中。 这为我们提供了一个BigQuery中的数据仓库,通常小于 生产数据落后30秒。其他微服务, 流处理器和数据基础设施也使用提要


    我建议您不要用另一个数据平台将其复杂化,而是选择Oracle或postgres并复制到其中。复制到BQ是否比复制到Oracle或Postgres中的开发人员密集程度低或成本更低?@Nick.McDermaid yep,在BQ上,一TB的长期成本是10美元。你找不到为Oracle或Postgres系统提供10美元动力的机器。BigQuery是数据湖,它正是针对这样一个系统的。费用点是有效的,但开发人员的成本不会比第1点便宜:您必须将数据从两个地方拿到新地方,而不仅仅是从一个地方拿到另一个地方。大概他们已经为这些平台付费了。他们还希望查询变得简单快捷