Перейти к содержанию

Раздел 1. Данные и хранилища

Раздел фиксирует карту долговременных и временных хранилищ BOX5-DIT-MGSN в продуктовом контуре. Состав сервисных хранилищ соответствует эталонному реестру из Приложения Г к ПД; контейнеры, отсутствующие в реестре, не включаются.

Корневой каталог данных задаётся эксплуатационной конфигурацией контура. В регламентах используется параметризованное обозначение ${COMPOSE_DATA} или COMPOSE_DATA_SWARM_PATH; конкретные абсолютные пути площадки в документе не фиксируются.

flowchart LR user[Пользователь / UI] --> api[ui-rest-to-gprc
прикладные API] cams[Камеры / VMS / offline-видео] --> media[mediaserver
video ingest] media --> inf[inference / NRI
детекция и сценарии] pk[ПК-КОТ заказчика] --> pkdb[(svr-postgres-pk-kot
внешние справочники)] asutp[АСУ ТП / Kafka-сигналы] --> asutpSvc[svr-asutp] api --> auth[(st-auth
пользователи)] api --> access[(st-access
права)] api --> camdb[(st-camera-storage
камеры, объекты, зоны)] api --> eventpg[(st-event-storage PostgreSQL
события)] api --> files[(MinIO / файловые каталоги
медиа, отчёты, сценарии, модели)] camdb --> kcam[[Kafka
топология камер]] kcam --> lb[(inf-load-balancer
runtime-зеркало камер)] kcam --> reports[отчёты, counters,
уведомления] lb --> inf inf --> kevt[[Kafka
события инференса]] kevt --> eventpg eventpg --> minio[(MinIO event-storage
изображения и видео)] eventpg --> ch[(ClickHouse
поиск, статистика, витрины)] ch --> api eventpg --> reports pkdb --> svrint[svr-severstal-integration] svrint --> camdb svrint --> eventpg svrint --> ch asutpSvc --> asutpredis[(svr-asutp-redis
TTL-кэш)] asutpSvc --> eventpg

Исходный Mermaid-код схемы: В7-MER-001. Раздел 1. Данные и хранилища.

1.1. Какие базы данных используются

В составе продуктового контура используются следующие типы хранилищ:

Тип хранилища Экземпляры в составе Назначение Характер данных
PostgreSQL 13.1 22 compose-сервиса *-postgres Транзакционные данные сервисов: пользователи, камеры, события, сценарии, справочники, отчёты, настройки. Долговременный источник истины для большинства сервисов.
PostgreSQL 16.1 1 сервис svr-postgres-pk-kot Локальная БД интеграции ПК-КОТ. Справочники заказчика и данные производственного контура, зеркалируемые в сервисы BOX5-DIT-MGSN.
ClickHouse 24.6.1 3 сервиса statistics-*-clickhouse Событийная аналитика, витрины, быстрый поиск и статистика. Производные/зеркальные данные, пересинхронизируемые из PostgreSQL и Kafka.
Redis 6 / redis:latest 8 контейнеров Временные бинарные объекты, кэши, locks, очереди Celery, runtime-состояние инференса и песочницы. В основном кэшируемые или временные данные; часть sandbox-сессий может быть важна только для текущей работы.
MinIO 1 сервис ds-minio S3-совместимое объектное хранилище. Долговременные изображения, видео, ассеты, сценарии, модели и артефакты.
Файловые каталоги bind mounts под ${COMPOSE_DATA} и /data/sandbox-compose-data Локальные файлы отчётов, видео, сценариев, моделей, переводов, логов и временных артефактов. Долговременные данные сервисов и runtime-артефакты; часть каталогов восстанавливается только вместе с БД/MinIO.

Служебная БД postgres присутствует в каждом PostgreSQL-экземпляре и ниже не рассматривается как отдельное прикладное хранилище.

1.2. Реляционные БД PostgreSQL

Таблица расширяет реестр PostgreSQL из первоначального подпункта 1.1.1: показывает используемую прикладную БД, сервисы-клиенты, ключевые данные, владельца, признаки дублирования/кэширования и минимальные требования к backup.

