Инструменты пользователя

Инструменты сайта


doc:2003:mgul.200300.001.3201

АННОТАЦИЯ

Спецификация предназначена для детализированного описания требований к реализации сущностей АС averobo на данных БД dbrobo с целью построения ретроспективного анализа данных.

Условие отбора данных

  • Отбор данных из БД Dbrobo:

Выборка данных осуществляется через API-запрос за последние 15 минут. По расаписанию планировщика crontab(работает от демона cron) первый запуск происходит в 00:00 каждого дня и срабатывает каждые 15 минут.

  • Отбор данных из БД Averobo:

Выборка данных осуществляется через подключение к БД через библиотеку psycopg2. В зависимости от типа осреднения происходит подключение к одной из двух таблиц. Для осреднений сутки и час обращение идет к таблице half_path, для осреднений неделя и месяц – table_with_time. Полное расписание планировщика представлено в таблице 1.

Табл.1 Расписание планировщика

Дата запуска планировщика Тип осреднений
ХХ:00 15-минут
ХХ:08 Час
00:12 Сутки
00:16 Неделя
00:20 Месяц

Модель данных

Модель данных для таблиц main_table, table_with_time, half_path представлены в таблицах 2, 3, 4 соответсвенно:

Табл. 2 Модель данных main_table

Name Code Data Type Comment Алгоритм заполнения
Дата осреднения date date Дата осреднения
Название и серия прибора name varchar (50) Название и серия прибора
Тип осреднения average varchar (50) Типы осреднения:
average_of_day
maximum_in_day
minimum_in_day
average_of_week
maximum_in_week
minimum_in_week
Названия функций:
insertavgday
insertmaxday
insertminweek
insertminday
insertavgweek
insertmaxweek
json-file с осреднениями json-file json Структура хранения данных:
название датчика: осредненные данные

Табл. 3 Модель данных table_with_time

Name Code Data Type Comment Алгоритм заполнения
Дата осреднения date timestamp Дата осреднения с временем
Название и серия прибора name varchar (50) Название и серия прибора
Тип осреднения average varchar (50) Тип осреднения:
aver_hour
maximum_in_hour
minimum_in_hour
aver_15min
minimum_in_15min
maximum_in_15min
Названия функций:
insertavghour
insertmaxhour
insertminhour
function_15_min
json-file с осреднениями json-file json Структура хранения данных:
название датчика: осредненные данные

Табл. 4 Модель данных half_path

Name Code Data Type Comment Алгоритм заполнения
Дата осреднения date timestamp Дата осреднения с временем
Название и серия прибора name varchar (50) Название и серия прибора
Тип осреднения average varchar (50) Тип осреднения:
aver_hour
maximum_in_hour
minimum_in_hour
aver_15min
minimum_in_15min
maximum_in_15min
Названия функций:
insertavghour
insertmaxhour
insertminhour
function_15_min
Количество осредненняемых значений num json Количество осредненняемых значений
Сумма неосредненных значений sum json Сумма неосредненных значений

PostgreSQL

Установка и запуск PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service

Создание роли

Для создания баз данных используются роли в СУБД PostgreSQL. При создании роли автоматически создается БД с аналогичным названием. Для использования роли необходимо создать пользователя, к которому будет применена роль. Имя пользователя и роли должны совпадать. Создание пользователя для БД логов:

sudo adduser averobo_logs

При создании пользователя необходимо не забывать о предоставлении, если необходимо sudo/root прав. Их необходимо предоставлять отдельно. Создание роли для БД логов:

sudo -u postgres createuser averobo_logs

Создание пользователя для основной БД:

sudo adduser averobo

Создание роли для основной БД:

sudo -u postgres createuser averobo
  • После предоставления роли можно зайти в созданного пользователя через команду:
sudo -i su averobo_logs

Для входа в PostgreSQL:

psql

Создание таблицы для БД логов

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

  • Создание таблицы для логирования:
create table logs (
             date timestamp
             , level character varying(25)
             , function character varying(25)
             , message character varying(10000)
);

Создание таблицы для основной БД

  • Создание таблицы для неосредненных значений:
create table half_path (
             date timestamp without time zone
             , name character varying(50)
             , average character varying(50)
             , sum json
             , num json 
);
  • Создание таблицы для хранения данных формата дата-время:
create table half_path (
             date timestamp without time zone
             , name character varying(50)
             , average character varying(50)
             , json_file json
);
  • Создание таблицы для хранения данных формата дата:
create table half_path (
             date date
             , name character varying(50)
             , average character varying(50)
             , json_file json
);

Проверки после создания таблиц

Проверка наличия таблицы:

select * from logs;

Просмотр всех существующих таблиц в БД:

\dt

Просмотр полей и деталей о колонках в конкретной таблице:

\d logs

Если база данных не создалась автоматически

  • Создание БД через пользователя PostgreSQL по умолчанию
sudo -i su postgres

Команда для создания БД:

createdb averobo_logs
  • Создание БД через bash-команду
sudo -u postgres createdb averobo_logs

CRONTAB

Для установки расписания выполнения программ используется crontab. Чтобы запустить текстовый редактор и добавить необходимые записи в файл конфигурации cron необходимо выполнить следующую команду:

crontab -e

Запись состоит из семи полей: минуты часы день месяц день_недели выполняющая_программа команда Следовательно, для запуска скрипта для заполнения пятнадцатиминутных значений необходимо прописать время в формате */15 * * * *, путь до расположения интерпретатора Python3 и путь до выполняемого файла.

*/15 * * * * /usr/bin/python3 /home/alenanaz/test_myfunctions.py

Аналогично будут составлены записи для заполнения почасовых и ежедневных значений.

10 * * * * /usr/bin/python3 /home/alenanaz/test_myfunctions_hour.py
15 0 * * * /usr/bin/python3 /home/alenanaz/test_myfunctions_day.py
doc/2003/mgul.200300.001.3201.txt · Последние изменения: 2024/08/11 01:07 — daftwi