The Jerusalem PostTrump press secretary Zacharia failed US bar exam despite claiming to practice law - reportCNN TürkAntalya 14 milyon yabancı turisti ağırladı: İşte öne çıkan pazarlarPunchZelensky to resume strikes on Russian refineries as energy truce collapsesDaily MaverickINPICTURES: Wildlife photographer of the year 2026 winnersRTP DesportoSporting de Braga visita Copenhaga para a Liga ConferênciaInquirerFormer Senate leader Koko Pimentel calls for respect for PWDsColliderRussell Crowe’s Best-Reviewed Movie in 27 Years Officially Removed From 1,500 TheatersGhaflaWinnie Odinga Faces Travel Delay After Kenya Airways Cancels Flight On Eve Of Raila MemorialSky TG24Angelina Mango, il nuovo singolo Vita da adulti uscirà il 16 ottobreGIGAZINE2026年10月15日のヘッドラインニュースSoompiB1A4’s Jin Young Dishes On His Upcoming Drama “Summer Vacation,” Chemistry With Cho Yi Hyun, And MoreZDF heuteEntdecken Sie das ZDF-Nachrichtenstudio
The Daily Newsstand · Free, Always
Thursday, October 15, 2026

Данные загрузились — всё ли сошлось? Как мы обеспечиваем согласованность в аналитическом хранилище

Translate

В видеоаналитике важно не только распознать объект, но и правильно связать его с контекстом: временем, местом, камерой и результатом обработки. Если данные рассинхронизированы, даже точная модель машинного зрения может привести к ошибочному выводу. Рассказываем, как мы выстроили архитектуру данных, которая помогает сохранять целостность событий — от камеры до аналитического отчёта.

Привет, Хабр! Это Григорий Тарасов, руководитель направления данных и инфраструктуры из команды «Фалькон Тех». Мы уже более 8 лет разрабатываем решения для видеоаналитики на основе ИИ и машинного зрения. Наша система обрабатывает 1 петабайт данных каждый месяц, и мы выработали свои подходы к управлению ими. Делимся практическими инструментами, которые помогают отражать полную картину событий. 

Фиксация события — больше чем просто видеокадр, если у неё есть набор атрибутов

Сама по себе фиксация события не имеет ценности: она не даёт контекста, из которого бизнес может делать выводы. Чтобы информация стала более полезной, видеокадры надо дополнить другими атрибутами. Это может быть:

  • время съёмки кадра и формирования события;

  • идентификатор камеры, комплекса и зоны наблюдения;

  • координаты камеры, направление и параметры её установки;

  • зоны интереса: проезжая часть, парковочное место, вход, стоп-линия;

  • результаты детекции: класс объекта, рамка объекта, уверенность модели;

  • распознанные атрибуты: номер автомобиля, тип транспорта, цвет;

  • ссылки на исходные и обработанные изображения;

  • версия модели и конфигурации, которыми событие было получено;

  • правила обработки, которые действовали в момент события;

  • статусы камер, каналов связи и вычислительных узлов;

  • географические и справочные данные объекта.

Ценность кадра появляется, когда он связан со временем, местом, объектом, правилом обработки и результатом доставки. Это большие массивы данных, которые лежат в разных структурах. Сначала фиксации поступают в бэкенд, откуда отправляются заказчикам, менеджменту и другим потребителям.

Чтобы объединить источники данных и управлять ими, мы разработали аналитический контур. Точка входа — холодное хранилище S3. Мы стандартизируем разные источники и типы данных бэкенда в единые parquet-файлы для удобной «раскладки» и обработки в аналитике.

Проблемы в синхронизации данных часто выявляются, когда бизнес уже получил ущерб

В видеоаналитике сложности возникают не только из-за потери фиксаций событий, но и из-за правдоподобных несоответствий. Запись существует, выглядит корректно, но относится не к тому времени или объекту. 

