Встречается на собеседованиях • сегодня

Какую применил бы стратегию размещения по Shard

Для эффективного шардинга в Java-приложениях обычно применяют следующие стратегии:

  1. Range-based – данные распределяются по диапазонам (например, по датам или ID). Подходит для временных данных.
    java
    // Пример: шардинг по месяцам
    int shard = LocalDate.now().getMonthValue() % totalShards;
  1. Hash-based – равномерное распределение через хеш-функцию (MD5, SHA-1). Минимизирует "горячие" шарды.

    java
    int shard = Math.abs(key.hashCode()) % totalShards;
  2. Directory-based – гибкое сопоставление через lookup-таблицу. Подходит для сложных правил, но требует поддержки состояния.

Выбор зависит от:

  • Равномерности нагрузки (hash лучше для баланса)
  • Локализации запросов (range удобен для диапазонных выборок)
  • Гибкости (directory проще для миграции данных)

Для большинства случаев hash-based – оптимальный вариант.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы