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

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


doc:2006:mgul.200600.001.3201

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:2006:mgul.200600.001.3201 [2024/06/29 11:52]
rkushnarenko
doc:2006:mgul.200600.001.3201 [2024/07/01 10:19] (текущий)
rkushnarenko
Строка 44: Строка 44:
 Если необходимо установить Docker на какую-либо другую операционную систему,​ то посмотрите официальную документацию:​ https://​docs.docker.com/​ Если необходимо установить Docker на какую-либо другую операционную систему,​ то посмотрите официальную документацию:​ https://​docs.docker.com/​
  
-===== 2. Настройка баз данных ===== +===== 2. Развертывание приложения =====
-На самом деле все базы данных уже сконфигурированы для начала работы. Необходимо только перейти в папку InfluxDB и удалить в ней содержимое папки db. Тоже самое необходимо проделать для PostgresDB. +
- +
-===== 3. Развертывание приложения =====+
 После успешной установки Docker, можно разворачивать приложение. Для того, чтобы развернуть приложение необходимо перейти в папку проекта. Из самого корня папки проекта необходимо выполнить команду:​ После успешной установки Docker, можно разворачивать приложение. Для того, чтобы развернуть приложение необходимо перейти в папку проекта. Из самого корня папки проекта необходимо выполнить команду:​
-<​code>​docker compose up</​code>​+<​code>​docker-compose up</​code>​
  
 После выполнения этой команды Docker скачает все нужные изображения,​ которые используются в этом приложении и запустить контейнеры. После выполнения этой команды Docker скачает все нужные изображения,​ которые используются в этом приложении и запустить контейнеры.
Строка 74: Строка 71:
   influxdb:   influxdb:
     container_name:​ influxdb     container_name:​ influxdb
-    image: influxdb:latest+    image: influxdb:2
     ports:     ports:
       - '​8086:​8086'​       - '​8086:​8086'​
