Какие базы данных использовались на вашем предыдущем проекте и для каких целей?

«Какие базы данных использовались на вашем предыдущем проекте и для каких целей?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На проекте использовалась комбинация из трех баз данных, каждая для своей специализированной задачи (принцип polyglot persistence):

  1. PostgreSQL (Основная реляционная БД)

    • Назначение: Хранение структурированных бизнес-данных, требующих ACID-транзакций (пользователи, заказы, платежи).
    • Причина выбора: Надежность, поддержка сложных запросов, транзакционность.
      # Пример конфигурации Spring Boot
      spring.datasource.url=jdbc:postgresql://localhost:5432/app_db
      spring.datasource.username=app_user
      spring.datasource.password=${DB_PASSWORD}
  2. MongoDB (Документная БД)

    • Назначение: Хранение полуструктурированных данных, логов событий, пользовательских контент-данных с гибкой схемой.
    • Причина выбора: Горизонтальная масштабируемость, быстрая запись, JSON-подобная модель данных.
  3. Redis (In-memory хранилище типа "ключ-значение")

    • Назначение: Кэширование часто запрашиваемых данных (например, профилей пользователей), хранение сессий, реализация rate-limiting.
    • Причина выбора: Экстремально низкая задержка (латентность) операций чтения/записи.

Такой подход позволяет использовать каждую СУБД для решения задач, в которых она наиболее эффективна.