自動フェッチ

AutoFetch [ 1 ]は、オブジェクトリレーショナルマッピングクエリのプリフェッチヒントを指定する、通常は手動で行うプロセスを自動化する技術です。

テキサス大学オースティン校の Ali Ibrahim と William Cook は、Hibernateの実装を含む「AutoFetch」のアイデアを開発し、その後Ebeanにも実装しました。

利点

アプリケーションコードのモジュール性の向上

AutoFetchはプログラムの状態(通常はコールスタック)に基づいてクエリを分類します。つまり、AutoFetchは同じクエリであっても、その呼び出し方法に応じて異なる方法でチューニングすることができます。

たとえば、次のようなデータ アクセス API は、findCustomer(int customerId)メソッドの呼び出し元に応じて異なる調整が可能です。

開発者の開発と保守の負担を軽減

AutoFetch はプロファイリング情報を自動的に収集するため、開発者は手動でこの情報を収集してコードにパフォーマンスの最適化を適用する必要がありません。

AutoFetchはオブジェクトグラフの使用状況を監視し、使用状況の変化に応じてクエリのチューニングを調整します。これにより、開発者のコ​​ードメンテナンスの負担が軽減され、時間の経過とともに使用状況が変化しても最適なパフォーマンスを維持できます。

動作原理

AutoFetchは、クエリ実行時にオブジェクトグラフの使用状況を収集します。収集された「プロファイル」情報は、後続の実行時にクエリを自動的にチューニングするために使用されます。ORMクエリは、各クエリに対して適切なプリフェッチ指示を決定し、自動的に追加することでチューニングされます。

これにより、「遅延読み込み」が軽減され、アプリケーションのパフォーマンスが向上することが実証されています。部分オブジェクトをサポートするORMの場合、AutoFetchはすべてのプロパティではなく、アプリケーションが使用するプロパティのみをクエリに含めることで、クエリをチューニングすることもできます。

参照

参考文献