Powered by SmartDoc

FastConnector For PostgreSQL memo

2000年11月4日
at
このメモは、FastConnector For PostgreSQL試用版に関するメモです。ベンチマークとかの情報はありません。速度的不満の無い方でも、PostgreSQLへのアクセスをMicrosoft社VisualBasicで行いたいと考えてらっしゃるかたは一度試用されるとよいかと思われます。注意点は、PostgreSQL 7.xが必要です。(libpq.so.2.1が存在しないと動作しません。)このメモはfreely linkableです。 追記(2004/04/14):このメモは2.0でのメモです。最新版は3.0ですのでまったく違う部分があるかと思います。

目次

FastConnector For PostgreSQLについて

FastConnector とは

FastConnectorとはデータベースシステムとの接続を最適化するミドルウェアです。

既存のネットワークというところがミソです。

FastConnectorをコアとしてレプリケーションや、Oracleとの相互データ交換等も行えるパッケージも同時に発売するようです。

FastConnectorのクライアントライブラリを使用して、固有のDB情報Lを試用しなければ、PostgreSQLとOracleどちらでも接続動作するアプリケーションの開発も行えます。(簡単な検索系アプリケーションであれば可能かな)

PostgreSQL とは

PostgreSQL((「ポストグレス」「ポストグレエスキューエル」「ポストグレスキューエル」)は、本格的な RDBMS(Relational Database Management System) です。

SRAにて有償にてトレーニング、サポートを行っているのも強みです。

日本でのコミュニティは日本PostgreSQLユーザ会が設立されています。

入れてみる

入手

FastConnectorからダウンロードします。

ダウンロードファイル
[postgres@localhost /tmp]# lynx http://www.fastconnector.com/
[postgres@localhost /tmp]# su
Password:
[root@localhost /tmp]# mkdir FCS
[root@localhost /tmp]# mv fcsp21_linux.tgz FCS/
[root@localhost /tmp]# cd FCS/
[root@localhost FCS]# tar zxvf fcsp21_linux.tgz 
FcspSetUpGuide.txt
FcspSetup.PDF
fcspinstall
fcsvp21
[root@localhost FCS]# less FcspSetUpGuide.txt 
セットアップガイド

2000/11/1 第一版

目次

1 インストール準備
2 インストール
3 インストール後の処理
4 FastConnector for PostgreSQLの起動と終了
5 FastConnector for PostgreSQLのアンインストール
6 FastConnector クライアントのインストール
7 トラブルシューティング


1 インストール準備
	インストールに必要となるもの
	FastConnectorServer for PostgreSQL製品パッケージ
	LinuxサーバRed Hat Linux 6.0 (英語版)
	Red Hat Linux 6.1/6.1J/6.1J改 (英語版/日本語版)

必ず付属の文章を読んでインストールする。

インストール

必ず付属の文章を読んでインストールする。

インストール
[root@localhost FCS]# ./fcspinstall 
FastConnectorServer Installer

FastConnectorServer Home Directory  /usr/local/fcsp :[y/n]
y
[root@localhost FCS]# ls /usr/local/fcsp
fcspstart  fcsvp21  fcsvp21.ini  logs
[root@localhost FCS]# 

サーバ側設定

必ず付属の文章を読んでインストールする。

RPMでインストールした場合は、ちょっと違うと思いますので注意して下さい。

PostgreSQL 7.0.2 についてを参考にされてインストールされた方は、POSTGRES_HOMEの部分を/usr/local/pgsqlに変更すれば動作すると思います。

クライアントがWindowsならPGCLIENTENCODINGはSJISを設定した方が便利に使えます。レプリケーター等と併用する場合は、面倒かもしれません。

/usr/local/fcsp/fcspstart
#!/bin/sh


		POSTGRES_HOME=/usr/local/pgsql/
		export POSTGRES_HOME
		PGLIB=$POSTGRES_HOME/lib
		export PGLIB
		PGDATA=$POSTGRES_HOME/data
		export PGDATA
		PGCLIENTENCODING=SJIS
		export PGCLIENTENCODING
		LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB
		export LD_LIBRARY_PATH
		FCS_HOME=/usr/local/fcsp
		export FCS_HOME
		FCS_DATE_FORMAT=ISO
		export FCS_DATE_FORMAT

case $1 in
start_msg)
        echo "Start FastConnectorServer for PostgreSQL daemon"
        exit 0
        ;;

