Skip to main content

Які бувають стратегії шардування?

Основні стратегії шардування визначають, за яким принципом розподіляються дані між серверами (шардами). Від цього залежить баланс навантаження, простота запитів і можливість масштабування.

1. Хеш-шардування (hash sharding)

  • Для кожного запису обчислюється хеш за певним ключем (наприклад, user_id), і за результатом хешу він потрапляє в конкретний шард.
  • Забезпечує рівномірний розподіл даних.
  • Недолік - важко виконувати запити, що вимагають даних з усіх шардів (наприклад, агрегати).

Приклад: shard_id = hash(user_id) % N, де N - кількість шардів.

2. Діапазонне шардування (range sharding)

  • Дані діляться за діапазонами значень ключа (наприклад, user_id від 1 до 1 000 000 - один шард, далі - інший).
  • Просте в реалізації, зручне для впорядкованих даних.
  • Мінус - можливе нерівномірне навантаження, якщо частина діапазонів активніша за інші.

3. Географічне (чи за атрибутом) шардування

  • Дані діляться за ознакою, пов'язаною з регіоном, країною, відділенням компанії тощо.
  • Зручно, коли користувачі фізично розділені за регіонами - знижує затримки й підвищує локальну доступність.
  • Мінус - різні шарди можуть бути сильно нерівномірними за розміром.

4. Гібридне (composite) шардування

  • Поєднує кілька стратегій - наприклад, спершу за регіоном, потім усередині регіону за хешем.
  • Гнучкий і масштабований варіант для великих систем.

Підсумок:

  • Хеш-шардування - рівномірно, але складно агрегувати.
  • Діапазонне - просто, але може бути перекіс навантаження.
  • Географічне - знижує затримки, але потребує балансу даних.
  • Гібридне - універсальне, але складніше в керуванні.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.