Начиная с конца весны 2021 года мы работали над поддержкой реляционных баз данных в Viinex для хранения событий, получаемых от ONVIF камер, каких-либо иных датчиков, а также от модулей видеоаналитики, скриптов, и т.д. Первым делом мы добавили интеграцию с PostgreSQL; затем мы подумали что иногда пользователи предпочтут не связываться с администрированием кластера PostgreSQL, поэтому мы добавили поддержку SQLite. Сегодня мы опубликовали сборку Viinex, содержащую экспериментальную поддержку Microsoft SQL Server. Все три интеграции СУБД доступны для всех платформ и операционных систем, где Viinex может быть запущен.
Схема данных для хранения событий состоит из всего одной таблицы. Таблица содержит колонки с общей информацией о событиях, а также колонку типа JSON для данных, специфичных для каждого конкретного типа событий. Схема данных создается и обновляется автоматически при запуске Viinex, и вообще говоря не является частью публичных интерфейсов Viinex: у пользователей нет необходимости обращаться к базе данных напрямую. Для получения событий на стороне клиентских приложений доступно несколько простых вызовов HTTP API, описанных в разделе 3.15 документации.
В качестве примера того, как эта функциональность может быть использована, мы добавили поддержку долговременного журнала событий в пользовательский интерфейс приложения для распознавания номеров железнодорожных вагонов. Теперь результаты распознавания номеров ЖД вагонов по умолчанию записываются в базу данных SQLite. Демонстрационный пользовательский интерфейс (его исходный код, кстати, теперь открыт и доступен по ссылке https://github.com/viinex/viinex-rlw-ui) запрашивает из базы данных результаты распознавания номеров вагонов на основании даты/времени проезда вагона, а также на основании названия ЖД пути, где результат распознавания был зафиксирован.