这是一个使用Materialize的独立演示。

此演示将向您展示如何使用 Materialise 和 Airbyte 创建实时仪表板。

对于这个演示,我们将在我们的演示网站上监控订单并生成事件,这些事件稍后可用于在购物车长时间被遗弃时发送通知。

此演示是如何在实时物化视图中加入 PostgreSQL 和 MySQL教程的扩展,但我们将使用 Airbyte 从 MySQL 中逐步提取超过CDC的订单,而不是使用 Debezium CDC。

图:

[图像](https://res.cloudinary.com/practicaldev/image/fetch/s--URSejy4u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent .com/21223421/158989609-45cd719d-7326-4a60-bc01-e75b663851dd.png)

先决条件

在开始之前,您需要确保已安装 Docker 和 Docker Compose。

您可以按照此处有关如何安装 Docker 的步骤进行操作:

安装 Docker

请注意,Airbyte Cloud 目前不支持将 Kafka 作为目的地,这就是为什么我们只能使用自托管的 Airbyte 实例跟随此演示。

运行演示

请注意,对于带有 M1 的 Mac,由于以下问题,您可能会遇到一些 Airbyte 问题:

https://github.com/airbytehq/airbyte/issues/2017

所以我建议使用 Ubuntu VM 来运行演示。

启动所有服务:

docker-compose up -d

进入全屏模式 退出全屏模式

空字节

通过访问your_server_ip:8000设置 Airbyte 服务,然后按照说明进行操作。

添加源

我们将使用MySQL作为我们从中提取订单的来源。

通过 Airbyte UI,单击Sources选项卡,然后单击Add new source按钮。

填写以下详细信息:

  • 姓名:orders

  • 来源类型:MySQL

  • 主机:your_server_ip

  • 端口:3306

  • 数据库:shop

  • 用户名:airbyte

  • 密码:password

  • 禁用 SSL

  • 复制方法:CDC

最后,点击Setup source按钮。

添加目的地

接下来,向 Airbyte 添加一个目的地,该目的地将用于将事件发送到。

对于这个演示,我们将使用 Redpanda,但它与 Kafka 一起工作得很好。

首先单击Destinations选项卡,然后单击Add new destination按钮并填写以下详细信息:

  • 名称:redpanda

  • 目的地类型:Kafka

接下来,填写所有必填字段并单击Setup destination按钮。

根据您的需要,您可能想要更改一些设置,但对于此演示,我们将使用默认设置。

此演示需要注意的重要事项是:

  • Topicorders

  • Bootstrap Serversredpanda:9092

最后,点击Save按钮。

建立连接

现在您已经有了源和目标,您需要在它们之间建立连接。这是必要的,以便 Airbyte 可以根据特定的时间表(例如每天、每小时、每 5 分钟等)将事件从源发送到目的地。

对于这个演示,我们将使用 5 分钟的时间表。希望将来,Airbyte 将允许您自定义此设置并将时间表减少到 1 分钟。

单击Connections选项卡,然后单击Add new connection按钮并填写以下详细信息:

  • 将“复制频率”设置为5 minutes

  • 将“目标命名空间”设置为“镜像源结构”

  • 将源设置为orders,将“同步模式”设置为Incremental

[图像](https://res.cloudinary.com/practicaldev/image/fetch/s--jcZUNHFj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent .com/21223421/158997265-6890282a-a997-495e-b723-265818c8ed24.png)

接下来单击“设置连接”按钮。最后,点击Sync now按钮开始同步。

建立连接和发送事件可能需要几分钟。

同步完成后,您可以看到您在设置目的地时指定的 Redpanda 主题中的事件。让我们来看看如何做到这一点!

查看Redpanda话题

要检查自动生成的主题,您可以运行以下命令:

  • 访问 Redpanda 容器:
docker-compose exec redpanda bash

进入全屏模式 退出全屏模式

  • 列出主题:
rpk topic list

进入全屏模式 退出全屏模式

  • 消费话题:
rpk topic consume orders_topic

进入全屏模式 退出全屏模式

请注意,如果您在初始设置期间使用了不同的主题名称,则需要在上面的命令中更改它。

如果您还没有看到该主题,您可能需要额外等待几分钟,并确保ordergen服务模拟已启动并正在运行。

验证主题具有 CDC 事件后,您可以继续并设置 Materialise。

创建物化SOURCE

接下来,我们需要在 Materialise 中创建一个SOURCE

您可以通过返回终端并运行以下命令来做到这一点:

  • 访问mzcli容器:
docker-compose run mzcli

进入全屏模式 退出全屏模式

或者,如果您安装了psql:

psql -U materialize -h localhost -p 6875 materialize

进入全屏模式 退出全屏模式

通过执行以下语句创建 KafkaSOURCE:

CREATE SOURCE airbyte_source
  FROM KAFKA BROKER 'redpanda:9092' TOPIC 'orders_topic'
  FORMAT BYTES;

进入全屏模式 退出全屏模式

注意:将orders_topic更改为您在 Airbyte 设置期间指定的主题。

使用TAIL快速查看数据:

COPY (
    TAIL (
        SELECT
            CAST(data->>'_airbyte_data' AS JSON) AS data
        FROM (
            SELECT CAST(data AS jsonb) AS data
                FROM (
                    SELECT * FROM (
                        SELECT convert_from(data, 'utf8') AS data FROM airbyte_source
                    )
                )
            )
        )
    )
TO STDOUT;

进入全屏模式 退出全屏模式

当 Airbyte 将数据发送到目的地时,您将看到一个数据流,Materialize 以极小的亚毫秒延迟对其进行处理。

有关如何使用TAIL的更多信息,请查看Joaquin Colacci的这篇博文:在 Materialise 中使用 TAIL 订阅视图中的更改

创建物化视图

现在我们在 Materialise 中有一个SOURCE,我们可以创建一个物化的VIEW。物化视图让您可以使用标准 SQL 查询非常快速地检索数据的增量更新结果。

要创建物化视图,请执行以下语句:

CREATE MATERIALIZED VIEW airbyte_view AS
  SELECT
    data->>'id' AS id,
    data->>'user_id' AS user_id,
    data->>'order_status' AS order_status,
    data->>'price' AS price,
    data->>'created_at' AS created_at,
    data->>'updated_at' AS updated_at
    FROM (
        SELECT
            CAST(data->>'_airbyte_data' AS JSON) AS data
        FROM (
            SELECT CAST(data AS jsonb) AS data
            FROM (
                SELECT * FROM (
                    SELECT convert_from(data, 'utf8') AS data FROM airbyte_source
                )
            )
        )
    );

进入全屏模式 退出全屏模式

接下来,运行查询以查看数据:

SELECT * FROM airbyte_view;

进入全屏模式 退出全屏模式

要可视化数据,您可以使用 BI 工具,例如Metabase,或者,由于 Materialize 与 Postgres 线路兼容,您可以使用自己喜欢的编程语言并构建自己的仪表板。有关支持的工具和集成的更多信息,请查看物化视图文档

停止演示

要停止演示,请运行:

docker-compose down -v

进入全屏模式 退出全屏模式

有用的链接

  • 实现

  • 空字节

  • 物化云

  • Materialise 演示

  • 红熊猫

有关使用 Debezium 的此演示的类似版本,请查看此处的帖子:

  • 如何在实时物化视图中加入 MySQL 和 Postgres

社区

如果您有任何问题或意见,请加入Materialise Slack 社区!

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