Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:2003:mgul.200300.001.3201 [2024/08/08 23:52] daftwi |
doc:2003:mgul.200300.001.3201 [2024/08/11 01:07] (текущий) daftwi |
||
---|---|---|---|
Строка 19: | Строка 19: | ||
Модель данных для таблиц main_table, table_with_time, half_path представлены в таблицах 2, 3, 4 соответсвенно: | Модель данных для таблиц 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> | ||
+ |