4.4 KiB
4.4 KiB
Временное ТЗ по блоку bookings (для текущей разработки)
Этот файл внутренний, удалить перед итоговой сдачей.
- Контейнер
bookings-db— отдельный сервис Postgres изdocker-compose.yml, база по умолчаниюdemo(из upstream demodb), без переименований. - Доступ снаружи не блокируем (порт
5434по умолчанию), чтобы позже читать через PXF и подключаться из Greenplum. - Инициализация (
make bookings-init): поднимает контейнер, клонирует demodb (без автопатчей), запускаетinstall.sqlкак есть; генерация стартовых данных должна проходить штатнымиgenerate/continue. - Генерация следующего дня: либо
make bookings-generate-dayвызываетCALL continue(...), либо ручной вызов; скриптgenerate_next_day.sqlопционален и не должен менять upstream SQL (только тонкая обертка при желании). - Исходники demodb: клонировать по требованию с закрепленным коммитом (чтобы не ловить неожиданные изменения). Добавить в
.gitignore, если не коммитим. Завендорить в репо можно позже, если лицензия позволит. - Документация: в README описать шаги (
bookings-init, проверка данных, генерация дня), параметры.env, и что настройка PXF/ETL — следующий этап.
Текущее состояние
Makefileочищен: убраны автопатчи demodb; добавленыDEMODB_REPO/DEMODB_COMMITс фиксированным хешемd68de1…, таргет снова исполняется.BOOKINGS_JOBSзадаёт число джобов генерации (по умолчанию 1)..gitignoreдополненbookings/demodb/(клонируем по требованию, не коммитим).bookings-initтеперь после установки запускает генерацию (дата изBOOKINGS_START_DATE, дни изBOOKINGS_INIT_DAYS, параллельностьBOOKINGS_JOBS), используя оберткуgenerate_next_day.sql.generate_next_day.sqlчитает GUCbookings.start_date/init_days/jobs, вызываетgenerate/continue, ждётbusy(), закрывает dblink.- Генерация через
makeостаётся нестабильной: в логах обрывы dblink, данные не появляются.
Текущее состояние тестов/проблем
- Прогон
make bookings-initсBOOKINGS_JOBS=2,BOOKINGS_INIT_DAYS=30: установка ок, GUC/gen.connstrвыставлены,Starting job 1/2: ok, ноbookings.bookingsпустая, вgen.eventsвиситINIT,busy()может бытьt. Логи:could not send data to client: Broken pipe/connection to client lostприTRUNCATE ... CASCADEвdo_init. - С
BOOKINGS_JOBS=1аналогично. Ручная генерация в DBeaver (CALL generate(now(), now()+interval '1 year')) ранее шла медленно, так что проблема может быть в запуске черезdocker exec/pipe или в dblink-подключениях.
Идеи/следующие шаги
- Проверить генерацию внутри контейнера через here-doc без пайпа:
Наблюдать
docker compose exec -T bookings-db psql -U bookings -d demo <<'SQL' SET bookings.start_date = '2017-01-01'; SET bookings.init_days = '30'; SET bookings.jobs = '1'; \i /bookings/generate_next_day.sql SQLbusy(),gen.log,gen.events/events_history. - Если так ок — переписать Makefile под такой запуск. Если нет — попробовать
gen.connstrсhost=localhostи/или оставитьjobs=1без dblink. - Пока нестабильно, держать
init_daysнебольшим (1–3), чтобы быстро видеть прогресс.