クエリ処理
クエリ処理
CData は、クライアントサイドのSQL エンジンをconnector ライブラリに組み込んでいます。これにより、フィルタ、集約、関数など、SQL-92 が提供する全機能をサポートすることができます。SQL-92をサポートしないソースに対しては、connector はJira にSQLステートメントの処理を可能な限りオフロードし、残りのクエリをクライアントサイドのインメモリで処理します。その結果、最適なパフォーマンスを得ることができます。
限られたクエリ能力のデータソースに対しては、connector はSQL クエリの変換をおこない、connector がより単純になるよう処理します。 目標はデータソースのクエリ能力に基づいて賢く判断し可能な限り計算を抑えることです。Jira のクエリ評価コンポーネントはSQL クエリを検証し、connector がネイティブに実行できないクエリ部分を示す情報を返します。
Jira のクエリスライサーコンポーネントはより具体的なケースにおいて1つのクエリを複数の独立したクエリに分割するために使用されます。クライアントサイドのクエリエンジンはクエリの簡素化、複数のクエリへの分割、結果セットのサイズを最小化しながらクライアントサイドで集約のプッシュダウンや計算をするなどの決定を行います。
クエリを部分的にでもクライアントサイドで評価するということには大きなトレードオフがあります。このモデルでは効果的に実行することが不可能なクエリは常に存在し、この方法で計算すると特にコストが高くなるものもあります。CData は可能な限り効率的なクエリを生成し、最も柔軟なクエリ機能を提供するために常にデータソースに対して実行可能な限りのクエリをプッシュダウンしています。