С какими базами данных вы работали в реальных проектах?

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

Ответ

В коммерческой разработке использовал следующие СУБД:

Реляционные (SQL):

  • PostgreSQL — основная СУБД для большинства сервисов. Ценил за строгую поддержку ACID, расширенные типы данных (JSONB, массивы) и мощную систему индексов.
  • MySQL — применял в legacy-проектах и системах, где важна простота и скорость операций чтения.

Нереляционные (NoSQL):

  • MongoDB — использовал для сервисов с высокой нагрузкой на запись и нежесткой схемой данных (например, каталог товаров, логи событий).
  • Redis — применял как кэш-хранилище (session storage, результаты тяжелых запросов) и как брокер сообщений (через Pub/Sub).

Пример работы с JPA (Hibernate) и PostgreSQL:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String email;

    // Связь One-to-Many. FetchType.LAZY — стандарт для производительности.
    @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<Order> orders;

    // getters, setters, constructors
}

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // Spring Data JPA генерирует запрос автоматически
    Optional<User> findByEmail(String email);

    // Можно написать собственный JPQL-запрос
    @Query("SELECT u FROM User u JOIN FETCH u.orders WHERE u.id = :id")
    Optional<User> findByIdWithOrders(@Param("id") Long id);
}