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

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


doc:2003:mgul.200300.001.3201

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
doc:2003:mgul.200300.001.3201 [2024/08/01 22:57]
daftwi создано
doc:2003:mgul.200300.001.3201 [2024/08/11 01:07] (текущий)
daftwi
Строка 1: Строка 1:
-Введение:​ +====== АННОТАЦИЯ ====== 
-  - Назначение документа: ​Спецификация предназначена для детализированного описания требований к реализации сущностей ​БД averobo на данных БД dbrobo с целью построения ретроспективного анализа данных. +Спецификация предназначена для детализированного описания требований к реализации сущностей ​АС averobo на данных БД dbrobo с целью построения ретроспективного анализа данных.
-  - Условие отбора данных:​+
  
-  +====== Условие отбора данных ====== 
-Отбор данных из БД Dbrobo:+  ​* ​Отбор данных из БД Dbrobo:
 Выборка данных осуществляется через API-запрос за последние 15 минут. По расаписанию планировщика crontab(работает от демона cron) первый запуск происходит в 00:00 каждого дня и срабатывает каждые 15 минут. ​ Выборка данных осуществляется через API-запрос за последние 15 минут. По расаписанию планировщика crontab(работает от демона cron) первый запуск происходит в 00:00 каждого дня и срабатывает каждые 15 минут. ​
-2.2. Отбор данных из БД Averobo:+  * Отбор данных из БД Averobo:
 Выборка данных осуществляется через подключение к БД через библиотеку psycopg2. В зависимости от типа осреднения происходит подключение к одной из двух таблиц. Для осреднений сутки и час обращение идет к таблице half_path, для осреднений неделя и месяц – table_with_time. Полное расписание планировщика представлено в таблице 1. Выборка данных осуществляется через подключение к БД через библиотеку psycopg2. В зависимости от типа осреднения происходит подключение к одной из двух таблиц. Для осреднений сутки и час обращение идет к таблице half_path, для осреднений неделя и месяц – table_with_time. Полное расписание планировщика представлено в таблице 1.
-<hidden>​Скрытый раздел</​hidden>+ 
 +Табл.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 ===== 
 +<code>sudo apt update 
 +sudo apt install postgresql postgresql-contrib 
 +sudo systemctl start postgresql.service</​code>​ 
 +===== Создание роли ===== 
 +Для создания баз данных используются роли в СУБД PostgreSQL. При создании роли автоматически создается БД с аналогичным названием. Для использования ​роли необходимо создать пользователя,​ к которому будет применена роль. Имя пользователя и роли должны совпадать. 
 +Создание пользователя для БД логов:​ 
 +<​code>​sudo adduser averobo_logs</​code>​ 
 +При создании пользователя необходимо не забывать о предоставлении,​ если необходимо sudo/root прав. Их необходимо предоставлять отдельно. 
 +Создание роли для БД логов:​ 
 +<​code>​sudo -u postgres createuser averobo_logs</​code>​ 
 +Создание пользователя для основной БД: 
 +<​code>​sudo adduser averobo</​code>​ 
 +Создание ​роли для основной БД: 
 +<​code>​sudo -u postgres createuser averobo</​code>​ 
 +  * После предоставления роли можно зайти в созданного пользователя через команду:​ 
 +<​code>​sudo -i su averobo_logs</​code>​ 
 +Для входа в PostgreSQL:​ 
 +<​code>​psql</​code>​ 
 +===== Создание таблицы для БД логов ===== 
 +Создание таблиц происходит непосредственно в PostgreSQL. Для этого необходимо авторизоваться через пользователя,​ к базе данных которого нужно произвести подключение. Данный шаг показан в предыдущем разделе. 
 +  * Создание таблицы для логирования:​ 
 +<​code>​create table logs ( 
 +             date timestamp 
 +             , level character varying(25) 
 +             , function character varying(25) 
 +             , message character varying(10000) 
 +);</​code>​ 
 +===== Создание таблицы для основной БД ===== 
 +  * Создание таблицы для неосредненных значений:​ 
 +<​code>​create table half_path ( 
 +             date timestamp without time zone 
 +             , name character varying(50) 
 +             , average character varying(50) 
 +             , sum json 
 +             , num json  
 +);</​code>​ 
 +  * Создание таблицы для хранения данных формата дата-время:​ 
 +<​code>​create table half_path ( 
 +             date timestamp without time zone 
 +             , name character varying(50) 
 +             , average character varying(50) 
 +             , json_file json 
 +);</​code>​ 
 +  * Создание таблицы для хранения данных формата дата: 
 +<​code>​create table half_path ( 
 +             date date 
 +             , name character varying(50) 
 +             , average character varying(50) 
 +             , json_file json 
 +);</​code>​ 
 + 
 +===== Проверки после создания таблиц ===== 
 + 
 +Проверка наличия таблицы:​ 
 +<​code>​select * from logs;</​code>​ 
 +Просмотр всех существующих таблиц в БД: 
 +<​code>​\dt</​code>​ 
 +Просмотр полей и деталей о колонках в конкретной таблице:​ 
 +<​code>​\d logs</​code>​ 
 + 
 +===== Если база данных не создалась автоматически ===== 
 +  * Создание БД через пользователя PostgreSQL по умолчанию 
 +<​code>​sudo -i su postgres</​code>​ 
 +Команда для создания БД: 
 +<​code>​createdb averobo_logs</​code>​ 
 +  * Создание БД через bash-команду 
 +<​code>​sudo -u postgres createdb averobo_logs</​code>​ 
 + 
 + 
 + 
 + 
 +====== CRONTAB ====== 
 +Для установки расписания выполнения программ используется **crontab**. ​ Чтобы запустить текстовый редактор и добавить необходимые записи в файл конфигурации cron необходимо выполнить следующую команду:​ 
 +<​code>​crontab -e</​code>​ 
 +Запись состоит из семи полей:​ 
 +минуты ​  ​часы ​  ​день ​ месяц ​  ​день_недели ​ выполняющая_программа ​  ​команда 
 +Следовательно,​ для запуска скрипта для заполнения пятнадцатиминутных значений необходимо прописать время в формате */15 * * * *, путь до расположения интерпретатора Python3 и путь до выполняемого файла. 
 +<​code>​*/​15 * * * * /​usr/​bin/​python3 /​home/​alenanaz/​test_myfunctions.py</​code>​ 
 +Аналогично будут составлены записи для заполнения почасовых и ежедневных значений. 
 +<​code>​10 * * * * /​usr/​bin/​python3 /​home/​alenanaz/​test_myfunctions_hour.py</​code>​ 
 +<​code>​15 0 * * * /​usr/​bin/​python3 /​home/​alenanaz/​test_myfunctions_day.py</code> 
 +                                                                                 
doc/2003/mgul.200300.001.3201.1722542220.txt.gz · Последние изменения: 2024/08/01 22:57 — daftwi