User Tools

Site Tools


db:new

This is an old revision of the document!


Базы данных

базы_данных&navbar

🎓 Лабораторные работы

🎯 Лабораторная работа 1. Проектирование структуры БД

<wrap important>Важно! Согласовать модель с преподавателем до продолжения работы</wrap>

Цель: Спроектировать структуру базы данных, соответствующую бизнес-требованиям и нормализованную до 3NF.

📋 Требования:

Требование Описание
———————-
Требование 1 Соответствие всем частям задания (структура + выходные документы)
Требование 2 3-5 таблиц в базе данных
Требование 3 Нормализация до третьей нормальной формы

🚀 Шаги выполнения:

1. **Выбор задачи** из учебных пособий:
   * {{db:варианты_заданий_по_уд.pdf| Варианты заданий к.т.н. Сосинской С.С.}}
   * Задачи, сгенерированные [[db:nn_tasks|нейронной сетью]]
2. **Проектирование ER-диаграммы** в современных инструментах:
   * [[https://dbdiagram.io|DBDiagram]] (рекомендуется)
   * [[https://draw.io|Draw.io]]
   * [[https://plantuml.com|PlantUML]]
3. **Валидация модели** через [[https://github.com/eugeneai/lab-db-2025-1|Deepseek]]
4. **Согласование** полученной модели с преподавателем

📊 Пример проекта: Github репозиторий

🎯 Лабораторная работа 2. Инсталляция БД на сервере

Цель: Практическое развертывание базы данных и работа с SQL.

🔧 Инструменты: * Клиент БД: pgAdmin 4 или DBeaver * СУБД: PostgreSQL 15+

📋 Задачи:

  1. Преобразование ER-диаграммы в логическую модель
  2. Проектирование физической модели
  3. Создание DDL-запросов для PostgreSQL
  4. Заполнение таблиц данными (минимум 4 строки)
  5. Выполнение содержательных SELECT-запросов с JOIN 2-3 таблиц
-- Пример запроса с JOIN
SELECT u.name, o.order_date, p.product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id;

🎯 Лабораторная работа 3. Представления и процедуры

Цель: Освоение механизмов абстракции данных и программных модулей.

📋 Задачи:

  1. Создание представлений для выходных документов
  2. Разработка хранимых процедур с параметрами
  3. Оптимизация запросов через представления
-- Пример создания представления
CREATE VIEW sales_report AS
SELECT c.name, SUM(o.amount) AS total_sales
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.name;

🎯 Лабораторная работа 4. Анализ производительности

Цель: Освоение методов анализа и оптимизации производительности БД.

📋 Задачи:

  1. Создание генератора данных (20 000 записей в каждой таблице)
  2. Анализ планов выполнения запросов (EXPLAIN ANALYZE)
  3. Оптимизация БД через индексы и настройки
  4. Сравнение производительности до/после оптимизации

🔧 Инструменты: ```sql EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM large_table WHERE condition; ```

🎯 Лабораторная работа 5. Триггеры и аудит

Цель: Реализация бизнес-логики на уровне БД и системы аудита.

📋 Задачи:

  1. Триггеры каскадного удаления для связей “один-ко-многим”
  2. Триггеры аудита изменений (INSERT, UPDATE, DELETE)
  3. Создание таблицы-журнала для отслеживания изменений
-- Пример триггера аудита
CREATE TRIGGER audit_customer_changes
    AFTER INSERT OR UPDATE OR DELETE ON customers
    FOR EACH ROW EXECUTE FUNCTION log_customer_changes();

🚀 ТОП-ИТ УРОВЕНЬ

💡 Лабораторная работа 6. Репликация и кластеризация

<wrap tip>Продвинутый уровень: Работа с распределенными системами</wrap>

Цель: Освоение принципов построения отказоустойчивых систем.

📋 Задачи:

  1. Настройка master-slave репликации PostgreSQL
  2. Создание кластера из 2-х узлов
  3. Тестирование отказоустойчивости
  4. Нагрузочное тестирование кластера

🔧 Технологии:

  1. *Docker для контейнеризации - PgPool-II для балансировки нагрузки - WAL-G для непрерывного архивирования 📊 Критерии оценки: ^ Задача ^ Баллы ^ | Настройка репликации | 40 | | Тестирование отказоустойчивости | 30 | | Документация архитектуры | 30 | ==== 💡 Лабораторная работа 7. Миграции и CI/CD для БД ==== Цель: Освоение современных практик управления изменениями БД. 📋 Задачи: - Настройка Flyway/Liquibase для миграций - Создание pipeline для автоматического развертывания - Реализация отката миграций (rollback) - Интеграция с GitLab CI/GitHub Actions 📁 Структура проекта: <code> db/ ├── migrations/ │ ├── V1Create_tables.sql │ ├── V2Add_indexes.sql │ └── V3__Insert_test_data.sql ├── flyway.conf └── docker-compose.yml </code> ==== 💡 Лабораторная работа 8. Оптимизация для высоких нагрузок ==== Цель: Освоение техник оптимизации для high-load систем. 📋 Задачи: - Партиционирование больших таблиц - Настройка connection pooling - Кэширование запросов с Redis - Мониторинг производительности с Prometheus + Grafana 📊 Метрики для мониторинга: * QPS (Queries Per Second) * Latency (время ответа) * Connection pool usage * Cache hit ratio ==== 💡 Лабораторная работа 9. Безопасность и авторизация ==== Цель: Реализация комплексной системы безопасности БД. 📋 Задачи: - Настройка RBAC (Role-Based Access Control) - Шифрование чувствительных данных - Аудит безопасности с помощью pgAudit - Создание политик row-level security <code sql> – Пример политики безопасности CREATE POLICY user_policy ON users FOR ALL USING (current_user = user_role); </code> ==== 💡 Лабораторная работа 10. NoSQL и гибридные решения ==== Цель: Изучение альтернативных подходов к хранению данных. 📋 Задачи: - Интеграция PostgreSQL с MongoDB - Использование JSONB для документной модели - Сравнение производительности SQL vs NoSQL - Реализация гибридного решения 🔧 Стек технологий: * PostgreSQL с JSONB * MongoDB для документного хранения * Redis для кэширования ===== 📈 Система оценивания ===== 🎓 Базовый уровень (лабы 1-5): ^ Лабораторная ^ Макс. балл ^ Срок сдачи ^ | Лаб 1. Проектирование | 20 | 3 недели | | Лаб 2. Инсталляция | 25 | 2 недели | | Лаб 3. Представления | 20 | 2 недели | | Лаб 4. Производительность | 20 | 2 недели | | Лаб 5. Триггеры | 15 | 2 недели | | Итого | 100 | | 🚀 ТОП-ИТ уровень (лабы 6-10): ^ Лабораторная ^ Макс. балл ^ Бонусы ^ | Лаб 6. Репликация | 25 | +5 к итогу | | Лаб 7. CI/CD | 25 | +5 к итогу | | Лаб 8. Оптимизация | 25 | +5 к итогу | | Лаб 9. Безопасность | 25 | +5 к итогу | | Лаб 10. NoSQL | 25 | +5 к итогу | <wrap important>Примечание: Лабораторные 6-10 являются дополнительными и выполняются по желанию для повышения оценки</wrap> ===== 🔗 Ресурсы и контакты ===== 📚 Учебные материалы: * Базовые задания * Задания от нейросети * Пример проекта на GitHub 💼 Платформы для сдачи: * GitHub * GitVerse (российский аналог) 📞 Контакты: * Telegram: @eugeneai * Пример организации проекта: GitHub <wrap tip>Совет:** Начните работу заранее - сложные лабораторные требуют глубокого понимания и времени на отладку!</wrap>

базы_данных лабораторные_работы postgresql топ-ит

db/new.1759883380.txt.gz · Last modified: by eugeneai