Домен PostgreSQL-сервис и БД Сервисы, работающие с БД Ключевые данные Владелец данных Дублирование и кэширование Резервное копирование
inference inf-load-balancer-postgres, БД dnn inf-load-balancer Камеры, теги балансировки, состояние балансировщика, настройки переподключения. inference Зеркало данных камер из st-camera-storage; хранит кэш protobuf_bytes для runtime-балансировки. Файловая копия PGDATA остановленного домена; после восстановления перезапустить inference и синхронизировать камеры.
inference inf-monitoring-postgres, БД dnn inf-monitoring Камеры, дефекты, ошибки, сбои, состояние мониторинга видеопотоков. inference Runtime-зеркало состояния камер и медиасервера; часть данных может быть пересоздана из потока событий. Файловая копия PGDATA; для аварийного восстановления допустима потеря краткоживущего мониторингового состояния по решению администратора.
severstal svr-asset-storage-postgres, БД dnn svr-asset-storage Ассеты, разделы, версии, атрибуты и архивные записи. severstal Метаданные файлов; бинарные данные лежат в /asset-storage/assets и bucket asset-storage. Копировать PGDATA и файловый каталог ассетов одним backup_id.
severstal svr-asutp-postgres, БД dnn svr-asutp Настройки подключений, Kafka-конфигурация и служебное состояние АСУ ТП. severstal Redis svr-asutp-redis хранит TTL-кэш интеграции; source-сигналы приходят из внешней АСУ ТП. Копировать PGDATA; Redis-кэш допускается прогреть заново.
severstal svr-launch-storage-postgres, БД dnn svr-launch-storage, sandbox/backend-клиенты Запуски сценариев, media files, сообщения и контекст выполнения. severstal Метаданные запусков связаны с MinIO bucket launch-storage; часть данных отражает runtime-сессии. Копировать PGDATA и bucket launch-storage; для sandbox также учитывать /data/sandbox-compose-data.
severstal svr-lite-scenario-storage-postgres, БД dnn svr-lite-scenario-storage Упрощённые сценарии, backup сценариев, версии. severstal Файлы сценариев дублируют метаданные в /lite-scenario-storage/lite-scenarios. Копировать PGDATA и каталог lite-сценариев.
severstal svr-models-registry-postgres, БД dnn svr-models-registry, inference/sandbox-клиенты Модели, категории, файлы, сообщения, атрибуты. severstal Метаданные в PostgreSQL, артефакты в /models-registry/models и bucket models-registry. Копировать PGDATA, модельные файлы и bucket models-registry согласованно.
severstal svr-postgres-pk-kot, БД default svr-severstal-integration, svr-severstal-org-sync Справочники ПК-КОТ: виды нарушений, риски, барьеры, рабочие зоны, производства, камеры; 774 пользовательские таблицы. Заказчик / интеграция severstal Источник внешних справочников; зеркалируется в svr-severstal-integration, st-camera-storage, st-event-storage и ClickHouse. Копировать PGDATA как критичный внешний справочник; после restore запускать синхронизацию ПК-КОТ.
severstal svr-scenario-storage-postgres, БД dnn svr-scenario-storage, inf-flows-manager, sandbox-клиенты Полные сценарии, разделы, атрибуты, архивные версии. severstal Файлы сценариев лежат в /scenario-storage/scenarios и bucket scenario-storage. Копировать PGDATA и файловое хранилище сценариев вместе.
severstal svr-severstal-integration-postgres, БД dnn svr-severstal-integration Нормализованные справочники ПК-КОТ, камеры, bbox, принятые и отклонённые события. severstal Локальное зеркало ПК-КОТ; результат валидации также попадает в st-event-storage. Копировать PGDATA; после restore сверить синхронизацию с ПК-КОТ и событиями.
severstal svr-severstal-nifi-integration-postgres, БД dnn svr-severstal-nifi-integration Камеры, business units, базовые правила и справочники для NiFi-интеграции. severstal Интеграционное зеркало данных заказчика; не считается источником истины для камер BOX5-DIT-MGSN. Копировать PGDATA; при потере можно пересинхронизировать из внешнего источника, если он доступен.
severstal svr-severstal-org-sync-postgres, БД dnn svr-severstal-org-sync Департаменты и связи организационной структуры. severstal Зеркало организационного справочника; используется для обновления объектного дерева. Копировать PGDATA; после restore проверить актуальность синхронизации оргструктуры.
severstal svr-translations-store-postgres, БД dnn svr-translations-store Служебная схема и состояние миграций; сами переводы хранятся файлами. severstal Основные данные лежат в /translations-store/translations; БД может быть минимальной. Копировать PGDATA и каталог переводов.
statistics st-access-postgres, БД access st-access, st-access-postgres-backup Группы доступа, пользователи в группах, объекты доступа, плоский кэш privilege. statistics / доступы privilege является пересобираемым кэшем прав; события прав публикуются в Kafka. Ежедневный pg-backup 0 1 * * *, ручной /pg-backup.sh make_backup, плюс файловая копия PGDATA.
statistics st-audit-postgres, БД dnn st-audit, ui-rest-to-gprc через API Audit-записи действий пользователей и сервисных операций. statistics / аудит Каноническое хранилище audit; Kafka используется как транспорт доставки. Файловая копия PGDATA; для расследований желательно сохранять вместе с логами.
statistics st-auth-postgres, БД auth st-auth, st-auth-report-pdf-xlsx-generator, st-auth-postgres-backup Пользователи, роли, домены, политики паролей, история входов. statistics / авторизация Redis st-auth-redis используется как lock при bootstrap, не как хранилище сессий. Ежедневный pg-backup 0 1 * * *, ручной /pg-backup.sh make_backup, плюс файловая копия PGDATA.
statistics st-camera-storage-postgres, БД dnn st-camera-storage, ui-rest-to-gprc через API Камеры, объекты наблюдения, зоны, presets, теги, ASUTP units, prompts. statistics / камеры Главный источник топологии; данные зеркалируются в inf-load-balancer, st-event-storage, st-object-visit-zone-counter, st-virt-cam-video-upload, st-report-email. Файловая копия PGDATA; после restore проверить Kafka fan-out и downstream-зеркала.
statistics st-comments-postgres, БД dnn st-comments, st-event-storage через comments_thread_id Комментарии и сообщения к событиям. statistics / события Связь с событием хранится прикладным идентификатором, не внешним ключом PostgreSQL. Файловая копия PGDATA вместе с st-event-storage, чтобы не потерять связность обсуждений.
statistics st-event-storage-postgres, БД dnn st-event-storage, st-report-*, inf-report-video-extractor, ui-rest-to-gprc через API Основное хранилище событий, нарушений, bbox, камер, app settings, дополнительных изображений и видео. statistics / события Каноническое relational-хранилище; поисковое/аналитическое зеркало в ClickHouse, медиа в MinIO bucket event-storage. Копировать PGDATA, ClickHouse st-event-storage-clickhouse и MinIO event-storage одним backup_id.
statistics st-object-visit-zone-counter-postgres, БД dnn st-object-visit-zone-counter Посещения зон объектами, расписания сброса, зеркала камер и зон. statistics / счётчики Зеркала камер/зон приходят из camera-storage; счётчики зависят от событий инференса. Файловая копия PGDATA; после restore сверить поток событий и топологию.
statistics st-report-email-postgres, БД dnn st-report-email Настройки email-уведомлений, история instant notifications, зеркала пользователей/камер. statistics / отчёты Дублирует пользователей и камеры для рассылок; источник пользователей — st-auth, камер — st-camera-storage. Файловая копия PGDATA; SMTP-конфигурацию хранить в закрытом backup конфигурации.
statistics st-report-pdf-xlsx-generator-postgres, БД dnn st-report-pdf-xlsx-generator Метаданные файлов отчётов и app settings. statistics / отчёты Файлы отчётов лежат в /report-pdf-xlsx-generator/reports; БД хранит индексы/статусы. Копировать PGDATA и /reports вместе.
statistics st-virt-cam-video-upload-postgres, БД dnn st-virt-cam-video-upload Очередь привязки видео к виртуальным камерам, локальное зеркало камер. statistics / камеры Камеры зеркалируются из st-camera-storage; видеофайлы лежат в /vc_videos. Копировать PGDATA и /vc_videos; после restore проверить media_uri камер.

