Это старая версия документа!
Спецификация предназначена для детализированного описания требований к реализации сущностей АС averobo на данных БД dbrobo с целью построения ретроспективного анализа данных.
Выборка данных осуществляется через API-запрос за последние 15 минут. По расаписанию планировщика crontab(работает от демона cron) первый запуск происходит в 00:00 каждого дня и срабатывает каждые 15 минут.
Выборка данных осуществляется через подключение к БД через библиотеку 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 | Сумма неосредненных значений |
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.
sudo -i su postgres
Команда для создания БД:
createdb averobo_logs
sudo -u postgres createdb averobo_logs
Для установки расписания выполнения программ используется 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