Ответ
Опыт включает работу с реляционными и NoSQL СУБД:
- Реляционные БД: MySQL, PostgreSQL. Проектирование схем, оптимизация запросов (EXPLAIN ANALYZE), создание и анализ индексов, настройка транзакций (ACID).
- NoSQL БД: MongoDB для документоориентированных данных.
- Доступ к данным: Работа на уровне JDBC и через ORM (Hibernate/JPA).
Пример низкоуровневой работы через JDBC:
try (Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?")) {
stmt.setInt(1, userId); // Защита от SQL-инъекций
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// Обработка строк результата
}
} catch (SQLException e) {
// Логирование и обработка ошибок
}
Почему PreparedStatement? Для безопасности (предотвращение SQL-инъекций) и производительности (кэширование плана запроса).
Опыт с ORM: Использование Hibernate для сложных объектных моделей, написание JPQL/HQL запросов, оптимизация N+1 проблемы. Для критичных по производительности операций применял нативные SQL-запросы.
Администрирование: Базовый опыт с репликацией, настройкой бэкапов и мониторингом.