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

Хранение статистики потоков в SQL БД

Для хранения статистики публикаций потоков бэкенд-сервер использует реляционную SQL БД. Рекомендуется использовать БД Postgresql. В целях отладки и тестирования может быть использована встроенная БД H2, но для промышленной эксплуатации эта БД крайне не рекомендуется.

Структура БД

SQL БД бэкенд-сервера содержит следующие таблицы. При запуске таблицы создаются автоматически:

Field Type Note
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) командой

    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 в этом случае должна выглядеть следующим образом: