Название для этого алгоритма оптимизации расположения данных распределенной базы данных? - PullRequest
3 голосов
/ 29 июня 2011

Скажем, у нас есть большой граф баз данных, связанных друг с другом, фактически одна гигантская распределенная база данных. Любой узел на графике может запросить всю базу данных путем рекурсивного опроса соседей, которые получают результаты, полученные от соседей, и передают объединенный результат обратно по пути запроса.

Кроме того, предположим, что есть возможность остановить рекурсию, если собственная база данных узла содержит результат, который «достаточно хорош», так что нет необходимости запрашивать всю сеть, если поблизости уже есть достойный результат. Это делает то, что я собираюсь сказать, актуальным.

Не имеет ли смысла передавать возвращаемые данные на один шаг ближе к узлу, который инициировал запрос каждый раз, когда выполняется запрос? То есть запрашиваемый узел запрашивает своих соседей и получает X, запрашивает себя и получает Y, передает X + Y обратно узлу, который его запросил, сохраняет X в своей базе данных и удаляет Y из своей базы данных. Не приведет ли это в конечном итоге к тому, что распределенная база данных будет иметь примерно оптимальное распределение данных между ее узлами по отношению к количеству узлов, к которым будет обращаться в среднем запрос?

Есть ли название для этой техники?

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Эта тема часто встречается в грид-компьютинге; Вы хотите выполнить поиск в Google gologar для чего-то вроде размещение реплики сетки данных . Это хорошо работает, если в доступах много времени (если узлу нужны какие-то данные, в ближайшем будущем он захочет их много) и данные в основном для чтения. Как указывает yi_H, если существует большое количество больших модификаций данных, когерентность «кэша» (реплики) становится большой проблемой.

1 голос
/ 29 июня 2011

Существуют подобные методы, но вы должны знать, что как только вы «кэшируете» результат, вы должны обновить его, если при изменении данных ... это означает, что вы должны либо хранить данные, которые их кэшируют, либо уведомлять все. Реализация чего-то подобного требует большой координации, что ухудшит производительность ... не так просто, как кажется. Вы также можете ослабить ограничения, которые дает вам база данных, и затем знать в своем приложении, что вы можете получить кэшированные результаты, которые не синхронизированы (и, если необходимо, запросите не кэшированную версию).

...