スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

変更内容

変更内容(3020-6-356-43) HiRDB Version 8 08-05,08-51

追加・変更内容 変更個所
リリースノートのマニュアル訂正を反映しました。

単なる誤字・脱字などはお断りなく訂正しました。


変更内容(3020-6-356-42) HiRDB Version 8 08-05,08-51

追加・変更内容
表3-10 排他制御のモードの組み合わせの代表例(行排他の場合)(1/2)
表3-12 排他制御のモードの組み合わせの代表例(ページ排他の場合)(1/2)
[訂正前]
全行削除※2※13
[訂正後]
全行削除※2※13※14
注※14
システム共通定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005 種別名:DICT)に対して一時的にEXモードで排他を掛けます。また,データディクショナリ用RDエリア(資源種別:0001 種別名:RDAR)に対してトランザクションが終了するまでSUモードで排他を掛けます。
表3-14 排他制御のモードの組み合わせの代表例(インデクスキー値無排他の場合)(1/2)
[訂正前]
全行削除※1※13
[訂正後]
全行削除※1※13※14
注※14
システム共通定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005 種別名:DICT)に対して一時的にEXモードで排他を掛けます。また,データディクショナリ用RDエリア(資源種別:0001 種別名:RDAR)に対してトランザクションが終了するまでSUモードで排他を掛けます。
表3-16 排他制御のモードの組み合わせの代表例(検査保留状態に設定する場合)(1/2)
[訂正前]
全行削除
[訂正後]
全行削除※4
注※4
システム共通定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005 種別名:DICT)に対して一時的にEXモードで排他を掛けます。また,データディクショナリ用RDエリア(資源種別:0001 種別名:RDAR)に対してトランザクションが終了するまでSUモードで排他を掛けます。
[追加]
3.4.12 複数トランザクションで参照と更新をする場合

(1) 複数トランザクションで同一の表を検索・更新する一般的な処理方法
SELECT文で更新対象行を特定し,UPDATE文で更新を行うトランザクションを行う場合,SELECT文を実行する前に同一トランザクション中で,LOCK文を用いて排他モードで表に対して排他制御を行うか,SELECT文の排他制御のモードを以下のいずれかの方法で排他モード(EX:Exclusive)にしてください。
  • クライアント環境定義で次の(i)(ii)のいずれかを指定する場合,SELECT文にFOR UPDATE指定をする
    (i)PDISLLVLが2である(デフォルト値2)
    (ii)PDFORUPDATEEXLOCKがYESである(デフォルト値NO)
  • SELECT文にWITH EXCLUSIVE LOCK指定をする
SELECT文の排他制御のモードを排他モードにする場合の例を示します。
 
表 在庫テーブル
在庫ID(主キー) 在庫名 在庫状態
20345678 ネクタイ 在庫確保中
20345679 シャツ 在庫あり
20345680 靴下 在庫なし
20345681 ズボン 在庫確保中
20345682 スカート 在庫あり
20345683 パンツ 在庫確保中
 
在庫状態が在庫確保中の行を探し,該当行がある場合,在庫状態を在庫ありに変更します。
[図データ]

(2) 検索する行に対して更新行が非常に少ない場合
SELECT文でヒットする行に対してUPDATE文で更新する行が少ない場合,SELECT文の排他モードをSHARE LOCKにすることで,他トランザクションからも参照できるため,同時実行性を向上できます。ただし,他トランザクションと更新する行が衝突して,排他制御のモードが共有モードから排他モードに遷移することによってデッドロックが起こる可能性があることに注意してください。

(3) 排他のかかる行を減らすために事前に無排他で検索する場合
SELECT文を無排他検索にすることで,(2)よりもさらに同時実行性を向上できます。ただし,無排他検索してからUPDATE文を実行するまでの間に検索した行が他のトランザクションによって更新される可能性があり,SELECT文の探索条件に他のトランザクションで更新される可能性がある列を含む場合には,データの取り出しで読み込む値が,探索条件に合致しない値になることもあります。UPDATE文を正しく行うため,無排他にしたSELECT文の探索条件を,UPDATE文または排他制御のモードが排他モードのSELECT文でもう一度再評価してください。
 
無排他にしたSELECT文の探索条件を,排他制御のモードが排他モードのSELECT文でもう一度再評価する場合の例を示します。
 
