Успеваемость в таблице
Освоить процесс развертывания кластера GreenPlum с использованием контейнеризации, настроить внешнее подключение через порт 5433 и выполнить базовые манипуляции с данными с учетом специфики распределенной базы данных.
Настройка окружения:
- Установка DBeaver Community, Docker, Docker Desktop
- Запустите Docker Desktop
- В верхней строке поиска введите название образа: projectairws/greenplum
- Перейдите на вкладку Images (в результатах поиска)
- Нажмите кнопку Pull (Скачать) напротив образа
- Дождитесь завершения загрузки (статус изменится на Downloaded)
Запуск контейнера:
- Откройте командную строку и запустите следующую команду:
docker run -d --name greenplum -p 5433:5432 -p 2222:22 -v greenplum_data:/gpdata projectairws/greenplum:latest sh -lc "/app/start_greenplum.sh && tail -f /dev/null"
- Подождать небольшое количество времени для инициализации кластера
Соединение с базой данных:
- Запускаем DBeaver и создаем новое соединение
- Выбираем в поиске GreenPlum
- Host = localhost, port = 5433, (db, login, password) = gpadmin
- Нажимаем на тест соединения. В случае успеха сохраняем конфигурацию и раскрываем объект на левой панели в DBeaver
- Прописываем команду:
drop table if exists tbl_for_test;
create table tbl_for_test (id int, name varchar) distributed by (id);
insert into tbl_for_test (id, name) values (1, '1');
analyze tbl_for_test;
select * from tbl_for_test;
drop table if exists tbl_for_test;
ИТ-гигиена:
- Создать репозиторий в GitVerse
- Создать папку greenplum-launch
- Создать файл docker_greenplum_launch.sh и вставить команду для запуска контейнера
- Создать greenplum_launch.md и прописать гайд по запуску со ссылкой на файл greenplum-launch/docker_greenplum_launch.sh со скриншотом работоспособности решения
- Вернуться в корневую директорию и создать файл README.md.
- Дать вводную информацию по репозиторию в этом файле и написать содержание
- В качестве пунктов содержания сослаться на файл greenplum-launch/greenplum_launch.md
- Контейнер с БД запущен и работает
- Решение показано через DBeaver
- Запросы отправляются без ошибок
- Есть репозиторий с данными лабораторной работы
Освоить процесс развёртывания кластера ClickHouse с использованием контейнеризации, настроить внешнее подключение через стандартные порты и выполнить базовые операции с данными с учётом особенностей колоночной архитектуры базы данных.
-
Установите необходимые инструменты:
- DBeaver Community Edition
- Docker и Docker Desktop
-
Запустите Docker Desktop.
-
Найдите образ ClickHouse в Docker Hub:
- Введите в строке поиска: yandex/clickhouse-server
- Перейдите на вкладку Images.
- Кликните на кнопку Pull, дождитесь окончания скачивания.
Откройте терминал и выполните следующую команду для запуска контейнера ClickHouse:
docker run -d --name clickhouse -p 8123:8123 -p 9000:9000 -v clickhouse_data:/var/lib/clickhouse yandex/clickhouse-server
Подождите несколько минут для полной инициализации сервера.
- Запустите DBeaver и создайте новое соединение.
- Выберите драйвер ClickHouse.
- Укажите параметры подключения:
- Host: localhost
- Port: 8123
- Database Name: default
- User: default
- Password: оставьте пустым
Проверьте соединение кнопкой Test Connection. Сохраните конфигурацию и раскройте объекты слева в интерфейсе DBeaver.
Выполните следующий скрипт для проверки функциональности:
drop table if exists tbl_for_test;
create table tbl_for_test (
id UInt32,
name String
) engine = MergeTree()
order by id;
insert into tbl_for_test
values
(1, 'Иван'),
(2, 'Марина');
select *
from tbl_for_test;
drop table if exists tbl_for_test;
В репозитории:
- Создайте папку clickhouse-launch.
- Внутри неё создайте файл docker_clickhouse_launch.sh и поместите туда команду запуска контейнера.
- Создайте файл clickhouse_launch.md с подробным руководством по запуску контейнера и подключению к серверу. Добавьте ссылку на файл скрипта и сделайте скриншоты успешного выполнения команды.
- В корневой директории репозитория создайте файл README.md с общей информацией о проекте и содержанием, ссылающимся на созданный вами markdown-файл.
- Сервер ClickHouse успешно запущен и доступен.
- Подключение к базе данных реализовано через DBeaver.
- Все SQL-запросы выполняются без ошибок.
- Репозиторий содержит всю необходимую документацию и исполняемые файлы.
Успеваемость ведется в гугл-таблицах.
Освоить установку PostgreSQL, настройку сервера, подключение к базе данных через DBeaver, создание и наполнение базы данных, а также изучить основы резервного копирования и восстановления, включая создание частичных резервных копий.
- Установить PostgreSQL на локальную машину (личный компьютер/ноутбук) или сервер
- Настроить сервер PostgreSQL (порт, аутентификация, параметры конфигурации)
- Установить и настроить DBeaver для подключения к серверу PostgreSQL
- Создать базу данных с именем university_db
- Написать скрипты для создания таблиц (например, students, courses, grades) и наполнения их тестовыми данными
- Реализовать процедуру полного резервного копирования базы данных с помощью утилиты pg_dump
- Создать частичную резервную копию:
◦ Использовать pg_dump с параметром --table для резервного копирования только одной таблицы (например, students)
◦ Использовать pg_dump с параметром --schema-only для резервного копирования только структуры базы данных (без данных)
◦ Использовать pg_dump с параметром --data-only для резервного копирования только данных (без структуры)
Пример команд для частичного резервного копирования:
- Резервное копирование одной таблицы:
pg_dump -U postgres -d university_db --table=students -f students_backup.sql
- Резервное копирование только структуры базы данных:
pg_dump -U postgres -d university_db --schema-only -f schema_backup.sql
- Резервное копирование только данных:
pg_dump -U postgres -d university_db --data-only -f data_backup.sql
- Восстановление из частичной резервной копии:
psql -U postgres -d university_db -f students_backup.sql
- Восстановить базу данных из полной и частичной резервной копии с помощью утилиты psql
- Настроить журнал аудита (логирование действий) и журнал транзакций (WAL — Write-Ahead Logging)
• Исследовать параметры конфигурации PostgreSQL (например, shared_buffers, work_mem) и объяснить их влияние на производительность.
• Настроить автоматическое резервное копирование с помощью cron (Linux) или планировщика задач (Windows).
- Какие параметры pg_dump используются для создания частичной резервной копии?
- В чем разница между полным и частичным резервным копированием?
- Как восстановить данные из частичной резервной копии?
- Какие преимущества и недостатки у резервного копирования только структуры или только данных?
Изучить методы анализа и оптимизации SQL-запросов с помощью плана выполнения.
- Создать базу данных test_db и наполнить её данными (например, таблицы orders, customers, products).
- Написать несколько SQL-запросов разной сложности (например, с JOIN, GROUP BY, подзапросами).
- Использовать команду EXPLAIN для анализа плана выполнения запросов.
- Оптимизировать запросы:
- Добавить индексы на часто используемые столбцы.
- Переписать запросы для уменьшения времени выполнения.
- Исключить лишние операции (например, сортировку, если она не требуется).
- Сравнить время выполнения запросов до и после оптимизации.
Исследовать влияние индексов на производительность запросов. Удалить индексы и сравнить время выполнения запросов.
- Как правильно читать план запроса?
Изучить механизмы транзакций в PostgreSQL и управление доступом пользователей.
- Создать базу данных bank_db с таблицами accounts (id, balance) и transactions (id, account_id, amount, type).
- Реализовать транзакции:
- Перевести средства с одного счета на другой.
- Обеспечить атомарность операции (либо оба изменения применяются, либо ни одно).
- Изучить уровни изоляции транзакций (READ COMMITTED, REPEATABLE READ, SERIALIZABLE).
- Настроить права доступа для разных пользователей:
- Создать пользователей admin, manager, analyst.
- Настроить права:
• admin — полный доступ ко всем таблицам.
• manager — доступ на чтение и запись к таблице transactions.
• analyst — доступ только на чтение к таблице accounts.
- Проверить работу прав доступа, выполняя запросы от имени разных пользователей.
Исследовать блокировки (locks) в PostgreSQL и их влияние на параллельное выполнение транзакций.