Раздел 1. Данные и хранилища¶
Раздел фиксирует карту долговременных и временных хранилищ BOX5-DIT-MGSN в продуктовом контуре. Состав сервисных хранилищ соответствует эталонному реестру из Приложения Г к ПД; контейнеры, отсутствующие в реестре, не включаются.
Корневой каталог данных задаётся эксплуатационной конфигурацией контура. В
регламентах используется параметризованное обозначение ${COMPOSE_DATA} или
COMPOSE_DATA_SWARM_PATH; конкретные абсолютные пути площадки в документе не
фиксируются.
прикладные 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 bucketevent-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.
Минимальные требования к резервному копированию:
- Для
st-authиst-accessиспользовать штатныеpg-backupsidecar с cron0 1 * * *, ручным/pg-backup.sh make_backupперед изменениями и проверкойgzip -t/тестового restore. - Остальные PostgreSQL БД сохранять файловой копией
PGDATAтолько на остановленном домене или всём контуре; при наличии SQL dump — хранить его как дополнительный способ восстановления. - ClickHouse, MinIO и файловые каталоги копировать остановленными и только в
составе одного
backup_idс соответствующими PostgreSQL БД. - Redis копировать выборочно: обязательность зависит от того, является ли состояние временным кэшем или активной sandbox/Celery-сессией.
- В backup обязательно включать
~/CODE/box3, runtime-конфигурацию доменов,ui-rest/ui-config, лицензии/Guardant-каталоги и системные настройки Docker, но закрытые.env, токены и пароли не публиковать в документации. - После восстановления проверять не только старт контейнеров, но и связность: события открываются вместе с медиа, отчёты скачиваются, камеры синхронизированы в downstream-зеркалах, ClickHouse-запросы читают таблицы без ошибок.