無排他のSELECT文に指定した探索条件「在庫状態='在庫確保中'」をWITHEXCLUSIVE LOCKの指定があるSELECT文で再評価して,他トランザクションで変更されていないことを再確認し,他トランで更新がなければ更新を行います。
[図データ]
[訂正前]
[図データ]
[訂正後]
[図データ]
注意事項
[追加]
  • HiRDBクライアントでは,インストール時に{HiRDBクライアントインストール先}\utlをシステム環境変数Pathの末尾へ追加します。HiRDB.NETデータプロバイダをインストールした場合,{HiRDBクライアントインストール先}\utlに,Cランタイム(msvcr71.dll),及びC++ランタイム(msvcp71.dll)をインストールします。Cランタイム,及びC++ランタイムは,他製品(HiRDBクライアント以外のHiRDB関連製品,及び他社製品)でも参照するファイルであるため,次の全ての条件を満たす場合,他製品が意図しない動作をする可能性があります。
    − 他製品が,Cランタイム(msvcr71.dll),及びC++ランタイム(msvcp71.dll)を提供している
    − 他製品が,環境変数Pathへの値追加によりCランタイム,及びC++ランタイムを参照する運用形態である
    − 他製品で追加した環境変数Pathの値が,HiRDBクライアントで追加した環境変数Pathの値よりも後置である(優先度が低い)
    − HiRDBクライアントで提供しているCランタイム,及びC++ランタイムのバージョンが,他製品が提供しているものと異なる
本現象を回避するためには,HiRDBクライアントの環境変数Pathの値を,他製品で設定した値よりも後置となるように,手動で変更する必要があります。
表6-1 HiRDB/Developer's Kitの場合のファイルとディレクトリ(UNIXクライアント)
表6-2 HiRDB/Run Timeの場合のファイルとディレクトリ(UNIXクライアント)
[訂正前]
[図データ]
[訂正後]
[図データ]
表6-5 HiRDB/Developer's Kitの場合のファイルとディレクトリ(Linux(EM64T))
表6-6 HiRDB/Run Timeの場合のファイルとディレクトリ(Linux(EM64T))
[訂正前]
[図データ]
[訂正後]
[図データ]
表6-8 共用ライブラリの用途別の使用ファイル(UNIXクライアント)
[訂正前]
[図データ]
[訂正後]
[図データ]
表6-9 各トランザクションマネジャが使用するライブラリ一覧(UNIXクライアント)
[訂正前]
[図データ]

共用ライブラリのサフィックスは,プラットフォームによって異なります。
Solarisの場合は「.so」,AIXの場合は「.a」となります。
[訂正後]
[図データ]

共用ライブラリのサフィックスは,プラットフォームによって異なります。
Solaris,及びLinuxの場合は「.so」,AIXの場合は「.a」となります。
表6-12 HiRDB/Developer's Kitの場合のファイルとディレクトリ(IPFマシンのWindowsクライアント)
[訂正前]
[図データ]
[訂正後]
[図データ]
表6-14 HiRDB/Developer's Kitの場合のファイルとディレクトリ(EM64TマシンのWindowsクライアント)
[訂正前]
[図データ]
[訂正後]
[図データ]
[訂正前]
プリプロセサが処理する,UAPの記述に使われている文字コード種別を指定します。Windows版の場合はSJISだけ指定できます。省略した場合でもSJISが仮定されます。
SJIS:
ja_JP.SJIS(Ja_JP,又はja_JP.PCK)を設定します。Linux版の場合にSJISを指定するときは,PDLANGで設定してください。
[訂正後]
プリプロセサが処理する,UAPの記述に使われている文字コード種別を指定します。Windows版の場合はSJIS,CHINESE,C,UTF-8,CHINESE-GB18030が指定できます。Windows版の場合にPDCLTLANGを省略するとSJISが仮定されます。
SJIS:
シフトJIS漢字コードを設定します。Linux版の場合にSJISを指定するときは,PDCLTLANGで設定してください。
UAPのプリプロセス時,文字コード種別
[訂正前]
[図データ]
[訂正後]
[図データ]
[訂正前]
この環境変数は,PDCLTPATHを指定しているときに有効になります。
[訂正後]
この環境変数は,PDSQLTRACEを指定しているときに有効になります。
[訂正前]

注2
HiRDBサーバへの接続時間,及び接続時に使用するTCPポート数の関係を次に示します。
通常接続 > FESホストダイレクト接続 > 高速接続
接続時間を短くしたい場合は,高速接続にすることをお勧めします。ただし,接続するフロントエンドサーバを効率良く利用したい場合は,通常接続にすることをお勧めします。
通常接続時に使用するTCPポート数を減らしたい場合は,クライアント環境定義PDTCPCONOPTに1を指定することで,使用するTCPポート数を減らすことができます。PDTCPCONOPTについては,「6.6.4 クライアント環境定義の設定内容」を参照してください。
[訂正後]

