Для хранения статистики публикаций потоков бэкенд-сервер использует реляционную SQL БД. Рекомендуется использовать БД Postgresql. В целях отладки и тестирования может быть использована встроенная БД H2, но для промышленной эксплуатации эта БД крайне не рекомендуется.
Структура БД
SQL БД бэкенд-сервера содержит следующие таблицы. При запуске таблицы создаются автоматически:
| Поле | Тип | Примечание |
|---|---|---|
| ALARM | ||
| id | bigint | PRIMARY KEY |
| name | character varying(255) | UNIQUE CONSTRAINT |
| time | bigint | |
| type | bigint | |
| value | bigint | |
| metric_id | bigint | FOREIGN KEY REFERENCES metric(id) |
| node_id | bigint | FOREIGN KEY REFERENCES node(id) |
| METRIC | ||
| id | bigint | PRIMARY KEY |
| enum_name | character varying(255) | UNIQUE CONSTRAINT |
| name | character varying(255) | UNIQUE CONSTRAINT |
| note | character varying(255) | |
| NODE | ||
| id | bigint | PRIMARY KEY |
| host | character varying(255) | UNIQUE CONSTRAINT |
| NODE_PROFILE | ||
| node_id | bigint | FOREIGN KEY REFERENCES node(id) |
| profile_id | bigint | FOREIGN KEY REFERENCES profile(id) |
| PROFILE | ||
| id | bigint | PRIMARY KEY |
| name | character varying(255) | UNIQUE CONSTRAINT |
| rate | integer | |
| PROFILE_METRICS | ||
| profile_id | bigint | FOREIGN KEY REFERENCES profile(id) |
| metrics_id | bigint | FOREIGN KEY REFERENCES metric(id) |
| PROFILE_RULE | ||
| profile_id | bigint | FOREIGN KEY REFERENCES profile(id) |
| rule_id | bigint | FOREIGN KEY REFERENCES rule(id) |
| RULE | ||
| id | bigint | PRIMARY KEY |
| name | character varying(255) | UNIQUE CONSTRAINT |
| type | bigint | |
| value | character varying(255) | |
| STREAM | ||
| id | bigint | PRIMARY KEY |
| create_date | timestamp without time zone | |
| duration | bigint | |
| media_id | character varying(255) | |
| name | character varying(255) | |
| node_id | bigint | FOREIGN KEY REFERENCES node(id) |
| publisher_id | bigint | FOREIGN KEY REFERENCES stream(id) |
| STREAM_STATUS | ||
| id | bigint | PRIMARY KEY |
| status | character varying(255) | |
| timestamp | timestamp without time zone | |
| stream_id | bigint | FOREIGN KEY REFERENCES stream(id) |
Установка и настройка Postgresql
1. Установите Postgresql (на примере CentOS 7) командой
yum install postgresql-server
2. Инициализируйте БД и запустите Postgresql
postgresql-setup initdb systemctl enable postgresql systemctl start postgresql
3. Войдите в консоль Postgresql
su - postgres psql
4. Создайте базу данных и пользователя, дайте пользователю права на доступ к базе
CREATE USER wcsoam WITH PASSWORD 'wcsoam'; CREATE DATABASE wcsoam; \c wcsoam GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "wcsoam";
5. Выйдите из консоли
\q exit
Оптимизация работы с БД
В сборках до 1.163, для ускорения работы Postgresql и снижения нагрузки на CPU, необходимо после успешного запуска WCS OAM создать следующие индексы:
CREATE INDEX ON stream(name, media_id, node_id); CREATE INDEX ON stream(node_id, name, status); CREATE INDEX ON stream(publisher_id);
Структура данных таблицы stream в БД wcsoam в этом случае должна выглядеть следующим образом:
