Допустим, у нас есть большой граф баз данных, связанных друг с другом, фактически одна гигантская распределенная база данных. Любой узел на графе может запрашивать всю базу данных, рекурсивно запрашивая своих соседей, которые берут результаты, полученные от своих соседей, и передают объединенный результат обратно по пути запроса.
Также предположим, что есть возможность остановить рекурсию, если собственная база данных узла содержит результат, который является «достаточно хорошим», так что не нужно опрашивать всю сеть, если поблизости уже есть достойный результат. Это делает то, что я собираюсь сказать, актуальным.
Разве не имеет смысла переносить возвращенные данные на один шаг ближе к узлу, создавшему запрос, каждый раз, когда выполняется запрос? То есть запрошенный узел запрашивает своих соседей и получает X, сам запрашивает и получает Y, передает X + Y обратно узлу, который его запросил, сохраняет X в своей базе данных и удаляет Y из своей базы данных. Разве это в конечном итоге не приведет к тому, что распределенная база данных будет иметь примерно оптимальное распределение данных между ее узлами в отношении количества узлов, к которым в среднем будут обращаться во время запроса?
Есть ли название у этой техники?