1.3. Аналитические БД и кэш-хранилища

1.3.1. ClickHouse

Все ClickHouse-контейнеры используют прикладную БД default. В составе BOX5-DIT-MGSN они являются аналитическими и поисковыми хранилищами, а не первичным источником бизнес-данных.

ClickHouse-сервис Сервисы-клиенты Ключевые таблицы Владелец Дублирование Backup
st-event-storage-clickhouse st-event-storage, ui-rest-to-gprc по аналитическим маршрутам event, camera_states, cameras, camera_zones, csvn_cameras, Camera_nri_state_heartbeats statistics / события Зеркало и индекс событий/камер из PostgreSQL и Kafka. Копировать /statistics/event-storage-click-house-data; не смешивать с другим backup_id PostgreSQL/MinIO.
st-event-statistic-clickhouse st-event-statistic, отчётные и UI-запросы event, event_finish, event_mv, event_severstal_data, category, camera statistics / статистика событий Производные агрегаты и витрины от event-storage. Копировать /statistics/event-statistic-clickhouse-data; после restore проверить чтение витрин.
st-ex-statistics-clickhouse EX/statistics-сервисы stay_zone_event, camera, category, object, zone statistics / EX-статистика Производная статистика по зонам пребывания. Копировать /statistics/event-ex-clickhouse-data.

