SPARQL-proxy

提供:TogoWiki

2017年3月14日 (火) 07:21時点におけるKtym (トーク | 投稿記録)による版
移動: 案内, 検索

SPARQL-proxy は、クライアントと SPARQL エンドポイントの間で動作するミドルウェアで、 山中さんが SPARQLthon で作成されたオリジナルを改訂したものです。

目次

主な機能

  • SPARQL クエリをパースし、更新系のクエリを実行できないようにする
  • SPARQL クエリをジョブスケジューリングしてからトリプルストアに投げる(負荷集中の低減)
  • ジョブのタイムアウトを指定できる
  • 同時に実行するジョブの数を指定できる
  • 管理画面からジョブを確認したり削除したりできる
  • SPARQL 検索結果をキャッシュして2度目からトリプルストアを使わずに結果を返す(レスポンスの向上)
  • キャッシュは memory, file, redis, memcached を選択して利用できる
  • キャッシュを圧縮してサイズを抑えることができる
  • クエリのログを取得できる

実験的な機能

  • 大量な結果が返る SPARQL クエリを LIMIT/OFFSET を自動的につけて分割実行する

最近の追加機能

  • Virtuoso 独自の拡張「DEFINE sql:select-option "order"」などを許容するように変更
    • ただし、SELECT などで sql:hogehoge とか option() などを使っている場合には対応していない

レポジトリ

→ private で公開設定されていなかったので依頼中

インストール

node.js の安定版をインストール(展開して bin/node, bin/npm を ~/local/bin などにリンクする)

$ wget --no-check-certificate https://nodejs.org/dist/v6.10.0/node-v6.10.0-linux-x64.tar.xz

sparql-proxy の現状版をダウンロードしてインストール

$ wget https://dl.dropboxusercontent.com/u/429992/sparql-proxy.tar.gz
$ tar zxvf sparql-proxy.tar.gz
$ cd sparql-proxy
$ npm install

一部の依存ライブラリが GCC 4.8 以降の新しいものを必要とするので注意。

起動

$ cat startup.sh
#!/bin/sh

PREFIX=/opt/proxy

export PATH="$PREFIX/bin:$PREFIX/local/bin:$PATH"

# REDIS_URL=localhost:6379 \
# MEMCACHE_SERVERS=localhost:11211,localhost:11212 \
# JOB_TIMEOUT=300000 \
# DURATION_TO_KEEP_OLD_JOBS=60000 \
# COMPRESSOR=snappy \

(
cd $PREFIX/git/sparql-proxy

QUERY_LOG_PATH=$PREFIX/log/proxy.log \
CACHE_STORE=file \
CACHE_STORE_PATH=$PREFIX/cache \
MAX_CONCURRENCY=3 \
TRUST_PROXY=true \
PORT=14990 \
SPARQL_BACKEND=http://dev.togogenome.org/sparql \
ADMIN_USER=admin \
ADMIN_PASSWORD=hogehoge \
$PREFIX/bin/npm start 2>&1 >> $PREFIX/log/server.log &
)

foreverでdaemon化

$ npm install -g forever
$ PORT=3000 SPARQL_BACKEND=http://aaa.bbb.ccc/sparql forever start -c "npm start" /path_to_sparql-proxy_dir
$ forever list     # forever 稼働中リスト
$ forever stop NNN   # list で確認したuidを用いて停止
個人用ツール