stop_msg)
        echo "Stopping FastConnectorServer for PostgreSQL daemon"
        exit 0
        ;;
start)
		$FCS_HOME/fcsvp21 -startup
        exit 0
        ;;

stop)
		$FCS_HOME/fcsvp21 -shutdown
        exit 0
        ;;
*)
        echo "USAGE: $0 {start_msg | stop_msg | start | stop}" >&2
        exit 1
        ;;
esac
./fcspstart start
[root@localhost fcs]# ./fcspstart start 

クライアント側設定

必ず付属の文章を読んで設定する。

ポート番号の変更等は付属の文章をよく読む。

付属のサンプルは、Oracleとなってますが、FCSへの接続、クライアントオブジェクトの使用方法は変更ありません。なので、サーバ、ユーザ名、パスワード、データベース名等はいつもpsqlで接続している際に入力している値を入力するだけです。

接続確認用プログラムを実行

接続

接続に成功した場合

接続に成功した場合

接続に失敗した場合

接続に失敗した場合

試してみる

試す

VisualBasic

VisualBasicにクライアント用オブジェクトを使用してみる。参照のみです。 FastConnectorクライアントオブジェクト自体はOracleでもPostgreSQL版でも変わりないので、 SQL文自体が対応していればそのまま動作します。

ベータということもあり、結構未実装の機能が多いですが、圧縮などを確認する SelectAllはあるので、試用にはよいかと思います。下にベータでありと言うのが 試用できそうです。