1.3.2. Redis

Redis используется как кэш, временное хранилище, broker/result backend или runtime-состояние. Значения ключей относятся к эксплуатационным данным контура и в документации не раскрываются.

Redis-сервис Основные клиенты Назначение Характер данных Backup-требование
ds-data-temporary-storage-redis ds-data-temporary-storage, st-event-storage, inference-сервисы Временные бинарные объекты DTS с TTL. TTL-ключи временных объектов. Обычно не копируется отдельно; потеря означает недоступность временных UUID.
st-auth-redis st-auth Distributed lock при bootstrap/reconciliation. Служебные lock-ключи. Не является источником данных; пересоздаётся.
inf-image-storage-redis inf-image-storage Кэш изображений/временных объектов. TTL-кэш изображений и preview. Кэш; отдельный backup не требуется.
inf-load-balancer-redis inf-load-balancer Runtime-кэш балансировщика. Runtime-состояние распределения. Пересоздаётся.
inf-monitoring-redis inf-monitoring Runtime-состояние мониторинга. Краткоживущее состояние мониторинга. Копировать только если требуется сохранить текущее мониторинговое состояние.
inf-vl-resource-manager-redis inf-vl-resource-manager Состояние управления ресурсами инференса. Allocation-состояние GPU/flows. После restore проверить allocation GPU/flows.
svr-asutp-redis svr-asutp TTL-кэш данных/состояния интеграции АСУ ТП. TTL-кэш интеграционных сигналов и состояний. Кэш; после restore прогревается из интеграции.
nr-sbx-redis nr-sbx-backend, nr-sbx-celery, nr-sbx-flower Sandbox-сессии, Celery broker/result backend. Сессии sandbox, очереди и результаты Celery. Для восстановления активных sandbox-сессий копировать Docker volume; для штатного product backup можно пересоздать.

1.4. Файловые и объектные хранилища

Файловые хранилища нельзя восстанавливать отдельно от БД, которые содержат их метаданные. Типовой пример: st-event-storage-postgres хранит событие и ссылки на медиа, ClickHouse хранит поисковое зеркало, а MinIO bucket event-storage содержит изображения и видео.

Хранилище Путь / bucket Основные владельцы и клиенты Что хранится Backup
MinIO primary storage ${COMPOSE_DATA}/data-storage/minio_data, bucket-и asset-storage, event-storage, launch-storage, models-registry, scenario-storage ds-minio; клиенты st-event-storage, st-camera-storage, svr-*storage, ui-rest-to-gprc, sandbox-сервисы Объекты S3: изображения, видео, ассеты, сценарии и модели. Файловая копия остановленного MinIO вместе с соответствующими PostgreSQL/ClickHouse.
DTS / temporary object store Redis ds-data-temporary-storage-redis ds-data-temporary-storage, inference/statistics-сервисы Временные bytes+MIME по UUID с TTL. Не основной backup; при потере временные объекты не восстанавливаются.
Asset files ${COMPOSE_DATA}/asset-storage/assets -> /uploads svr-asset-storage Загруженные ассеты и версии. Копировать с svr-asset-storage-postgres.
Scenario files ${COMPOSE_DATA}/scenario-storage/scenarios -> /uploads svr-scenario-storage Полные сценарии и архивные версии. Копировать с svr-scenario-storage-postgres.
Lite scenario files ${COMPOSE_DATA}/lite-scenario-storage/lite-scenarios -> /uploads svr-lite-scenario-storage Упрощённые сценарии. Копировать с svr-lite-scenario-storage-postgres.
Model registry files ${COMPOSE_DATA}/models-registry/models -> /uploads svr-models-registry, inference/sandbox Модельные артефакты и версии. Копировать с svr-models-registry-postgres; дополнительно сохранять converted-каталоги инференса.
Translation files ${COMPOSE_DATA}/translations-store/translations -> /uploads svr-translations-store, UI/backend Файлы переводов. Копировать вместе с svr-translations-store-postgres.
Report files ${COMPOSE_DATA}/report-pdf-xlsx-generator/reports -> /reports st-report-pdf-xlsx-generator Сгенерированные PDF/XLSX-отчёты. Копировать с st-report-pdf-xlsx-generator-postgres.
Virtual-camera videos ${COMPOSE_DATA}/vc_videos -> /videos st-virt-cam-video-upload, st-camera-storage Загруженные видео виртуальных камер. Копировать с st-virt-cam-video-upload-postgres; после restore проверить media_uri.
Inference video artifacts /data/sandbox-compose-data/inference/video-storage, /events-storage, /video-events-cropped inf-report-video-extractor, NRI/sandbox Видео событий, cropped-видео, промежуточные артефакты. Копировать вместе с event-storage/MinIO и sandbox-данными, если нужны связанные медиа.
Backup dumps ${COMPOSE_DATA}/backups/st-auth, ${COMPOSE_DATA}/backups/st-access st-auth-postgres-backup, st-access-postgres-backup SQL dump PostgreSQL st-auth и st-access. Проверять latest.psql.gz, gzip -t и контрольное восстановление.

