SPARQL-proxy

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(foreverでdaemon化)
(インストール)
46行: 46行:
</pre>
</pre>
 +
一部の依存ライブラリが GCC 4.8 以降の新しいものを必要とするので注意。
 +
 +
== 起動 ==
 +
 +
<pre>
 +
$ 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 &
 +
)
 +
</pre>
== foreverでdaemon化 ==
== foreverでdaemon化 ==

2017年3月14日 (火) 07:21時点における版

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を用いて停止
個人用ツール