FCSメソッド分類 FCSメソッド機能 FCSメソッド名 FCSメソッドサンプル名 FCSハンドル確保 FCSハンドル開放 FCSハンドル特記事項 ベータ
FCSメソッド分類 FCSメソッド機能 FCSメソッド名 FCSメソッドサンプル名 FCSハンドル確保 FCSハンドル開放 FCSハンドル特記事項 ベータ
データベースへの接続/切断 データベースをオープンする Connect Connect none none none あり
データベースへの接続/切断 データベースをクローズする Disconnect Disconnect none none none あり
選   択(参照系) データを1件選択する SelectFirst SelectFirst 実行前必ず必要 Get系メソッド実行後必ず必要 none なし
選   択(参照系) 次のデータを1件選択する SelectNext SelectNext 実行前必ず必要 Get系メソッド実行後必ず必要 none なし
選   択(参照系) SQL文を直接実行してデータを1件選択する SelectFirstDirect SelectFirstDirect 実行前必ず必要 Get系メソッド実行後必ず必要 移行時に使用する なし
選   択(参照系) データをN件選択する SelectFix SelectFix 実行前必ず必要 Get系メソッド実行後必ず必要 none なし
選   択(参照系) 指定行以降のデータをN件選択する SelectFixRandom SelectFixRandom 実行前必ず必要 Get系メソッド実行後必ず必要 none あり?
選   択(参照系) SQL文を直接実行してデータをN件選択する SelectFixDirect SelectFixDirect 実行前必ず必要 Get系メソッド実行後必ず必要 移行時に使用する あり
選   択(参照系) データを全件選択する SelectAll SelectAll 実行前必ず必要 Get系メソッド実行後必ず必要 none あり
選   択(参照系) SQL文を直接実行してデータを全件選択する SelectAllDirect SelectAllDirect 実行前必ず必要 Get系メソッド実行後必ず必要 none あり
選   択(参照系) ユーザーが利用可能なテーブルを選択する SelectTables SelectTables 実行前必ず必要 GetTableName実行後必ず必要 none あり
取   得(取得系) 行とカラムを指定してバッファからデータを取得する GetRowCol SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する あり
取   得(取得系) バッファからカラムの名称を取得する GetColName SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する あり
取   得(取得系) バッファからカラムのサイズを取得する GetColSize SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する あり?サイズ不明
取   得(取得系) バッファからカラムのタイプを取得する GetColType SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する あり?PostgreSQLとの対応不明
取   得(取得系) カラムNull許可属性の取得 GetColNullOK SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) カラム精度の取得 GetColPrecision SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) カラムスケールの取得 GetColScale SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) バッファからカラム数の取得する Cols SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) バッファからデータ件数の取得する Rows SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) バッファからユーザが利用可能なテーブル名称を取得する GetTableName SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) 与えられた条件の対象データ件数を取得する RecCnt SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 select系で確保したハンドルを指定する
取   得(取得系) SQL文の取得 GetSQL SelectAll none none 指定されたハンドルステートで最後に実行されたSQL文を取得、ハンドルが開放されていてもOK
取   得(取得系) 行列を指定してデータがNullかチェックする GetRowColIsNull SelectAll select系メソッドの前に必要 Get系を後で実行しなければ必ず開放 VARCHAR2の場合、空とNULLの区別なし
トランザクション処理 トランザクション処理の開始を宣言する BeginTran none none none データベース単位で処理を行う
トランザクション処理 トランザクション処理を確定する Commit none none none データベース単位で処理を行う
トランザクション処理 トランザクション処理を取り消す RollBack none none none データベース単位で処理を行う
更   新(更新系) データを更新する Update update select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 none none
更   新(更新系) データを挿入する Insert update select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 none none
更   新(更新系) データを削除する Delete update select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 none none
更   新(更新系) SQL文を直接実行する Execute update select系と同じハンドルは操作できません。必ず更新系でハンドルを取得。 none バインドバッファ使用時は、ハンドルの開放が行われない。
更   新(更新系) バインドバッファの生成 BindArray update none 更新系、select系実行後、明示的に行う必要がある。 none
更   新(更新系) 行列を指定してデータ文字列をセットする SetRowCol update none 更新系、select系実行後、明示的に行う必要がある。 BindArray実行後
更   新(更新系) 行列を指定してNULLをセットする SetRowColNull update none 更新系、select系実行後、明示的に行う必要がある。 BindArray実行後
ハンドルステートメント 空いているハンドルステートメントを取得する GetHstmt update none none none
ハンドルステートメント ハンドルステートメントの解放する EndHstmt update none none none
製品情報の取得 製品情報を取得する GetProductInfo update none none none
エラーメッセージを取得 エラーメッセージを取得する GetErrorMsg update none none メソッドは全て戻り値があるので必ずチェックする。

PostgreSQLカラムタイプ

値はどれに対応しているのでしょか?

カラムタイプ
Private Function PrvF_ColType(res As Long) As String
    
    Dim sDataNM As String
    
    sDataNM = ""
    '--- GetColName 使用例
    Select Case res
        Case 1043
            sDataNM = "varchar"
        Case 1034
            sDataNM = "aclitem[]"
        Case 1007
            sDataNM = "integer[]"
        Case 1184
            sDataNM = "timestamp"
        Case 702
            sDataNM = "abstime"
        Case 701
            sDataNM = "float8"
        Case 30
            sDataNM = "oidvector"
        Case 26
            sDataNM = "oid"
        Case 25
            sDataNM = "text"
        Case 24
            sDataNM = "regproc"
        Case 23
            sDataNM = "integer"
        Case 22
            sDataNM = "bytea"
        Case 21
            sDataNM = "smallint"
        Case 19
            sDataNM = "name"
        Case 18
            sDataNM = "char"
        Case 17
            sDataNM = "byte"
        Case 16
            sDataNM = "boolean"
        Case Else
            sDataNM = res
    End Select

    PrvF_ColType = sDataNM
End Function

参考サイトについて

PostgreSQL関係

PostgreSQL 7.0.2 について

インターウィズPostgreSQL関連情報

Delphi component and Java class library support page

SoftLib その実態は・・・

メーリングリスト

ウソグレス

Windows(Cygwin) サーバー & クライアントパッケージ

Windows-Native サーバー & クライアントパッケージ

FastConnector関係

FastConnector

FastConnectorMemo