Требования:
Я добавляю функцию в программу, которая строит индекс Solr. Система многопоточная, поэтому поисковые записи каждый раз будут создаваться в случайном порядке. Индекс Solr также необходимо разделить на несколько файлов, потому что, если пользователь попытается загрузить один большой файл, серверу может не хватить памяти.
Проблема:
Чтобы сохранить надежность системы и упростить работу в целом, результирующие файлы индексов Solr должны быть одинаковыми независимо от того, в каком порядке они обрабатываются. Индексы должны быть сбалансированы по файлам (или достаточно близки к сбалансированным), и иметь максимальное количество записей. Если файлы превышают максимальное количество записей, их необходимо разделить. Эти файлы также будут обновляться при выполнении, поэтому записи будут добавляться, удаляться и изменяться.
Что нужно:
Я ищу алгоритм, который может быть адаптирован для этих требований. Я думаю, что мне нужно какое-то B-дерево, но я не знаю ни одного варианта B-дерева, который соответствовал бы этому конкретному набору требований.
Есть ли алгоритм или структура данных, которые могут помочь с этими требованиями?