По каким критериям вы выбираете базу данных для нового микросервиса?

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

Ответ

Выбор зависит от требований к данным и нагрузке. Ключевые критерии:

  1. Модель данных:

    • PostgreSQL — для структурированных, реляционных данных с требованиями ACID, сложными JOIN и транзакциями.
    • MongoDB — для гибких, документоориентированных или иерархических данных.
    • Redis — для кэша, сессий или структур типа «ключ-значение».
    • ClickHouse — для аналитических запросов и агрегации больших объемов данных (OLAP).
  2. Производительность: Требования к задержке записи/чтения (latency) и пропускной способности (throughput).

  3. Масштабируемость: Возможность горизонтального шардирования и репликации.

  4. Экосистема и стоимость: Наличие managed-решений (например, AWS RDS, Atlas) vs. self-hosted.

Стандартный выбор для большинства сервисов — PostgreSQL. Он универсален, надежен и имеет богатую функциональность (включая JSONB).

Пример конфигурации репозитория (Spring Boot + JPA):

@Repository
public interface OrderRepository extends JpaRepository<Order, UUID> {
    @Query("SELECT o FROM Order o WHERE o.status = :status")
    List<Order> findOrdersByStatus(@Param("status") OrderStatus status);
}