Java バッチのパーシスタンス構成
Java™ バッチは、パーシスタント・ストアを使用して、ジョブ・インスタンスの複数回の実行にわたって状況、チェックポイント、およびアプリケーション・パーシスタント・データを保持するようにジョブ・リポジトリーを構成できます。 パーシスタント・ストアにより、前の実行が失敗した場合、または前の実行を停止しなければならない場合に、再開されるジョブに該当するデータを提供して、ジョブ・インスタンスを再開できます。
ジョブ・リポジトリー
ジョブ・リポジトリーは、データベースによってサポートされるパーシスタント・ストア、または、開発目的にのみ使用されるメモリー・ベースのパーシスタント・ストアのいずれかを含みます。 Liberty バッチ機能を使用すると、複数のサーバーが共通のパーシスタント・ストアまたはジョブ・リポジトリーを使用できる環境を柔軟に定義できます。 多くの機能の有効範囲が、同じジョブ・リポジトリーを使用するように構成されたすべてのサーバーであることを理解しておくことは重要です。 詳しくは、 ジョブ・リポジトリーを参照してください。
Java バッチのメモリー・ベースのパーシスタンス構成
バッチのパーシスタンスにより、ジョブ・インスタンスが FAILED または STOPPED 状態で終了しても、その実行を再開できます。 バッチ・パーシスタンス用のデータベース構成がない場合、Java バッチはデフォルトでメモリー・ベースのパーシスタンスになり、ジョブ・インスタンスの複数回の実行にわたって状況、チェックポイント、およびアプリケーション永続データを追跡します。
Java バッチのデータベース・パーシスタンス構成
バッチのパーシスタンスをデータベース・ストアを通して構成できます。 データベース・ストアはデータ・ソースを参照し、そのデータ・ソースは、JDBC ドライバー、具体的なデータベース・ロケーション、およびその他のデータベース・カスタム・プロパティーを参照します。 バッチ・パーシスタンス表の修飾名は、データベース・ストア自体の schema 属性および tablePrefix 属性を使用して構成できます。
defaultDatabaseStore という名前のデフォルトのデータベース・ストアが提供されていて、DefaultDataSource という名前のデフォルトのデータ・ソースを構成することによってアクティブになります。
または、 databaseStore エレメントを使用して別のデータベース・ストアを構成し、以下を追加してそのデータベース・ストアを使用するようにバッチ・パーシスタンスを構成することができます。
databaseStoreを参照する jobStoreRef 属性を持つ batchPersistence エレメント。
Java バッチ・データベース接続プーリングに関する考慮事項
通常、Java バッチ・ランタイムは、データベースに対して呼び出しが行われたときに get-use-close パターンに従い、通常、 JDBC 接続を使用している時間より長く保持しません。これは、特定の数のジョブおよびパーティションを 1 つのサーバー上で実行するために必要な接続の数についての問題は、ほぼ完全に管理者の判断に任せられることを意味します。
デッドロックを回避するために、接続プールのサイズを、稼働中のジョブおよびパーティションの数以上に構成する必要はありません。 接続が少なすぎることが原因のリソース競合があっても、準最適パフォーマンスは達成できます。 バッチ・コンポーネントのアクティブ化など、特殊なパスを実行する場合は、必要な接続の最小数 (おそらく 1 より大きい数) が存在することもあります。 管理者は、デフォルト値から始めて、接続プールのメトリックおよびモニタリングを使用して、例えば、パフォーマンスとリソース消費のバランスを取ることができます。 これは、JDBC 接続のランタイム使用量に適用されます。 アプリケーション・コードによって JDBC 接続プールが使用されるため、管理者が JDBC 接続プールについて考慮する必要がある場合があります。
データベース表の自動作成と手動作成
デフォルトでは、バッチ・ランタイムは、バッチ・パーシスタンス・データベース・ストアに、存在しない表を自動作成します。 また、このデフォルトの自動作成動作は、新規列定義に関与するメンテナンスが適用された場合は、既存表を拡張し、新規列を作成します。
代わりに、ddlGen スクリプトを使用して、サーバー構成に基づいて DDL を生成することができます。 必要に応じて、手動で表を作成する前に DDL をカスタマイズすることができます。 この DDL は、schema や tablePrefix などのサーバー構成も取り込み、データベース・ストアによって参照されているデータ・ソースのデータベース・タイプに該当する SQL を含みます。
表の自動作成を無効にするには、databaseStore で createTables="false" 属性を使用します。 このオプションを使用して、手動で作成した表をバッチ・ランタイムが予期せず検出できなかった場合でも、自動作成された表を使用するのではなく、手動で作成された表を確実に使用できます。
生成された DDL をカスタマイズして表を手動で作成する方法 (可能なカスタマイズを含む) については、ホワイト・ペーパー「 Liberty Batch-Job Repository Configuration 」を参照してください。 このホワイト・ペーパーは z/OS® オペレーティング・システム上の DB2® に関するものですが、他のデータベースやプラットフォームに役立つ情報が記載されている場合があります。
パーシスタンス構成のサンプル
Derby データベース RUNTIMEDB を使用して構成された自動作成された表がある、デフォルトのデータベース・ストア:
<!-- Derby JDBC driver -->
<library id="DerbyLib">
<fileset dir="${server.config.dir}/resources/derby" />
</library>
<!-- Data source for batch tables, and possibly other components. -->
<dataSource id="DefaultDataSource">
<jdbcDriver libraryRef="DerbyLib" />
<properties.derby.embedded
databaseName="${server.config.dir}/resources/RUNTIMEDB"
createDatabase="create"
user="user" password="pass" />
</dataSource>
手動で作成された表、カスタム・スキーマ、表プレフィックス、バッチ・データ・ソースがある、バッチ固有のデータベース・ストア:
<batchPersistence jobStoreRef="BatchDatabaseStore"/>
<!-- DB Store config only used by batch components -->
<databaseStore id="BatchDatabaseStore" dataSourceRef="BatchDS"
createTables="false" schema="HLQ" tablePrefix="JB1"/>
<!-- Data source for batch tables -->
<dataSource id="BatchDS">
<jdbcDriver libraryRef="DerbyLib" />
...
</dataSource>
認証構成、カスタム・スキーマ、自動作成された表、デフォルトのデータ・ソースがある、デフォルトのデータベース・ストア:
<!-- DB Store used by batch and possibly other runtime components. -->
<databaseStore id="defaultDatabaseStore" schema="HLQ">
<authData user="user1" password="password1"/>
</databaseStore>
<!-- Data source for batch tables, and possibly other components. --> <dataSource id="DefaultDataSource">
<jdbcDriver libraryRef="DerbyLib" />
...
</dataSource>
参照
生成された DDL をカスタマイズして表を手動で作成する方法 (可能なカスタマイズを含む) については、ホワイト・ペーパー https://www.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP102716 を参照してください。