2012-05-22 3 views
2

Okey, поэтому я хочу реализовать алгоритм Collaborative Filter в Java, аналогичный алгоритмам рекомендаций Netflix или StumbleUpon, однако я не уверен, что я должен делать все вычисления (Pearson Correlation, Prediction Computation и т. Д.).) в базе данных, или если я должен загрузить все необходимые данные и выполнить алгоритм в Java.Реализация алгоритма рекомендации

Я думаю, что основным недостатком этого в java является то, что я должен загружать все данные, наоборот, я думаю, что делать это в базе данных приведет к очень сложным, подверженным ошибкам запросам.

Какие еще преимущества или недостатки имеют каждая возможность?

Алгоритм, который я реализую, можно найти here.

ответ

2

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

Если вы выполняете алгоритм в java, вам нужно будет прочитать данные из базы данных, что может привести к большим объемам данных в памяти. Вы должны убедиться, что это не станет ограничивающим фактором, хотя вам нужно прочитать ВСЕ данные сразу (это означает, что в какой-то момент ОЗУ станет ограничением), или вы можете вырезать данные и распараллелить операции? Если вы можете распараллелить части алгоритма, запись кода на Java (или любой другой язык, который вы выберете) облегчит разделение данных (вы можете даже рассмотреть возможность использования структуры Map/Reduce, если проблема соответствует этой структуре - снова здесь я не прочитали детали алгоритма).

В целом, я хотел бы попытаться сохранить бизнес-логику из базы данных.

Смежные вопросы