Строка 134: Строка 131:
  
 ====== Полезные команды для настройки и управления системой ====== ====== Полезные команды для настройки и управления системой ======
 +<​code>​docker-compose up -d --no-deps --build app</​code>​
 +Описание команды:​
 +  * ''​docker-compose up''​ запускает контейнеры,​ определенные в файле docker-compose.yml,​ в detached режиме (в фоне).
 +  * ''​-d''​ указывает,​ что контейнеры должны запускаться в detached режиме.
 +  * ''​--no-deps''​ указывает,​ что не нужно ожидать,​ пока все зависимости будут запущены. Контейнеры запускаются в порядке,​ указанном в файле docker-compose.yml.
 +  * ''​--build''​ указывает,​ что нужно собрать образы контейнеров заново,​ если они не существуют или не обновлены.
 +  * ''​app''​ указывает,​ что только контейнеры,​ определенные в секции app в файле docker-compose.yml,​ должны быть запущены.
 +
 +В целом, эта команда запускает только контейнер app в файле docker-compose.yml,​ в detached режиме,​ не ожидая запуска всех зависимостей,​ и собирает образы заново,​ если они не существуют или не обновлены.
 +
 +Команда может быть полезна тем, что app – это контейнер,​ который является основным нашим приложением и мы можем легко изменять код, не ломая базы данных.
 +
 +Пример использования:​ мы можем переписать какой-нибудь код для интерфейса и выполнив эту команду пересоберется только наше приложение,​ не перезапуская базы данных.
 +
 +<​code>​docker exec -it influxdb</​code>​
 +Описание команды:​
 +  * ''​docker exec''​ запускает новый процесс в существующем контейнере.
 +  * ''​-it''​ указывает,​ что процесс должен запускаться в интерактивном режиме и должен иметь терминал.
 +  * ''​influxdb''​ указывает,​ что процесс должен запускаться в контейнере с именем influxdb. ​
 +
 +В целом, эта команда запускает интерактивный терминал в контейнере с именем influxdb, позволяя выполнять команды в этом контейнере.
 +
 +Эту команду нужно использовать в комбинации с другими,​ она позволяет только выполнить команду внутри контейнера influxdb, но необходимо еще указать,​ что именно нужно сделать.
 +
 +Например,​ можно добавить к ней ''​influx delete --bucket measurements-bucket --start 1970-01-01T00:​00:​00Z --stop 2024-05-23T00:​00:​00Z.''​
 +
 +<​code>​influx delete --bucket measurements-bucket --start 1970-01-01T00:​00:​00Z --stop 2024-05-23T00:​00:​00Z</​code>​
 +Описание команды:​
 +  * ''​influx delete''​ указывает,​ что команда должна выполняться для удаления данных из базы данных InfluxDB.
 +  * ''​--bucket measurements-bucket''​ указывает,​ что команда должна выполняться для указанного бакета (bucket) с именем measurements-bucket.
 +  * ''​--start 1970-01-01T00:​00:​00Z''​ указывает,​ что команда должна начать удаление данных с указанной даты и времени (start).
 +  * ''​--stop 2024-05-23T00:​00:​00Z''​ указывает,​ что команда должна остановить удаление данных по указанной дате и времени (stop).
 +
 +В целом, эта команда удаляет все данные из бакета measurements-bucket InfluxDB, начиная с даты 1 января 1970 года 00:00:00 UTC и заканчивая днём 23 мая 2024 года 00:00:00 UTC. 
 +
 +Бакет для influxdb это, как таблица в реляционной базе данных. В нашем случае у нас используется один единственный бакет, который хранит все данные по приборам – measurements-bucket.
 +
 +Также можно еще выполнить команду ''​docker exec -it influxdb influx''​. Она даст подсказку о всех командах для influxdb.
 +
 +<​code>​docker exec -it postgresdb psql -U my-user postgresdb</​code>​
 +Описание команды:​
 +  * ''​docker exec''​ запускает новый процесс в существующем контейнере.
 +  * ''​-it''​ указывает,​ что процесс должен запускаться в интерактивном режиме и должен иметь терминал.
 +  * ''​postgresdb''​ указывает,​ что процесс должен запускаться в контейнере с именем postgresdb.
 +  * ''​psql''​ указывает,​ что процесс должен запускаться с помощью команды psql, которая является клиентским инструментом для взаимодействия с базой данных PostgreSQL.
 +  * ''​-U my-user''​ указывает,​ что пользователь,​ с которым будет выполняться команда psql, имеет имя my-user.
 +  * ''​postgresdb''​ указывает,​ что команда psql должна выполняться для базы данных с именем postgresdb.
 +
 +Эта команда запускает интерактивный терминал в контейнере postgresdb, позволяя выполнять команды psql для базы данных postgresdb под пользователем my-user.
 +
 +В случае с Postgres, управление немного другое. Достаточно запустить только эту команду,​ и мы войдем в терминал базы, изнутри которого уже можно пользоваться SQL-запросами для управления данными.
 +
 +====== ПРИЛОЖЕНИЕ 1 ======
 +===== Структура базы данных в InfluxDB =====
 +Во входных данных передаются два важных поля: Akey и Serial. На основе этих полей будет формироваться ключ. Они используются для формирования уникального ключа, который будет привязан к остальным полям, переданным в JSON пакете. Это позволяет создавать наборы данных,​ связанные с этим ключом,​ и хранить их в базе данных. ​
 +
 +Каждый набор данных,​ или запись,​ имеет временную метку и поля в формате "​ключ-значение"​. Это позволяет хранить информацию о различных параметрах прибора. ​
 +
 +Когда новое устройство вводится в систему,​ его данные попадают в базу, и для него формируется его модель.
 +
 +===== Структура базы данных в PostgreSQL =====
 +{{:​doc:​2006:​erd.png|}}
 +=== Рисунок 1. ===
 +
 +В PostgreSQL будут находится 3 таблицы (рис. 1):
 +  * **DeviceInfos** – зарегистрированные приборы
 +  * **Users** – пользователи
 +  * **CalibrationItems** – калибровочные данные
 +
 +**Таблица DeviceInfos**
 +
 +Таблица DeviceInfos предназначена для хранения информации о зарегистрированных приборах в системе. Она содержит следующие поля:
 +  * **Id** (первичный ключ) – уникальный идентификатор прибора,​ который может быть использован для однозначной идентификации записи в таблице.
 +  * **Name** – название прибора,​ которое может быть полезно для пользователей при работе с системой.
 +  * **Serial** – серийный номер прибора,​ который может быть использован для отслеживания и идентификации конкретного физического устройства.
 +  * **AuthKey** – ключ аутентификации прибора в системе,​ который используется для подтверждения подлинности данных,​ передаваемых прибором.
 +  * **X** и **Y** – координаты расположения прибора,​ которые могут быть использованы для визуализации данных на карте или для анализа пространственных закономерностей. Location - название места, где расположен прибор,​ что может быть полезно для организации и управления приборами.
 +  * **IsDeleted** – флаг, указывающий,​ выведен ли прибор из системы. Это поле может быть использовано для логического удаления записей вместо физического удаления,​ что позволяет сохранять историю изменений.
 +
 +**Таблица Users**
 +
 +Таблица Users предназначена для хранения информации о пользователях системы. Она содержит следующие поля:
 +  * **Id** (первичный ключ) – уникальный идентификатор пользователя,​ который может быть использован для однозначной идентификации записи в таблице.
 +  * **Username** – имя пользователя,​ которое используется для входа в систему.
 +  * **Password** – пароль пользователя,​ который используется для аутентификации при входе в систему.
 +
 +**Таблица CalibrationItems**
  
 +Таблица CalibrationItems предназначена для хранения калибровочных данных,​ связанных с приборами. Она содержит следующие поля:
 +  * **Id** (первичный ключ) – уникальный идентификатор калибровочной записи,​ который может быть использован для однозначной идентификации записи в таблице.
 +  * **AuthKey** – ключ аутентификации прибора,​ связанного с калибровочной записью. Это поле используется для связи калибровочных данных с конкретным прибором.
 +  * **Sensor** – название датчика,​ для которого применяются калибровочные коэффициенты. Это поле может быть полезно в случае,​ если прибор имеет несколько датчиков,​ требующих отдельной калибровки.
 +  * **CreationDate** – время создания калибровочной записи,​ которое может быть использовано для отслеживания истории калибровок и выявления возможных изменений.
 +  * **Coefficients** – массив коэффициентов,​ используемых для калибровки датчика. Это поле может содержать один или несколько коэффициентов,​ в зависимости от сложности калибровки.
doc/2006/mgul.200600.001.3201.1719651165.txt.gz · Последние изменения: 2024/06/29 11:52 — rkushnarenko