注2
推奨する接続形態は以下の通りです。
  • 高速接続をお勧めします。
  • マルチフロントエンドサーバを適用した構成で,フロントエンドサーバを効率良く利用したい場合(※)
    通常接続をお勧めします。
     
    (※)通常接続,FESホストダイレクト接続の場合,UAPが接続時にシステムマネジャプロセスやノードマネジャプロセスに対して接続を行います。このため,多数のUAPが同時に接続した際など,システムシステムマネジャプロセスやノードマネジャプロセスに負荷がかかり,システム全体に影響がでる場合があります。

参考
FESホストダイレクト接続を適用している環境では,高速接続に接続形態を変更することを推奨します。なお高速接続に変更する場合,表6-35で示す環境変数のほかに,スケジューラのポート番号を設定する必要があります。
スケジューラのポート番号の設定については,以下のマニュアルを参照して下さい。
  • HiRDB Version 8 システム導入・設計ガイド(UNIX(R)用)25.5.2 ポート番号の指定方法
  • HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)23.5.2 ポート番号の指定方法

注3
HiRDBサーバへの接続時間,及び接続時に使用するTCPポート数の関係を次に示します。
通常接続 > FESホストダイレクト接続 > 高速接続
接続時間を短くしたい場合は,高速接続にすることをお勧めします。ただし,接続するフロントエンドサーバを効率良く利用したい場合は,通常接続にすることをお勧めします。
通常接続時に使用するTCPポート数を減らしたい場合は,クライアント環境定義PDTCPCONOPTに1を指定することで,使用するTCPポート数を減らすことができます。PDTCPCONOPTについては,「6.6.4 クライアント環境定義の設定内容」を参照してください。
[訂正前]
XAインタフェースは使用できません。そのほかの機能は基本的に使用できます。また,複数接続機能では,擬似スレッドではなく,リアルスレッドを提供しています。
[訂正後]
XAインタフェースは,Solaris,AIX,Windowsでは使用できません。そのほかの機能は基本的に使用できます。また,複数接続機能では,擬似スレッドではなく,リアルスレッドを提供しています。
[訂正前]
(凡例)
−:環境変数LANGの変わりに,環境変数PDLANGを指定してください。
【訂正後】
(凡例)
−:環境変数LANGの代わりに,環境変数PDCLTLANGを指定してください。
表8-16 コンパイル,及びリンケージをするときに指定するライブラリ(OLTP下の場合)
[訂正前]
[図データ]
[図データ]
[図データ]
[訂正後]
[図データ]
[図データ]
[図データ]
[訂正前]
-Wl,+s:
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディレクトリが異なる場合に必ず指定します。なお,このオプションは共用ライブラリ使用時だけ指定します。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。
[訂正後]
-Wl,+s:
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディレクトリが異なる場合に指定します。なお,このオプションはHP-UX版の場合で,かつ共用ライブラリを使用するときに指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。
[追加]
ODBC 2.0ドライバを使用する場合は,HiRDBサーバとの接続時にパスワードを指定するユーザインタフェースにおいて,29バイト以上のパスワードを引用符で囲んで指定できません。
[訂正前]
(例)
[HiRDBOdbcDriver] ................................................1
Driver = /HiRDB/client/lib/libpdodbcdrv.so .......................2
1.ドライバ名称
[ ]内の記述は,データソースと対応するドライバ名称です。
任意の名称を指定できます。
2.Driver
Linux版HiRDB ODBC3.5ドライバを絶対パスで指定します。
64ビットモードの場合はlibpdodbcdrv64.soとなります。
[訂正後]
(例)
[HiRDBOdbcDriver] ................................................1
Driver = /HiRDB/client/lib/libodbcdrv.so .........................2
1.ドライバ名称
[ ]内の記述は,データソースと対応するドライバ名称です。
任意の名称を指定できます。
2.Driver
Linux版HiRDB ODBC3.5ドライバを絶対パスで指定します。
64ビットモードの場合はlibodbcdrv64.soとなります。
[追加]
Type2 JDBCドライバを使用する場合は,HiRDBサーバとの接続時にパスワードを指定するユーザインタフェースにおいて,29バイト以上のパスワードを引用符で囲んで指定できません。
[訂正前]
JDBC SQLタイプLONGVARBINARY(HiRDBのデータ型であるBLOB型,及びBINARY型)のデータへのアクセス方法を指定します。
REAL:実データでアクセスします。
LOCATOR:HiRDBの位置付け子機能を使用してアクセスします。
この指定を省略した場合,REALが仮定されます。
また,これらの値以外を指定すると,SQLExceptionを投入します。
[訂正後]
JDBC SQLタイプLONGVARBINARY(HiRDBのデータ型であるBLOB型,及びBINARY型)のデータへのアクセス方法を指定します。
REAL:実データでアクセスします。
LOCATOR:HiRDBの位置付け子機能を使用してアクセスします。
ただし,定義長が1024バイト以下のBINARY列のアクセス時は,実データでアクセスします。
この指定を省略した場合,REALが仮定されます。
また,これらの値以外を指定すると,SQLExceptionを投入します。
表18-6 BLOB型又はBINARY型データ(HiRDBのデータ型)の取得方法の違い
[訂正前]
[図データ]
[訂正後]
[図データ]
注※1
定義長が1024バイト以下のBINARY列のアクセス時は,"REAL"が指定されたものとして動作する。
<AUTOコミットが有効な場合の注意事項>
[訂正前]
AUTOコミットが有効な場合でも,次のタイミングではコミットを実行しません。
  • LONGVARBINARY_ACCESSに"LOCATOR"を指定し,BLOB型又はBINARY型データを出力するストアドプロシジャの実行
  • 結果集合返却機能を使用したストアドプロシジャの実行
