BH12.12/SPARQLthon16/TogoGenome
提供:TogoWiki
目次 |
Facet検索用クエリチューニング
背景
既存のファセット検索はトリプルストアからデータを取得してRDBにロードしてインデックスを作成していた。
検索条件の項目が追加された場合には、RDBのテーブルを再設計する必要があり運用が煩雑になる。
そのため、SPARQLから直接データを検索しようとしたが、検索が遅く全く返ってこないケースがあったため、SPARQLクエリのチューニングを行った。
元のクエリー
元のSPARQLクエリー。
元のSPARQL ※認証ありページ
原因
検索条件が緩くヒット数が多くなるため、クエリがタイムアウトする。
特にsubClassOf*を複数使うとワークセット(クエリ途中の保持リスト)の数が増えてしまい、メモリ使用量が増えてエラーになるケースがある。
対策
複数のリソースをまたいで検索する部分や、subClassOf*で親を辿るクエリに関連する部分のリーズニングデータを作成した。 ファセット検索用トリプル生成
計測結果
q8.rq等のクエリは件数を絞らずに条件にマッチするものを全て検索
limitのついたクエリはページネーション対応用のバージョンで、これが実際アプリケーションで掛かる時間になる。
- q8.rq
GO3種類とも最も多くUniprotIDに繋がるものを選択
cellular process, catalytic actibity, cell part
結果:1m2.970s
- q8-limit.rq
OFFSET 100000 LIMIT 1000
結果:0m2.160s
- q9.rq
GO3種類とも最も多くUniprotIDに繋がるもの + Taxonomyの最も多いBacteriaを選択
cellular process, catalytic actibity, cell part, bacteria
結果:0m50.543s
- q9-limit.rq
OFFSET 100000 LIMIT 1000
結果:0m2.174s
- q10.rq
GO3種類とも最も多くUniprotIDに繋がるもの + Taxonomyの最も多いBacteriaとMEOの第一階層hydrosphereを選択
cellular process, catalytic actibity, cell part, bacteria, hydrosphere
結果:0m45.526s
- q10-limit.rq
OFFSET 10000 LIMIT 1000
結果:0m2.174s
- q11.rq
GO3種類とも最も多くUniprotIDに繋がるもの + Taxonomyの最も多いBacteriaとMEOの第一階層hydrosphere + MPOのMotilityを選択
cellular process, catalytic actibity, cell part, bacteria, hydrosphere, Motility
結果:1m34.841s
- q11-limit.rq
OFFSET 1000 LIMIT 1000
結果:0m11.451s