1.5. Владение, дублирование и backup-требования

Ключевые владельцы данных определяются сервисом, который выполняет миграции и запись в хранилище. Технический владелец PostgreSQL-контейнера совпадает с прикладным сервисом без суффикса -postgres; владелец ClickHouse-зеркала — сервис, который выполняет миграции и наполняет аналитические таблицы.

Основные источники истины:

  • пользователи, роли и история входов — st-auth-postgres;
  • права доступа — st-access-postgres, таблица privilege является пересобираемым кэшем;
  • камеры, объекты, зоны и presets — st-camera-storage-postgres;
  • события и нарушения — st-event-storage-postgres, связанные медиа — MinIO bucket event-storage;
  • справочники ПК-КОТ — svr-postgres-pk-kot, рабочие зеркала — svr-severstal-integration-postgres, st-camera-storage-postgres, st-event-storage-postgres и ClickHouse;
  • сценарии, ассеты, модели и переводы — соответствующие svr-*storage БД плюс файловые каталоги /uploads или MinIO bucket-и;
  • посещения зон — st-object-visit-zone-counter-postgres; событийная аналитика — ClickHouse как производное аналитическое хранилище.

Дублирование данных в системе намеренное и используется для производительности и автономности сервисов:

  • st-camera-storage публикует камеры и объектную топологию в Kafka; эти данные зеркалируются в inference, отчёты, st-object-visit-zone-counter, event-storage и virtual-camera upload;
  • st-event-storage хранит канонические события в PostgreSQL и поисковое зеркало в ClickHouse;
  • ПК-КОТ справочники читаются из svr-postgres-pk-kot, нормализуются в svr-severstal-integration и передаются в st-camera-storage/ st-event-storage;
  • Redis-хранилища используются для TTL-кэшей, locks, временных объектов и очередей, поэтому не должны рассматриваться как полноценная замена PostgreSQL/ClickHouse/MinIO;
  • файловые объекты всегда требуют связанной БД с метаданными: восстановление только файлов или только БД приводит к «битым» ссылкам в UI/API.

Минимальные требования к резервному копированию:

  1. Для st-auth и st-access использовать штатные pg-backup sidecar с cron 0 1 * * *, ручным /pg-backup.sh make_backup перед изменениями и проверкой gzip -t/тестового restore.
  2. Остальные PostgreSQL БД сохранять файловой копией PGDATA только на остановленном домене или всём контуре; при наличии SQL dump — хранить его как дополнительный способ восстановления.
  3. ClickHouse, MinIO и файловые каталоги копировать остановленными и только в составе одного backup_id с соответствующими PostgreSQL БД.
  4. Redis копировать выборочно: обязательность зависит от того, является ли состояние временным кэшем или активной sandbox/Celery-сессией.
  5. В backup обязательно включать ~/CODE/box3, runtime-конфигурацию доменов, ui-rest/ui-config, лицензии/Guardant-каталоги и системные настройки Docker, но закрытые .env, токены и пароли не публиковать в документации.
  6. После восстановления проверять не только старт контейнеров, но и связность: события открываются вместе с медиа, отчёты скачиваются, камеры синхронизированы в downstream-зеркалах, ClickHouse-запросы читают таблицы без ошибок.