業務の都合で、中国製オペレーティングシステムと中国製データベースを扱う機会がありました。
正直なところ......非常に複雑な気持ちになります!
いわゆる「国産」と称される製品は、他社の技術を改変しただけというケースが多いです。
例えば、南大通用データベースのGBASE8sは、Informixをベースに改修したもの・・・・・・
GBASE8sの利用にあたり、各種設定情報を記録しておきます。
GBASE8sが /opt/gbase8s ディレクトリにインストールされていることを前提とします。
1. 新しいグループとユーザー gbasedbt を作成
2. 環境変数の設定
GBASE_HOME=/opt/gbase8s
GBASE_SERVER_NAME=ol_gbasedbt12
CONFIG_FILE=onconfig.ol_gbasedbt12
SQL_HOSTS_FILE=/opt/gbase8s/etc/sqlhosts.ol_gbasedbt12
ENABLE_GL_UTIL=1
DATABASE_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
ODBC_CONFIG=/opt/gbase8s/etc/odbc.ini
LIBRARY_PATH_VAR=$GBASE_HOME/lib:$GBASE_HOME/lib/cli:$GBASE_HOME/lib/esql
EXEC_PATH=$GBASE_HOME:$LIBRARY_PATH_VAR:$GBASE_HOME/bin:$GBASE_HOME/extend/krakatoa/jre/bin:$PATH
#dbtpyを使用する場合に必要
SDK_ROOT=$GBASE_HOME
export GBASE_HOME GBASE_SERVER_NAME CONFIG_FILE SQL_HOSTS_FILE ENABLE_GL_UTIL ODBC_CONFIG LIBRARY_PATH_VAR SDK_ROOT EXEC_PATH
3. sqlhosts.ol_gbasedbt12 の設定
<strong>ol_gbasedbt12</strong> onsoctcp 172.14.23.12 9899
4. /opt/gbase8s/etc/odbc.ini 設定内容
[ODBC Data Sources]
sampledb=GBase ODBC DRIVER
;
; Define ODBC Database Driver's Below - Driver Configuration Section
;
<strong>[sampledb]</strong>
Driver=/opt/gbase8s/lib/cli/iclis09b.so
Description=GBase ODBC DRIVER
<strong>Database</strong>=d5000
<strong>LoginUser</strong>=gbasedbt
<strong>Password</strong>=123456
<strong>ServerName</strong>=ol_gbasedbt12
CursorBehavior=0
<strong>CLIENT_LOCALE</strong>=en_us.8859-1
<strong>DB_LOCALE</strong>=en_us.8859-1
GL_USEGLU=1
TRANSLATIONDLL=/opt/gbase8s/lib/esql/igo4a304.so
[ODBC]
Trace=1
TraceFile=/tmp/odbctrace1.out
InstallDir=/opt/gbase8s
TRACEDLL=/opt/gbase8s/lib/cli/idmrs09a.so
上記設定において、以下の点に注意してください:
a) LoginUser は gbase8s に割り当てられたユーザー名
b) ServerName は第3項で設定した名称
c) CLIENT_LOCALE および DB_LOCALE のデフォルト値は en_us.8859-1
5. DbtPy (python3) を使用してリモート接続する場合:
python3 および python3-devel をインストールが必要です
pythonバージョンは3.7以下であること
pip install DbtPy
import sys
import DbtPy
print("Python DbtPyテストアプリケーション開始\n")
connection_string = "PROTOCOL=onsoctcp;HOST=172.14.23.12;SERVICE=9899;SERVER=ol_gbasedbt12;DATABASE=sampledb;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1"
db_connection = DbtPy.connect(connection_string, "gbasedbt", "123456")
statement = DbtPy.exec_immediate(db_connection, "SELECT * FROM YK_YX_RELY_AVC LIMIT 3")
result_data = DbtPy.fetch_assoc(statement)
print(result_data)
6. jaydebeapi を使用して接続することも可能です。
ただし、gbasedbtjdbc_3.3.0_2.jar をダウンロードする必要があります。
import sys
import jaydebeapi
print("\nPython JayDeBeApi JDBC テストアプリケーション開始\n")
db_connection = jaydebeapi.connect("com.gbasedbt.jdbc.Driver",
"jdbc:gbasedbt-sqli://172.16.97.98:8900/sampledb:GBASEDBTSERVER=ol_gbasedbt12;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1;IFX_LOCK_MODE_WAIT=60",
["gbasedbt", "123456"],
"/home/gbasedbt/gbasedbtjdbc_3.3.0_2.jar")
cursor_obj = db_connection.cursor()
cursor_obj.execute("SELECT * FROM YK_YX_RELY_AVC LIMIT 3")
records = cursor_obj.fetchall()
print(records)
cursor_obj.close()
db_connection.close()
7. 説明:
AサーバーがGbase8sサーバー、Bサーバーがアプリケーションサーバーの場合、上記5および6の処理はBサーバー上で実行されます。
BサーバーにはGbase8sをインストールする必要はありませんが、Gbase8sのCSDKをインストールする必要があります。設定情報は上記2および3のみ必要です。
公式サイトからダウンロードしたCSDKには問題がある場合があります。Aサーバーから直接 /opt/gbase8s ディレクトリをBサーバーにコピーすることが可能です。ただし、/opt/gbase8s は容量が大きいため、storageディレクトリはコピーしなくても構いません。
8. CSDKの正常動作確認方法:
esql -V コマンドを実行し、以下のような情報が表示されれば成功です。
GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_2.0.1A2_2
Software Serial Number AAA#B000000