| .. | ||
| img | ||
| README.md | ||
Распределенные системы хранения данных
Рубежная работа
Tip
Everybody keeps talking about the SQL, but i've never seen the PREQL
Вариант
Первый поток
Вариант каждого задания определяется по ИСУ:
sXXXXAB
- Вариант для вопроса 1:
B - Вариант для вопроса 2:
(A + B) % 10 - Вариант для задания 3:
B % 2
Второй поток
TODO
Задание
Вопрос 1
- PostgreSQl: template0, template1, назначение, особенности работы.
- Архитектура PostgreSQL.
- Разделяемая память PostgreSQL.
- Буферная память процессов PostgreSQL.
- Процессы, обеспечивающие работу PostgreSQL.
- Системный каталог, организация, способы взаимодействия.
- Схема, особенности работы со схемами PostgreSQL, search_path.
- Управление доступом к данным в PostgreSQL, привилегии, пользователи.
- Роли в PostgreSQL. INHERIT, NOINHERIT.
- Установка PostgreSQL.
Вопрос 2
- Изоляция транзакций. Режимы для организации доступа к данным.
- PostgreSQL, создание Базы Данных.
- Файловая структура и конфигурация PostgreSQL.
- Табличные пространства. Назначение. Организация и настройка.
- VACCUM.
- steal/no-steal, force/no-force. ARIES.
- Логическое резервное копирование.
- Физическое резервное копирование.
- UNDO-журнал.
- REDO-журнал.
Задание 3
Предполагается, что в БД Education (в PostgreSQL) есть пользователи – student1, student2, teacher. Также в БД Education созданы таблицы Groups (в схеме studs) и Exams (в схемах studs и test). Изначально у student1, student2 нет прав на изменение каких-либо таблиц (в том числе Groups, Exams), teacher – имеет возможность добавлять данные в эти таблицы.
Напишите код для создания всех указанных пользователей (с описанными возможностями) и опишите необходимые действия (и конфигурационные файлы), чтобы пользователи могли подключиться к БД и:
- Вариант 0) при этом пользователи
student1,student2могли изменять таблицуstuds.Exams, пользовательstudent2должен иметь возможность изменять таблицуstuds.Groups(ystudent1нет такой возможности). Параметры подключения для пользователей – ТСP/IР, по имени пользователя. - Вариант 1) при этом пользователь
student2мог изменять таблицуstuds.Exams; пользовательstudent1должен иметь возможность изменять таблицуstuds.Groups(ystudent2нет такой возможности). Параметры подключения для пользователей – ТСР/IР, по паролю.
При выполнении задания: нельзя добавлять напрямую привилегии на изменение каких-либо таблиц пользователям – student1, student2.
Разбор
Задание 3.
Вариант 0
student1иstudent2могут изменять таблицуstuds.Exams;student2может изменять таблицуstuds.Groups(уstudent1такой возможности нет);- Подключение по TCP/IP с аутентификацией по имени пользователя (без пароля).
1. Создание пользователей и ролей
CREATE USER student1;
CREATE USER student2;
CREATE USER teacher WITH PASSWORD 'teacher_password';
GRANT USAGE ON SCHEMA studs TO student1, student2, teacher;
GRANT USAGE ON SCHEMA test TO teacher;
CREATE ROLE exams_access;
CREATE ROLE groups_access;
GRANT INSERT, UPDATE, DELETE ON studs.Exams TO exams_access;
GRANT INSERT, UPDATE, DELETE ON studs.Groups TO groups_access;
GRANT exams_access TO student1, student2;
GRANT groups_access TO student2;
GRANT INSERT ON studs.Groups, studs.Exams, test.Exams TO teacher;
2. Настройка аутентификации
Добавим в файл pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
host education student1 0.0.0.0/0 trust # Аутентификация по имени
host education student2 0.0.0.0/0 trust
host education teacher 0.0.0.0/0 md5 # Для teacher требуется пароль
Перезагрузим PostgreSQL:
pg_ctl reload -D $PGDATA
Вариант 1
student2может изменять таблицуstuds.Exams;student1может изменять таблицуstuds.Groups;- Подключение по TCP/IP с аутентификацией по паролю.
1. Создание пользователей и ролей
CREATE USER student1 WITH PASSWORD 'password1';
CREATE USER student2 WITH PASSWORD 'password2';
CREATE USER teacher WITH PASSWORD 'teacher_password';
GRANT USAGE ON SCHEMA studs TO student1, student2, teacher;
GRANT USAGE ON SCHEMA test TO teacher;
CREATE ROLE update_exams_role;
CREATE ROLE update_groups_role;
GRANT INSERT, UPDATE, DELETE ON studs.Exams TO update_exams_role;
GRANT INSERT, UPDATE, DELETE ON studs.Groups TO update_groups_role;
GRANT update_groups_role TO student1;
GRANT update_exams_role TO student2;
GRANT INSERT ON studs.Groups, studs.Exams, test.Exams TO teacher;
2. Настройка аутентификации
Добавим в файл pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
host education student1 0.0.0.0/0 md5 # Аутентификация по паролю
host education student2 0.0.0.0/0 md5
host education teacher 0.0.0.0/0 md5
Перезагрузим PostgreSQL:
pg_ctl reload -D $PGDATA
Полезные ссылки
| Ссылка | Описание |
|---|---|
| лекции/ | Стоит прочитать лекции до лекции 6 часть II включительно |
| github.com/Imtjl/distributed-storage-systems/frontier-prep | Теоретический материал для подготовки к рубежной работе и песочница PostgreSQL для практики |
| github.com/RedGry/ITMO/RSHD/rybej_var1.jpg | Рубежная работа 2023 |
| postgrespro.ru/docs/postgresql/17/user-manag sql-ex.ru/blogs/PostgreSQL_roli_i_privilegii.html |
Роли и привилегии, для задания 3 |
Лицензия
Проект доступен с открытым исходным кодом на условиях Лицензии GNU GPL 3.
Авторские права 2025 Max Barsukov
Поставьте звезду ⭐, если вы нашли этот проект полезным.


