FastConnectorとはデータベースシステムとの接続を最適化するミドルウェアです。
既存のネットワークというところがミソです。
FastConnectorをコアとしてレプリケーションや、Oracleとの相互データ交換等も行えるパッケージも同時に発売するようです。
FastConnectorのクライアントライブラリを使用して、固有のDB情報Lを試用しなければ、PostgreSQLとOracleどちらでも接続動作するアプリケーションの開発も行えます。(簡単な検索系アプリケーションであれば可能かな)
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を設定した方が便利に使えます。レプリケーター等と併用する場合は、面倒かもしれません。
#!/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
[root@localhost fcs]# ./fcspstart start
必ず付属の文章を読んで設定する。
ポート番号の変更等は付属の文章をよく読む。
付属のサンプルは、Oracleとなってますが、FCSへの接続、クライアントオブジェクトの使用方法は変更ありません。なので、サーバ、ユーザ名、パスワード、データベース名等はいつもpsqlで接続している際に入力している値を入力するだけです。
接続確認用プログラムを実行
接続に成功した場合
接続に失敗した場合
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 | メソッドは全て戻り値があるので必ずチェックする。 |
値はどれに対応しているのでしょか?
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