postgresql - 使用 Airflow 的 postgres 数据库作为应用程序数据

标签 postgresql docker-compose airflow

我正在启动一个需要数据仓库的新项目,我们将使用 postgres。 (无耻的插件: swarm64 使 postgres 成为处理高达 TB 级数据集的绝佳 DW 选项)

我正在使用 apache Airflow 来编排工作负载,但由于我是 Airflow 的新手,我不确定满足应用程序数据库需求的最佳实践是什么。

对于更多上下文,我使用 Airflow 的 docker-compose.yml ,我也是一个 Airflow 新手。

注意到 docker-compose 已经定义了一个 postgres 数据库:

...
  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "airflow"]
      interval: 5s
      retries: 5
    restart: always
...

我立即想知道添加另一个 postgres 服务是否会是一个更好的主意,或者是否将现有服务配置为拥有 2 个用户、2 个数据库......

最终,我会将此项目转移到云中,并且可能会使用 AWS postgres RDS 或类似的。

我的问题是:

  1. 这里的最佳做法是什么?
  2. 如果没有,不同方法之间的权衡是什么?

最佳答案

Airflow 并不关心您的 DWH 是什么,您可以使用 Hooks 和 Operators 与其进行交互。其中许多都可以作为 Airflow 的提供程序使用,并且您可以根据需要随时编写自定义提供程序。您需要将 Airflow 后端元数据数据库(可以是 PostgreSQL、MySQL)和分析存储区分开来,在分析存储中存储已处理的数据,可以是您想要的任何数据(PostgreSQL、MySQL、S3、BigQuery 等)。

请勿将 Airflow 后端数据库设为您的分析数据库,即使它们都是 PostgreSQL!

对于您的问题,答案是:

使用普通的常规 PostgreSQL/MySQL 进行 Airflow 安装。

关于postgresql - 使用 Airflow 的 postgres 数据库作为应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67592811/

相关文章:

postgresql - 在 Postgres 中仅记录用户查询

Python/postgres : Any advantage to converting mxDateTime to built in datetime objects?

PostgreSQL - 根据另一个单元格值设置默认单元格值

ruby-on-rails - 每次我运行docker-compose运行web时,都使用Docker多个容器

docker - 卷和 docker-compose

airflow-scheduler - 大量任务时, Airflow 调度器不调度(或缓慢)

c++ - ubuntu 上 libpq header 的 "standard"位置?

python - 找不到Docker Locust locustfile.py

使用 Vault 后端的配置后, Airflow 部署陷入困境

python - Airflow mysql 到 gcp Dag 错误