[訂正後]
AUTOコミットが有効な場合でも,次のタイミングではコミットを実行しません。
  • LONGVARBINARY_ACCESSに"LOCATOR"を指定し,以下に該当する出力パラメタを指定しているストアドプロシジャの実行
     ・出力パラメタが1024バイトより大きいサイズのBINARY型
     ・出力パラメタがBLOB型
  • 結果集合返却機能を使用したストアドプロシジャの実行
《注意事項》
[訂正前]
LONGVARBINARY_ACCESSに"LOCATOR"を指定している場合,このプロパティの指定値は無効です。実際のデータ長に基づいて領域を確保し,全データを取得します。
[訂正後]
LONGVARBINARY_ACCESSに"LOCATOR"を指定し,BLOB列,又は定義長が1024バイト超のBINARY列をアクセスする場合は,このプロパティの指定値は無効です。実際のデータ長に基づいて領域を確保し,全データを取得します。
表18-8 DriverPropertyInfoの各フィールドの設定値
[追加]
[図データ]
表18-29 beforeFirstの移動先
[訂正前]
[図データ]
[訂正後]
[図データ]
(aa) getCharacterStream(String columnName)
【戻り値】
[訂正前]
列値を1バイトASCII文字のストリームとして送るJava入力ストリーム(値がNULL値の場合はnullを返します)
[訂正後]
列値を格納するjava.io.Readerオブジェクト(値がNULL値の場合はnullを返します)
(ap) getLong(int columnIndex)
【形式】
[訂正前]
public synchronized double getLong (int columnIndex) throws SQLException
[訂正後]
public synchronized long getLong(int columnIndex) throws SQLException
(aq) getLong(String columnName)
【形式】
[訂正前]
public synchronized double getLong (String columnName) throws SQLException
[訂正後]
public synchronized long getLong(String columnName) throws SQLException
表18-63 XAResourceインタフェースのメソッド一覧
[訂正前]
[図データ]
[訂正後]
[図データ]
表18-81 JDBCドライバで指定できるクライアント環境定義の一覧
[追加]
[図データ]
[追加]
SQLJを使用する場合は,HiRDBサーバとの接続時にパスワードを指定するユーザインタフェースにおいて,29バイト以上のパスワードを引用符で囲んで指定できません。

変更内容(3020-6-356-40) HiRDB Version 8 08-05

