upd lab 1.2

This commit is contained in:
nik
2025-10-11 20:02:43 +03:00
parent 82bd974557
commit 93d31f9da7
51 changed files with 223 additions and 1 deletions

View File

@@ -1,207 +0,0 @@
#set text(size: 1.3em)
#show link: underline
#set page(footer: context {
if counter(page).get().first() > 1 [
#align(center)[
#counter(page).display("1")
]
]
})
#show raw.where(block: false): box.with(
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
radius: 2pt,
)
#show raw.where(block: true): block.with(
fill: luma(240),
inset: 10pt,
radius: 4pt,
)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Практическая работа №1]
#align(center)[Установка и первоначальная настройка субд postgresql.]
\
\
\ //#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3221]
#align(right)[Проверила:]
#align(right)[Татьяна Евгеньевна Войтюк]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
=== Цель работы:
Освоить базовые приёмы установки и настройки субд "postgresql", научиться использовать pgadmin для администрирования, развернуть учебную базу данных "demo" и ознакомиться с её структурой, а также закрепить навыки создания баз данных и схем на примере учебной бд "hr".
=== Задачи, решаемые при выполнении работы.
- Установить и настроить субд postgresql и клиент pgadmin.
- Проверить правильность работы сервера с помощью выполнения тестового запроса.
- Развернуть учебную базу demo и убедиться в доступности её объектов.
- Ознакомиться со структурой базы demo и проанализировать основные сущности.
- Создать учебную базу данных двумя способами: через графический интерфейс и с помощью `CREATE DATABASE`.
- Создать в базе данных hr схемы для группировки объектов.
=== Исходные данные.
- Сервер с установленными docker и контейнерами:
- postgres:16 сервер субд postgresql,
- dpage/pgadmin4 веб-интерфейс для администрирования.
- Учебная база данных demo.
=== Выполнение работы.
==== Задание 1. Установка необходимого ПО.
Для выполнения работы была установлена субд postgresql и приложение pgadmin. Установка производилась в среде docker.
На сервере был установлен docker и запущены контейнеры: `postgres:16`, `dpage/pgadmin4`.
#align(center)[#image("assets/18.png")]
Контейнеры были объединены в общую сеть docker, чтобы pgadmin мог напрямую подключаться к postgres.
#align(center)[#image("assets/19.png")]
pgadmin стал доступен по адресу #link("https://db.fymio.us")[db.fymio.us]
#align(center)[#image("assets/20.png")]
В pgadmin был зарегистрирован новый сервер. В настройках подключения были указаны следующие параметры:
#align(center)[#image("assets/16.png")]
#align(center)[#image("assets/17.png")]
В "Object Explorer" слева я раскрыл узел "Databases":
#align(center)[#image("assets/1.png")]
Затем я нажал ПКМ по базе "postgres" и выбрал инструмент "Querry Tool":
#align(center)[#image("assets/2.png")]
В открывшемся окне написал запрос проверки версии сервера `SELECT version();`. После этого нажал кнопку "Execute script".
#align(center)[#image("assets/3.png")]
В поле "Data Output" я увидел версию `PostgreSQL 16.10`.
==== Задание 2. Подключение учебной базы данных.
После выполнения следующих команд на сервере учебная база данных появилась в "Object Explorer".
```bash
wget https://edu.postgrespro.ru/demo-medium.zip
unzip demo-medium.zip
docker exec -i postgres psql -U postgres -d postgres < demo-medium-20170815.sql
```
После появления базы данных "demo", в "Querry Tool" я выполнил следующий скрипт:
```sql
SELECT * FROM bookings.aircrafts_data;
```
#align(center)[#image("assets/4.png")]
==== Задание 3. Ознакомление с учебной БД.
Я ознакомился с описанием БД на сайте #link("https://postgrespro.ru/education/demodb")[postgrespro.ru/education/demodb]
==== Задание 4. Создание учебной базы данных HR средствами pgAdmin.
Я нажал ПКМ на узле "Databases" и выбрал меню "Create" затем "Database...".
#align(center)[#image("assets/5.png")]
Затем в октрывшемся окне я выставил следующие настройки.
#align(center)[#image("assets/6.png")]
#align(center)[#image("assets/7.png")]
Затем я сохранил настройки. В "Object Explorer" появилась созданная база.
#align(center)[#image("assets/8.png")]
После этого я удалил базу через ПКМ.
#align(center)[#image("assets/9.png")]
==== Задание 5. Создание учебной базы данных HR средствами PL/pgSQL
Я открыл "Querry Tool" базы данных `postgres`. И прописал следующий скрипт.
```sql
CREATE DATABASE hr
WITH ENCODING 'UTF8'
LC_COLLATE 'C'
LC_CTYPE 'C'
TEMPLATE template0
CONNECTION LIMIT 1;
```
#align(center)[#image("assets/10.png")]
После этого в списке баз появилась созданная.
#align(center)[#image("assets/11.png")]
==== Задание 6. Создание схем.
Я развернул вкладку для создания схем.
#align(center)[#image("assets/12.png")]
И создал схему "EmployeesDepartments". В "Object Explorer" видно что схема создана.
#align(center)[#image("assets/13.png")]
Чтобы создать вторую схему, я открыл "Querry Tool" к базе `hr`. И прописал следующие запросы:
```cs
CREATE SCHEMA IF NOT EXISTS "countries"
AUTHORIZATION postgres;
```
#align(center)[#image("assets/14.png")]
В "Object Explorer" видна добавленная схема:
#align(center)[#image("assets/15.png")]
=== Выводы.
В ходе выполнения работы я освоил базовые приёмы установки и настройки субд postgresql, а также работу с клиентским приложением pgadmin. Было развернуто необходимое программное обеспечение в контейнерах Docker.
В процессе работы удалось установить postgresql и pgadmin, загрузить и подключить учебную базу данных и выполнить тестовые запросы к ней, ознакомиться со структурой demo и основными сущностями, создать учебную базу данных двумя способами, через графический интерфейс pgadmin и с использованием `CREATE DATABASE`, создать в базе две схемы: одну средствами pgadmin, вторую с помощью sql-запроса.
При выполнении работы возникли следующие трудности: при создании базы данных через SQL возникала ошибка с параметрами локали. Она была устранена с помощью указания `TEMPLATE template0` и нейтральной локали `C`. При подключении pgadmin к серверу пришлось настраивать отдельную docker-сеть и регистрировать контейнеры, чтобы обеспечить доступность сервиса по адресу #link("https://db.fymio.us")[`db.fymio.us`].