При синхронизации данных чаще всего возникают следующие проблемы:

  • Временные: различаются часы и часовые пояса, происходят задержки сети, установлено неправильное время на устройстве.

  • Структурные: поле переименовали, изменили тип или формат сообщения.

  • Семантические: одинаковое поле в двух системах означает разные вещи.

  • Идентификационные: один объект имеет разные ID или один ID использован повторно.

  • Количественные: встречаются пропуски, дубли, частично загруженные пакеты.

  • Порядковые: более позднее событие приходит раньше предыдущего.

  • Пространственные: камеры используют разные системы координат или неверно откалиброваны.

  • Версионные: событие обработано старой моделью, а справочник уже обновлен.

Заметить ошибки заранее практически невозможно. Обычно их выявляют и разрабатывают решение, когда бизнес уже столкнулся с последствиями.

Выстроили архитектуру, чтобы агрегировать большие массивы данных и не терять их при передаче

Внутри аналитического контура мы используем разные инструменты, которые помогают синхронизировать данные. Основных — девять.

Единая временная шкала (UTC). Она есть у каждой записи. Внутри системы мы используем единый мировой стандарт UTC+0. Заказчикам показываем данные в московском часовом поясе: локальное время применяется при отображении фиксаций и отчётности.

Event time и Ingest time. У каждой записи, которая попадает из бэкенда в аналитический контур, есть три даты: когда событие произошло, когда записано в бэкенд и когда появилось в аналитическом контуре. Эта информация хранится отдельно.

Например, фиксация появилась 30 июля — это фактическое время события. Она записана 31 июля, что считается датой попадания в бэкенд. В аналитическом контуре фиксация появится 1 августа. Все три значения критичны: если нужно отследить путь записи от одной точки к другой, даты помогут синхронизировать данные.

Устойчивые идентификаторы. В базе сотни миллиардов строк информации. Поэтому в любом хранилище важно определить уникальную единицу, которую всегда можно найти вне зависимости от объёма. У нас это уникальный идентификатор, и он есть у каждой фиксации. 

Система ID работает так: заказчик открывает интерфейс и видит фотографию с автомобилем. На ней написан номер фиксации — это уникальный идентификатор. Мы спрашиваем его у заказчика, чтобы найти нужное событие в системе и разобрать критичный случай.

Очередь сообщений. Между камерой и бэкендом есть шина, которая накапливает фиксации. Если произойдет сбой, например из-за проблемы с сервером или бэкендом, то шина сохранит данные и не потеряет их. Как только сервер снова начнёт принимать фиксации, накопленная очередь будет поступать в систему, и она придёт в штатное состояние.

Дата-контракты. Они позволяют синхронизировать обмен данными между бэкендом и аналитическим контуром, так как эти базы используют и поставляют данные в разных форматах. Дата-контракты фиксируют состав полей, типы и точность временных меток.

Дата-контракты содержат информацию о том, из какой базы и таблицы пришли данные, кто поставщик, потребитель и владелец пайплайна. Ещё указываются детали: структура таблицы, названия колонок, типы данных и таймзона.

В дата-контрактах есть два вида критериев для изменения данных:

  • Compatible-условия: данные можно изменить без согласования, так как это не повлияет на другие системы. 

  • Breaking-условия: изменения данных требуют согласования с другой стороны. Например, таблица лежит в бэкенде, но аналитический контур — её важный потребитель. С ним надо согласовывать любые изменения критичных полей.

Пример дата-контракта

Пример дата-контракта

Промежуточное объектное хранилище. Камеры поставляют данные в бэкенд, откуда они каждый день отправляются в аналитику, заказчику и другим потребителям. Но при сбоях важно не потерять фиксации, поэтому бэковые базы — промежуточные. Они хранят данные за три месяца. При любой неполадке есть возможность временно подержать данные в бэкенде перед отправкой — повторно обращаться к камерам не нужно.

