17日のPostgreSQL 9.5リリースに続き、119日にPostgres Online JournalWindowsPL/v8のコンパイル済みファイルが投稿され、最新の環境で簡単にPL/v8を使えるようになりました。インストールとテストを兼ね、配列の演算を行うPostGISラスタのコールバック関数をPL/v8で作り、PostGISに元からある関数(PL/pgSQL)と速度比較してみます。手順が多いので数回に分け、今日は実行環境の準備まで。
(以下、124日) PNGファイルをインポートしてPostGISラスタのサンプルデータを作る インポートしたラスタを再びPNGファイルに出力して確認 (以下、125日) PostGISラスタで画像処理、続けてPNGファイルに出力するテンプレート PostGISの関数のソースを見て、PL/v8への置き換えを考える (以下、126日) コールバック関数ST_Range4maPL/v8版を作る PL/pgSQLの単純化バージョンも作る SQLでもコールバック関数を作る テストの全体 (以下、128日) コールバック関数4つ × 周辺範囲5つ × 複数回テスト、を一つのクエリで テスト結果のTSVPostgreSQLにインポート PL/v8の方が、元からあるPL/pgSQLの数倍速い (以下、131日) テスト結果のPostgreSQLテーブルをRで読み込む 今回のテストと外れ値、95%信頼区間について 全体を一つの棒グラフにまとめる(エラーバー付) ピクセル範囲から所要時間を予測する回帰式(関数別) 全体のまとめ
Contents


実行環境



Windows 7 + PostgreSQL 9.5.0PL/v8をインストール

PostgreSQL本体のインストールは下記と同様に行いました。ただし今回はWindowsの管理者権限アカウントで。プログラムとデータフォルダの場所はどこでもいいですが、今回はD:/AppsPortable/PostgreSQL/9.5.0以下。

昨年9月にWindows, Linux, Mac OS Xへの「PL/v8インストールまとめ」を書いた時はPostgreSQL 9.5がまだアルファ版で、Win + PG9.5 + PL/v8の環境を自力で構築できませんでした。年が明けた17日に9.5が正式リリースされ、すぐ後の119日にPostgres Online JournalWin + PG9.5PL/v8のコンパイル済みファイル一式が投稿されたので ↓ 簡単に最新環境でPL/v8が使えるようになり、ありがたいです。


上の画像のとおり、記事内にWindows 32bit / 64bit用のダウンロードリンクがあります。ファイルはzip形式で、中の三つのフォルダ(bin, lib, share)をPostgreSQLのプログラムフォルダにコピーするだけ。


なお二つのDLL(libgcc_s_seh-1.dll, libstdc++-6.dll)は元のbinフォルダにもありますが ↓ ファイルサイズが同じなので同じものと判断して上書き。今のところ特に問題は出ていません。


ダウンロードしたzipbinフォルダには、コマンドラインシェルのd8.exeが入ってます(
昨年1225日に書いた前のバージョンと同じ)。PostgreSQLPL/v8を使わなくとも、このd8を単独で起動すれば ↓JavaScriptをコンソールで試すことが可能。


PostGIS 2.2のインストールは9.5 RC1の時と同様

前項のPL/v8と同様、PostGIS 2.2Windows用のコンパイル済みファイル群をコピー。あと起動用バッチファイルにPostGISラスタ用の環境変数を追加します。手順、使ったファイルは ↓ と全く同じなので省略。

↓ 今回の作業用データベースtest_postgis22を作り、そこにログインしてPL/v8PostGISを有効化します(CREATE EXTENSION文を実行)。これで準備は終わり。
create database test_postgis22;

\c test_postgis22
You are now connected to database "test_postgis22" as user "postgres".

create extension plv8;
create extension postgis;
    -- extensionのバージョン指定を省略すると、自動的に最新版になる


PL/v8PostGISのバージョンを確認した様子。画像の方はpsql起動から入れました。
select extname, extversion from pg_extension;
+---------+------------+
| extname | extversion |
+---------+------------+
| plpgsql | 1.0        |
| postgis | 2.2.0      |
| plv8    | 1.4.4      |
+---------+------------+
(3 rows)

select postgis_full_version();
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                       postgis_full_version                                                                        |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4090" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.7.8" LIBJSON="0.12" RASTER |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)


まだ作業の準備ができただけですが、後の手順が多いので今日はここまで。明日以降、続きを書いたら随時
このページの最初の目次に追加します。