Работа распределенной СУБД существенно зависит от шардирования данных. Когда данных много и они очень неоднородны — тысячи таблиц на сотнях машин — без фонового динамического перераспределения просто ничего не будет работать из-за постоянно возникающих неоднородностей, превышающих возможности отдельного шарда.
Данную задачу можно разделить на две основные части: техническую реализацию перемещения шарда между нодами и алгоритмический процесс выбора шардов, которые нужно переместить. В докладе я сконцентрируюсь на второй части и расскажу, как мы решаем задачу планирования перераспределения шардов по нагрузке в динтаблицах YTsaurus — распределенном key-value-сторадже, используемом для подготовки больших данных в Яндексе и выложенном в Open Source.