Доработки документации

This commit is contained in:
2025-10-12 21:52:07 +03:00
parent ba3e681645
commit 025305acaa
+35 -7
View File
@@ -7,8 +7,9 @@ Airflow по‑прежнему использует **Postgres** только
## Требования
- Docker Desktop (Windows/Mac) или Docker Engine 24+ (Linux) с `docker compose v2`.
- Make (опционально). Если `make` нет — используйте приведённые ниже команды `docker compose` напрямую.
- Windows: запускайте команды в Git Bash или WSL; PowerShell тоже подойдёт, но для `make` удобнее Git Bash/WSL.
- Рекомендуемые среды: Linux, macOS, или Windows через WSL. Чистый Windows работает, но с ограничениями (пути/права, отсутствие `make` по умолчанию).
- Make (опционально). Если `make` нет — используйте команды `docker compose` из примеров ниже.
- Windows: в стандартный Git Bash `make` отсутствует. Для `make` используйте WSL/Chocolatey/Scoop/MSYS2; иначе работайте через `docker compose`.
## Что внутри
- **Greenplum** (single node) — `woblerr/greenplum:6.27.1` (локальный стенд для разработки).
@@ -19,13 +20,24 @@ Airflow по‑прежнему использует **Postgres** только
- **Kafka UI** — автоматически подключается к стендовому брокеру (bootstrap берётся из `KAFKA_BOOTSTRAP` или значения по умолчанию).
- **DDL** `sql/ddl_gp.sql` — создаёт колонночную таблицу `orders` без PRIMARY KEY (AO-таблицы GP6 не поддерживают его), распределённую по `order_id`; контроль дублей реализован в DAG.
> Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями. Для продакшен‑подобных тестов зафиксируй digest (SHA256) конкретного тега на Docker Hub.
> Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями.
## Быстрый старт
Установим make (Linux/Mac)
Опционально установим `make` (если нужен):
- Linux (Debian/Ubuntu):
```bash
sudo apt install -y make
sudo apt update && sudo apt install -y make
```
- macOS (Homebrew):
```bash
brew install make
```
- Windows варианты:
- WSL (Ubuntu): `sudo apt install -y make`
- Chocolatey: `choco install make`
- Scoop: `scoop install make`
- MSYS2: `pacman -S make`
Настроим переменные окружения
```bash
@@ -105,6 +117,22 @@ SELECT count(*) FROM public.orders;
- Открой Kafka UI: http://localhost:8082 — проверь, что существует топик `orders` и в нём появляются сообщения после запуска DAG.
- Если автосоздание топиков в брокере отключено, создай топик вручную через UI перед запуском DAG.
**Подключение К Greenplum**
- DBeaver (PostgreSQL/Greenplum драйвер):
- Запусти DBeaver → Database → New Connection → выбери `Greenplum`.
- Host: `localhost`
- Port: `5432` (или значение из `GP_PORT`)
- Database: `gpadmin` (или `GP_DB`)
- Username: `gpadmin` (или `GP_USER`)
- Password: `gpadmin` (или `GP_PASSWORD`)
- SSL: Disabled (для локального стенда)
- Нажми Test Connection → Finish.
- psql внутри контейнера (rootless доступ к встроенному psql):
- Команда Make: `make gp-psql`
- Или напрямую: `docker compose -f docker-compose.yml exec greenplum bash -c "su - gpadmin -c '/usr/local/greenplum-db/bin/psql -p 5432 -d gpadmin'"`
- Примеры команд внутри psql:
`\dt`, `SELECT version()`, `SELECT count(*) FROM public.orders;`
## Файлы
- `docker-compose.yml` — сервисы Greenplum + Kafka + Airflow + Postgres (metadata).
- `.env.example` — шаблон переменных окружения.
@@ -137,13 +165,13 @@ SELECT count(*) FROM public.orders;
Внутри контейнеров Airflow хост для подключения к БД — `greenplum` (см. `GP_HOST`), а с вашей машины — `localhost:${GP_PORT}`. Созданный в Airflow Connection реиспользует те же значения, что и `.env`.
## Пинning и альтернативы
## Фиксация образов (pinning) и альтернативы
- Зафиксируй digest образа `woblerr/greenplum:6.27.1` (Docker Hub → Tag → «Copy digest») и замени тег на `@sha256:...` в `docker-compose.yml`.
- Альтернативы: можно использовать другие образы Greenplum или собрать собственный образ для GPDB 6/7.
- Особенность GPDB 6: в нём **нет** `INSERT ... ON CONFLICT`. В DAG используется безопасная для GP6 конструкция `INSERT ... WHERE NOT EXISTS` внутри транзакции.
## Ограничения и заметки
- Этот стенд — учебный. Для высокой надёжности и производительности Greenplum обычно разворачивают кластерами на нескольких узлах, на裸‑железе/VM с отдельными дисками под сегменты.
- Этот стенд — учебный. Для высокой надёжности и производительности Greenplum обычно разворачивают кластерами на нескольких узлах, на железе/VM с отдельными дисками под сегменты.
- Для GP7 (основан на новее PostgreSQL) можно упростить загрузку, включая `ON CONFLICT`. В учебных целях мы остались на широко доступном GP6 образе.
## Поток данных (DAG)