Skip to content

winroot333/ptmk-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое заданиe для PTMK

Описание

Сделано на Spring Boot, Spring Data, Lombok для простоты и ускорения разработки. Из-за этого приложение запускается несколько секунд, не мгновенно.

БД - PostgreSQL поднимается в docker контейнере.

Создание таблиц в БД через Liquibase миграции.

Faker для генерации тестовых данных.

Сборка и запуск:

git clone https://github.com/winroot333/ptmk-test.git
cd ptmk-test

Сборка:

mvnw clean package -DskipTests

Запуск бд в контейнере:

docker compose up -d

Запуск приложения:

java -jar .\target\app.jar 3

Отчет

Задание 1

Таблицы автоматически создаются при запуске приложения, с миграцией Liquibase.

java -jar .\target\app.jar  1

Задание 2

Создана сущность Employee, за отправку в БД отвечает EmployeeService, как принято в Spring.

java -jar .\target\app.jar  2 "Ivanov Petr Sergeevich" 2009-07-12 Male

Задание 3

Сделана выборка с помощью подзапроса, так как Distinct использовать нельзя, нужны уникальные ФИО и дата.

Если несколько сотрудников с одинаковым фио и датой они не выводятся.

Плохой попроизводительности запрос, в реальном приложении использовал бы что-то другое.

Пример для запуска:

java -jar .\target\app.jar  3

Задание 4

Заполнение тестовыми данными, дла ФИО и даты рождения использовал Faker библиотеку. Заполняется кусками по 10000 записей. Пример для запуска:

java -jar .\target\app.jar  4

Задание 5

Пример для запуска:

java -jar .\target\app.jar  5

Задание 6

Для оптимизации создал индекс составной индекс по полям gender и full_name.

Для того чтобы он использовался вручную написал запрос, поставил условия:

AND full_name >= 'F' AND full_name < 'G'

Без этого индекс не использовался, проверял через EXPLAIN ANALYZE

Время до оптимизации: 274 мсек

После оптимизации: 161 мсек

About

Тестовое задания для PTMK.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages