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