2011-06-25 11 views
-1

ほとんどのMVCベースのWebサイトでは、ORMを使用して、モデルと対応するデータベースエンティティをマップします。間にあるのは、自動生成または開発者が提供するSQL /非SQLクエリです。このアプローチの問題点は、1.データベースI/Oがリアルタイムトラフィックのボトルネックであること。2.キャッシングを行うメカニズムを簡単にプラグインできないこと。 3.スケーラビリティ。ORM(オブジェクト・リレーショナル・マッピング)は、Webサイトのパフォーマンス上の問題の根本的な原因ですか?

私はあなたの意見を聞きたいと思います。

答えて

0

ORMは、それを使用するWebサイトでパフォーマンスが低下する根本的な原因であると言っても過言ではないでしょう。パフォーマンスはそれよりも複雑です。リレーショナルデータベースを使用している場合は、ORMを使用して開始するのが最善の方法ですが、パフォーマンスが十分でない場合は、プロファイラを使用して実際のボトルネックを見つけて対処してください。いくつかの場所ではORMを使用し、他の場所では手作業でSQLを使用することになります。

1

ORMはパフォーマンス上の問題を引き起こす場合がありますが、一般的にはすべてのパフォーマンスに関する問題を非難することはおそらく正確ではないと主張します。

私はORMの使用のための2つの主要なパフォーマンスの落とし穴を参照してください。

1)ほとんどの場合、バック

あまりにも多くのデータを取得、あなたが戻ってあなたが本当に必要以上のデータを取得しています。通常、これは大きな問題ではありませんが、モデルが不適切にマッピングされていると、小さな断片が1つだけ必要なときに大きなグラフのグラフが表示されることがあります。

2)時々のORMは、特定の状況に最適なSQLを生成しませんし、それを変更することは困難または不可能であるORM

によって生成されたSQLチューニングすることができないという。私は過去に、SQLチューニングによって大幅なパフォーマンス向上が達成される状況でORMをバイパスするのが比較的早いということでこれを緩和しました。あなたの他のポイントへ

- オームズは、それが困難なキャッシングを利用するために作ること - これは実際には、多くのORMのためを獲得(時には大幅に)パフォーマンスの源である、ほとんどのORMは、通常の内蔵キャッシュのいくつかの並べ替えを含まれているため。たとえば、Hibernateは第1レベルのキャッシュ(セッション/永続コンテキスト)を持ち、第2レベルのキャッシュも使用するように簡単に設定できます。

+0

私はEFとLinqをSQLと手作業でコーディングしたADO.NETオブジェクト/ロジックを過去に使用することの長所と短所を研究しなければなりませんでした。結局のところ、私たちはあなたが言及した理由のために手書きのADO.NETに行かなければなりませんでした。 –

関連する問題