Этот вопрос может показаться слишком простым для некоторых, но, пожалуйста, не стесняйтесь, прошло некоторое время, так как я занимался достойным программированием базы данных.Применение итеративного алгоритма к набору строк из базы данных
У меня есть алгоритм, который мне нужно запрограммировать в PHP/MySQL для работы на веб-сайте. Он выполняет некоторые вычисления итеративно на массиве объектов (он оценивает объекты на основе их свойств). На каждой итерации алгоритм проходит через всю коллекцию пару раз, обращаясь к различным данным из разных мест всей коллекции. Алгоритму необходимо выполнить несколько сот итераций. Массив поступает из базы данных.
Простым решением, которое я вижу, является получение результатов запроса к базе данных и создание объекта для каждой строки запроса, помещение объектов в массив и передача массива в мой алгоритм.
Тем не менее, я заинтересован в эффективности такого решения, когда мне приходится работать с массивом из нескольких тысяч элементов, потому что то, что я делаю, по существу отражает результаты запроса в память.
С другой стороны, запрос базы данных пару раз на каждой итерации алгоритма также кажется неправильным.
Итак, мой вопрос: какое правильное архитектурное решение для такой проблемы? Можно ли отразить результаты запроса в памяти? Если нет, это лучший способ работать с результатами запроса в таком алгоритме?
Спасибо!
ОБНОВЛЕНИЕ: Ближайшая проблема, о которой я могу думать, - ранжирование результатов поиска поисковой системой - мне нужно сделать что-то похожее на это. Каждый результат представляется как строка базы данных, и все результаты набора рассматриваются при вычислении ранга.
Извините, мне сложно дать больше информации, не написав подробное описание, которое никто не будет читать :) Ближайшая проблема, о которой я могу думать, - ранжировать результаты поиска поисковой системой - мне нужно сделать что-то подобное этому. Каждый результат представляется как строка базы данных, и все результаты набора рассматриваются при вычислении ранга. – Corvin
Даже для примера, который вы указали, вы не будете сразу загружать все результаты в память. Вы должны работать на меньших наборах данных и выполнять процесс итеративно, если вы беспокоитесь о том, чтобы перегрузить систему. –