Что такое Zones в MongoDB Sharding
Zones (ранее известные как tag-aware sharding) позволяют связать конкретные диапазоны значений shard key с определёнными шардами. Это даёт тебе точный контроль над тем, как данные распределяются по кластеру.
Как работают Zones
- Ты назначаешь имя зоны одному или нескольким шардам
- Затем ты определяешь диапазон shard key, который соответствует этой зоне
- Балансировщик MongoDB гарантирует, что чанки, попадающие в этот диапазон, мигрируют на указанные шарды и остаются там
sh.addShardToZone("shard1", "EU")
sh.updateZoneKeyRange("mydb.users", { region: "EU" }, { region: "EU_MAX" }, "EU")
Основные варианты использования
- Географическое размещение данных — обеспечение того, чтобы данные европейских пользователей находились на европейских серверах для соблюдения требований по задержкам или нормативно-правовых требований
- Распределение по типам оборудования — маршрутизация часто используемых горячих данных на высокопроизводительные шарды и архивных данных на более медленное, дешёвое хранилище
- Нормативное соответствие — хранение конфиденциальных данных в определённых географических или инфраструктурных границах
Ключевые моменты
- Zones эффективны только когда shard key выбран правильно для отражения желаемого распределения (например, поле
region)
- Если зона не назначена диапазону чанков, балансировщик распределяет эти чанки свободно по всем шардам
- Zones не полностью переопределяют работу балансировщика — балансировщик по-прежнему управляет миграцией чанков, но соблюдает границы зон
Итоговое резюме
Zones предоставляют мощный механизм для контролируемого размещения данных, поддерживая сценарии вроде географической локальности, обеспечения нормативных требований и оптимизации производительности — всё это управляется путём сопоставления диапазонов shard key с конкретными шардами.