2

わかりましたので、Netflix や StumbleUpon のレコメンデーション アルゴリズムと同様に、Java で Collaborative Filter アルゴリズムを実装したいと考えていますが、データベースですべての計算 (ピアソン相関、予測計算など) を行うべきかどうか、または必要なデータをすべてロードし、Java でアルゴリズムを実行する必要があります。

Java で実行する主な欠点は、すべてのデータをロードする必要があることだと思います。逆に、データベースで実行すると、非常に複雑でエラーが発生しやすいクエリになると思います。

それぞれの可能性には、他にどのような長所または短所がありますか?

私が実装しているアルゴリズムはここにあります。

4

1 に答える 1

2

アルゴリズムの詳細をすべて読んだわけではありませんが、いくつかの理由から、実際のアルゴリズムの実装をコードで行うことに傾倒します。まず、十分にテストされたこれらのアルゴリズムの既存の実装(または少なくとも部分的な実装)を活用できる可能性があります。前述のように、このロジックをデータベースに追加することは複雑で、テストがより困難になる可能性があります。また、ストレージエンジンまたは形式を変更すると、コードがデータベースに緊密に結合され、再利用が困難になる場合があります。

Javaでアルゴリズムを実行している場合は、データベースからデータを読み取る必要があります。これにより、メモリに大量のデータが含まれる可能性があります。ただし、これが制限要因にならないようにする必要があります。すべてのデータを一度に読み取る必要がありますか(つまり、ある時点でRAMが制限になることを意味します)、またはデータをチャンクして並列化できますか?操作?アルゴリズムの一部を並列化できる場合は、Java(または選択した言語)でコードを記述すると、データの分割が容易になります(問題がそのフレームワークに当てはまる場合は、Map /Reduceフレームワークの使用を検討することもできます-ここでも私はアルゴリズムの詳細を読んでいません)。

一般的に、私はビジネスロジックをデータベースから除外しようとします。

于 2012-05-23T00:16:00.490 に答える