maxbarsukov-itmo/6 рсхд/рубежка
2025-04-08 12:40:26 +03:00
..
img feat(dbms): add test#1 photos 2025-04-08 12:40:26 +03:00
README.md feat(dbms): add test#1 photos 2025-04-08 12:40:26 +03:00

Распределенные системы хранения данных

Рубежная работа

k-on-test

Tip

Everybody keeps talking about the SQL, but i've never seen the PREQL


Вариант

Первый поток

Вариант каждого задания определяется по ИСУ:
sXXXXAB

  1. Вариант для вопроса 1: B
  2. Вариант для вопроса 2: (A + B) % 10
  3. Вариант для задания 3: B % 2

Второй поток

TODO


Задание

Вопрос 1

📸 Фото вопроса 1 Рубежка. Вопрос 1.
  1. PostgreSQl: template0, template1, назначение, особенности работы.
  2. Архитектура PostgreSQL.
  3. Разделяемая память PostgreSQL.
  4. Буферная память процессов PostgreSQL.
  5. Процессы, обеспечивающие работу PostgreSQL.
  6. Системный каталог, организация, способы взаимодействия.
  7. Схема, особенности работы со схемами PostgreSQL, search_path.
  8. Управление доступом к данным в PostgreSQL, привилегии, пользователи.
  9. Роли в PostgreSQL. INHERIT, NOINHERIT.
  10. Установка PostgreSQL.

Вопрос 2

📸 Фото вопроса 2 Рубежка. Вопрос 2.
  1. Изоляция транзакций. Режимы для организации доступа к данным.
  2. PostgreSQL, создание Базы Данных.
  3. Файловая структура и конфигурация PostgreSQL.
  4. Табличные пространства. Назначение. Организация и настройка.
  5. VACCUM.
  6. steal/no-steal, force/no-force. ARIES.
  7. Логическое резервное копирование.
  8. Физическое резервное копирование.
  9. UNDO-журнал.
  10. REDO-журнал.

Задание 3

📸 Фото задания 3 Рубежка. Задание 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 (y student1 нет такой возможности). Параметры подключения для пользователей ТСP/IР, по имени пользователя.
  • Вариант 1) при этом пользователь student2 мог изменять таблицу studs.Exams; пользователь student1 должен иметь возможность изменять таблицу studs.Groups (y student2 нет такой возможности). Параметры подключения для пользователей ТСР/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

Поставьте звезду , если вы нашли этот проект полезным.