2

リレーショナルDBに格納されている情報に複雑なアルゴリズムを実装するためのベストプラクティスを見つけようとしています。

具体的には、多くのドキュメントのTFxIDFベクトルを含む大規模なMS SQL Serverデータベースにk-meansアルゴリズム(ドキュメントクラスタリングアルゴリズム)のバリエーションを実装したいと考えています(これらのベクトルはアルゴリズムの入力として使用されます)。

私の最初の考えは、ストアドプロシージャ、関数、ビュー、およびその他すべての基本的なSQL Serverツールを使用してSQLですべてを実行することでしたが、その後、 SQLサーバー。

ここではパフォーマンスが問題になるので、それも考慮する必要があります。

私がとるべき道についてのアドバイスをいただければ幸いです。

ありがとうございました!

4

1 に答える 1

1

ここではパフォーマンスが問題になります

いつもそうです。この種のコードを見るとき、考慮しなければならない2つの相反する傾向があります。

  • インデックス作成、キャッシュ、およびその他の最適化手法のおかげで、データベースサーバーは、これらの計算を迅速に行うのに最適な位置にあることがよくあります。あなたはこれを理解しているようです。

一方で:

  • これらの計算が単独で行われることはめったにありません。サーバー全体のパフォーマンスを考慮する必要があり、データベースは通常、データセンターで最も負荷の高いサーバーです。また、技術的観点とビジネス的観点の両方から、スケーリングが最も困難です。ディスク、RAM、CPUなど、いくつかの異なるコンポーネントのバランスをとる必要があり、ボトルネックがどこにあるかを常に簡単に把握できるとは限らないため、技術的です。また、これらは「大きな」マシンである傾向があり、組織内の多くの人がチューニングの経験を持っていることはありません。最後に、それらはしばしばうまくスケールアウトしません。別のデータベースサーバーを追加して、アプリケーションサーバーのように簡単に負荷を共有することはできません。ビジネスの観点からは、技術的な巨大なジャンボはすべてコストになります。それ以上、

これらの2つのポイントをまとめると、パフォーマンスの最善の方法は、通常、データベースのクエリ機能を使用して、本当に必要なレコードのサブセットのみを取得し、より簡単な前処理の一部を実行することです。あなたがそうするなら、果物。次に、可能であれば並行して、アプリケーションサーバーでの手間のかかる作業を終了します。

于 2010-07-08T18:10:36.290 に答える