我正在启动一个需要数据仓库的新项目,我们将使用 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 或类似的。
我的问题是:
- 这里的最佳做法是什么?
- 如果没有,不同方法之间的权衡是什么?
最佳答案
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/