MongoDB предлагает две основные стратегии шардирования: range-based sharding (шардирование по диапазонам) и hash-based sharding (хеш-шардирование). Каждая распределяет данные по-разному и имеет свои компромиссы.
Данные разбиваются на смежные диапазоны значений на основе shard key. Например, документы со значениями shard key 1–100 идут на один шард, 101–200 на другой, и так далее.
Shard 1: { age: 1 } to { age: 33 }
Shard 2: { age: 34 } to { age: 66 }
Shard 3: { age: 67 } to { age: 99 }
Данные распределяются с использованием хеш-значения shard key. MongoDB вычисляет хеш и назначает документы шардам на основе диапазонов хешей.
hash("alice") → Shard 2
hash("bob") → Shard 1
hash("carol") → Shard 3
| Range-Based | Hash-Based | |
|---|---|---|
| Распределение данных | Неравномерное | Равномерное |
| Производительность range queries | Эффективно | Неэффективно |
| Риск hotspot'ов | Высокий | Низкий |
Hash-based sharding использует хэшированное значение ключа шардирования для распределения документов, что обеспечивает более равномерное распределение данных по шардам по сравнению с range-based sharding.
Новый — ещё не проверен сообществом
Вы