AutoFetch [ 1 ]は、オブジェクトリレーショナルマッピングクエリのプリフェッチヒントを指定する、通常は手動で行うプロセスを自動化する技術です。
テキサス大学オースティン校の Ali Ibrahim と William Cook は、Hibernateの実装を含む「AutoFetch」のアイデアを開発し、その後Ebeanにも実装しました。
利点
アプリケーションコードのモジュール性の向上
AutoFetchはプログラムの状態(通常はコールスタック)に基づいてクエリを分類します。つまり、AutoFetchは同じクエリであっても、その呼び出し方法に応じて異なる方法でチューニングすることができます。
たとえば、次のようなデータ アクセス API は、findCustomer(int customerId)メソッドの呼び出し元に応じて異なる調整が可能です。
開発者の開発と保守の負担を軽減
AutoFetch はプロファイリング情報を自動的に収集するため、開発者は手動でこの情報を収集してコードにパフォーマンスの最適化を適用する必要がありません。
AutoFetchはオブジェクトグラフの使用状況を監視し、使用状況の変化に応じてクエリのチューニングを調整します。これにより、開発者のコードメンテナンスの負担が軽減され、時間の経過とともに使用状況が変化しても最適なパフォーマンスを維持できます。
動作原理
AutoFetchは、クエリ実行時にオブジェクトグラフの使用状況を収集します。収集された「プロファイル」情報は、後続の実行時にクエリを自動的にチューニングするために使用されます。ORMクエリは、各クエリに対して適切なプリフェッチ指示を決定し、自動的に追加することでチューニングされます。
これにより、「遅延読み込み」が軽減され、アプリケーションのパフォーマンスが向上することが実証されています。部分オブジェクトをサポートするORMの場合、AutoFetchはすべてのプロパティではなく、アプリケーションが使用するプロパティのみをクエリに含めることで、クエリをチューニングすることもできます。
参照
参考文献
- ^ Ibrahim, Ali; Cook, William. 「オブジェクト永続化アーキテクチャにおけるトラバーサルプロファイリングによる自動プリフェッチ」(PDF) . 2024年1月12日閲覧。