Аналитическое хранилище. Часто в бэкенде есть ненормализованные данные, которые сложно анализировать с помощью Excel и BI-инструментов. Поэтому мы создали отдельное аналитическое хранилище ClickHouse. Оно берёт данные из бэковских баз и превращает неагрегированные тонны информации в удобные таблицы. Дальше их можно селектить.

В таблице содержатся разные данные по отправленным фиксациям, например:

  • дата доставки фиксации;

  • дупло и протокол, через которые произошла отправка;

  • уникальный ID фиксации;

  • контракт, к которому относится фиксация;

  • дата записи и отправки.

Мы подключаем BI-систему Superset к аналитическому хранилищу. В ней можно получить информацию о собранных и отправленных фиксациях в виде отчётов и графиков — для этого не нужно открывать базу бэкенда.

Оркестратор. Он позволяет координировать большое количество процессов и переменных. Система по расписанию запускает загрузку данных, управляет доставкой и повторной сверкой. Мы для этих целей используем Airflow.

За месяц наш оркестратор загрузил 6,71 млрд строк — 99,78 % процессов прошли без ошибок

За месяц наш оркестратор загрузил 6,71 млрд строк — 99,78 % процессов прошли без ошибок

Реконсиляция. В бэкенде фиксации появляются каждую секунду, и раз в час мы собираем их и поставляем в аналитику. Но при сбое часть данных может задержаться и появиться в базе задним числом. Поэтому мы регулярно запускаем процесс сверки и сравнения источника и приёмника за закрытый период.

Как работает реконсиляция: бэкенд присылает данные, и мы каждый час загружаем их в течение 24 часов. Затем ещё раз одним запуском собираем фиксации за эти сутки, чтобы ничего не потерять.

Если подытожить, то наш аналитический контур имеет следующую структуру:

На схеме отражены все инструменты, о которых мы рассказали в статье: оркестратор, дата-контракты, объектное хранилище и другие

На схеме отражены все инструменты, о которых мы рассказали в статье: оркестратор, дата-контракты, объектное хранилище и другие

Чтобы извлекать из фиксаций контекст событий, надо следить за качеством синхронизации данных

Мы измеряем метрики с помощью каналов с алертами — они подсвечивают проблемы в системе. Закладываем в пайплайны индикаторы, и они каждый день проверяют, например, количество созданных фиксаций.

Чтобы отследить полноту и синхронизацию данных, можно проверять такие метрики:

  • Плотность данных. Надо посмотреть, какая доля ожидаемых событий дошла. Например, из 24 часов фиксации были только в течение 10 часов. Это аномалия — система направит алерт, чтобы мы начали проверку данных.

  • Уникальность значений. Система проверяет, все ли идентификаторы фиксации уникальные. Если есть дубли, мы получим алерт и начнём разбираться в причинах.

  • Временное смещение между источниками. Например, за сутки есть данные только за 22 часа. После проверки оказалось, что 2 часа бэкенд был недоступен и фиксации в него не попали. Мы не могли получить их в аналитический контур. Из-за этого возник рассинхрон по времени между системами, разошлось количество записей между источником и приёмником.

  • Свежесть данных. Важно, чтобы они не отставали от реального времени или отставали, но на согласованные промежутки.

  • Время восстановления после сбоя. У нас регламентирован срок реагирования на падение пайплайнов в LSA. Сбой надо исправить в течение суток, пока он не перешёл в инцидент. Дежурный должен обнаружить проблему с помощью алертов, отреагировать, починить или завести постмортем, чтобы аналогичных кейсов больше не было.

  • Доля событий, которые исправлены повторной сверкой. Должно быть минимум реконсайлов загрузок. Если их количество растёт, это говорит о проблеме со стороны тех, кто поставляет или принимает данные. 

Можно добиться почти идеального распознавания объектов. Но если событие потеряет время, идентификатор или связь с другими данными, ценность всей аналитики снижается. Поэтому надёжность систем определяется не только качеством моделей машинного зрения, но и тем, насколько последовательно выстроен путь данных — от камеры до аналитической витрины. 

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.