追加・変更内容
データベース中でデータを呼び出すごとに一連の整数値を返す順序数生成子を追加しました(自動採番機能)。
文字列データ型に文字集合UTF-16を指定できるようにしました。これによって,UTF-16で作成された文字列データを,そのままの形式でデータベースに格納できるようになりました。
行に掛かる排他制御の順序について,説明を追加しました。
インデクス検索時の留意事項について,説明を追加しました。
64ビットモードのHP-UX(IPF)版及びWindows(x64)で,COBOL2002をサポートしました。
並行するトランザクションの前処理結果を無効にできるようにしました。これに伴い,クライアント環境定義PDDDLDEAPRPEXEを追加しました。
また,排他待ち限界経過時間をクライアント側でも指定できるようにしました。これに伴い,クライアント環境定義PDLCKWAITTIMEを追加しました。
これらの機能を組み合わせることによって,並行するトランザクションによる定義系SQLのタイムアウトエラーを回避できるようになります。
SIGPIPEシグナルハンドラ登録内容を指定できるようにしました。これに伴い,クライアント環境定義PDCLTSIGPIPEを追加しました。
HiRDB.NETデータプロバイダでメソッドトレースを取得できるようにしました。
Windows Server 2008のクラスタソフトウェアである,MSFCの説明を追加しました。
クライアント環境定義PDLOCKLIMITの最大排他資源要求数の上限値を200,000,000まで拡大しました。
SQLプリプロセサで-E2,-E3オプション(または/E2,/E3オプション)を指定した場合,C99に準拠してUAPを解析できるようにしました。これによって,UAPやコンパイラ製品に付属のヘッダファイル中でC99に準拠する構文が使用されていても,プリプロセスできるようになります。
SQLトレースファイル,およびUAP統計レポートファイルの出力先とファイル名について説明を追加しました。
ADO.NET2.0で,構成ファイルを使用する場合のコーディング例を追加しました。
Type4 JDBCドライバの接続情報設定/取得インタフェースに,警告情報を保持するかどうかを設定するメソッドを追加しました。
Type4 JDBCドライバを使用したバッチ更新で例外BatchUpdateExceptionが発生した場合,何回目のaddBatchメソッドで登録したパラメタがエラーになったのかをgetUpdateCountsメソッドで取得できるようにしました。これによって,バッチ更新時にエラーの原因となったパラメタを特定しやすくなります。
Type4 JDBCドライバをDABroker for Java互換で動作できるようにしました(DABroker for Java互換機能)。これによって,DABroker for JavaからType4 JDBCドライバに移行する場合,アプリケーションプログラムの修正が最小限になり,移行を容易にできるようになります。
コマンドのオプションで指定するRDエリアについて,指定できる数,記述方法,および指定限界数を超えたときの動作を変更しました。これに伴い,列名記述領域の内容について説明を追加しました。
ビュー定義,およびWITH句の導出問合せ中に,抽象データ型の指定,およびそれらのビューや問合せを指定できるようにしました(プラグインが提供する抽象データ型を含みます)。

変更内容(3020-6-356-30) HiRDB Version 8 08-04

追加・変更内容
インデクスの名称を変更できるようにしました。
SQLSTATEを細分化できるようにしました。これに伴い,クライアント環境定義PDSTANDARDSQLSTATEを追加しました。
SELECT文,UPDATE文,およびDELETE文に,アクセスするRDエリア名を指定できるようにしました。これによって,マルチフロントエンドサーバで表の横分割を行っている場合,複数のRDエリアに対して並列にアクセスできるようになり,サーバマシンの負荷が分散できるようになります。
SQL拡張最適化オプションに,値式に対する結合条件適用機能を追加しました。これによって,値式を含む結合条件しかない場合,アクセスパスが直積からネストループジョイン,ハッシュジョイン,またはマージジョインになり,SQL実行の高速化が期待できます。
ORを含む結合条件指定時に,直積処理のオーバーヘッドが削減できるケースでは自動的に高速なアクセスパスを適用するようにしました。
UAP環境定義での複数クライアントアクセスに対応するPDDBACCS変更機能をサポートしました。
Linux版でODBC3.5ドライバをサポートしました。
ADO.NET 2.0に対応したHiRDB.NETデータプロバイダをサポートしました。これによって,.NET Framework 2.0,または3.0で作成したADO.NET 2.0対応アプリケーションプログラムからHiRDBにアクセスできるようになります。
Windows Server 2003以降の場合のUAP実行時の注意事項について説明を追加しました。
JP1/NETM/Auditと連携して,HiRDBが出力する監査証跡をJP1/NETM/Auditで一元管理できるようにしました。これに伴い,UAPから実行できるコマンドにpdaudputを追加しました。
HiRDBの稼働プラットフォームにWindows Server 2008を追加しました。
ODBC関数のSQLMoreResultsを使用することで,結果集合返却機能を使用したSQLストアドプロシジャから複数の結果セットを取得できるようにしました。
.NET Framework Data Provider for ODBCからHiRDB ODBC3.5ドライバを経由してHiRDBにアクセスする場合に,OdbcCommandBuilderを使用してSQL文を自動生成し,データベースへ反映できるようになりました。
Type4 JDBCドライバの接続情報の設定方法を,次のように多様化しました。
  • DriverManagerクラスによるDB接続の場合,ユーザプロパティでないと指定できない項目を,URLで指定できるようにしました。
  • 任意のディレクトリ下のHiRDB.iniファイルに指定したクライアント環境変数が有効になるようにしました。
  • クライアント環境変数を,システムプロパティで指定できるようにしました。
Type4 JDBCドライバで,DatabaseMetaDataクラスをフルサポートしました。
精度20けた以上のDECIMAL型の列にインデクスを定義できるようになりました。