BH12.12/SPARQLthon16/TogoGenome

提供:TogoWiki

移動: 案内, 検索

目次

Facet検索用クエリチューニング

背景

既存のファセット検索はトリプルストアからデータを取得してRDBにロードしてインデックスを作成していた。
検索条件の項目が追加された場合には、RDBのテーブルを再設計する必要があり運用が煩雑になる。
そのため、SPARQLから直接データを検索しようとしたが、検索が遅く全く返ってこないケースがあったため、SPARQLクエリのチューニングを行った。

元のクエリー

元のSPARQLクエリー。
元のSPARQL ※認証ありページ

原因

検索条件が緩くヒット数が多くなるため、クエリがタイムアウトする。
特にsubClassOf*を複数使うとワークセット(クエリ途中の保持リスト)の数が増えてしまい、メモリ使用量が増えてエラーになるケースがある。

対策

複数のリソースをまたいで検索する部分や、subClassOf*で親を辿るクエリに関連する部分のリーズニングデータを作成した。 ファセット検索用トリプル生成

計測結果

q8.rq等のクエリは件数を絞らずに条件にマッチするものを全て検索
limitのついたクエリはページネーション対応用のバージョンで、これが実際アプリケーションで掛かる時間になる。

GO3種類とも最も多くUniprotIDに繋がるものを選択
cellular process, catalytic actibity, cell part
結果:1m2.970s

  • q8-limit.rq

OFFSET 100000 LIMIT 1000
結果:0m2.160s

GO3種類とも最も多くUniprotIDに繋がるもの + Taxonomyの最も多いBacteriaを選択
cellular process, catalytic actibity, cell part, bacteria
結果:0m50.543s

  • q9-limit.rq

OFFSET 100000 LIMIT 1000
結果:0m2.174s

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

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