Які бувають стратегії шардування?
Основні стратегії шардування визначають, за яким принципом розподіляються дані між серверами (шардами). Від цього залежить баланс навантаження, простота запитів і можливість масштабування.
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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.