Java 批次持續性配置
Java™ 批次使用持續儲存庫,來持續保存某工作實例在多次執行之間的狀態、檢查點和應用程式持續資料。對於先前執行失敗或必須停止的工作實例,持續儲存庫可讓它重新啟動,其作法是提供適當資料給重新啟動的工作。
Java 批次記憶體型持續性配置
一旦工作實例執行在「失敗」或「停止」狀態下結束時,批次持續性可讓該工作實例重新啟動。如果缺少批次持續性資料庫配置,Java 批次會預設為「記憶體型持續性」,以便在工作實例多次執行之間,追蹤狀態、檢查點和應用程式持續資料。
Java 批次資料庫持續性配置
批次持續性可透過資料庫儲存庫來配置。資料庫儲存庫會參照資料來源,資料來源又會參照 JDBC 驅動程式、特定的資料庫位置,以及其他資料庫自訂內容。批次持續性表格的完整名稱可以使用資料庫儲存庫本身的 schema 和 tablePrefix 屬性來配置。
系統會提供預設資料庫儲存庫(名稱是 defaultDatabaseStore),且會藉由配置預設資料來源 (名稱是 DefaultDataSource)來啟動它。
或者,您可以使用 databaseStore 元素來配置不同的資料庫儲存庫,並且配置批次持續性來使用它,作法是新增
batchPersistence 元素,且其含有一個會參照您 databaseStore 的 jobStoreRef 屬性。
使用 Java 批次資料庫連線儲存區時的考量
在呼叫資料庫時,Java 批次執行時期通常會遵循「取得-使用-關閉」型樣,且 JDBC 連線的保留時間通常不會超過使用時間。也就是說,在伺服器上執行特定數量的工作與分割區時,到底需要多少連線數,幾乎是由管理者全權決定。
您不需要將連線儲存區大小配置成大於或等於執行中的工作數與分割區數,來避免死鎖。由於連線數太少,資源競用仍可能造成效能不能達到最佳。還是需要指定連線數目下限(例如大於 1),以執行特殊路徑,例如:啟動批次元件。管理者可以從預設值開始,並使用連線儲存區度量和監視功能,例如,讓資源耗用與效能之間達到平衡。這適用於執行時期的 JDBC 連線使用。管理者可能仍需要考量 JDBC 連線儲存區,因為應用程式碼會使用它。
自動/手動建立資料庫表格的對照
依預設,批次執行時期會在批次持續性資料庫儲存庫中,自動建立不存在的表格。這種預設自動建立行為也會延伸現有的表格,而如果所套用的維護工作會提供新直欄定義,此行為也會建立這些新直欄。
或者,可以使用 ddlGen Script,根據伺服器配置來產生 DDL。必要的話,可在手動建立表格之前先自訂 DDL。這個 DDL 也會納入伺服器配置,例如 schema 和 tablePrefix,且包含資料庫儲存庫所參照之資料來源的資料庫類型所適用的 SQL。
如果要停用自動建立表格,請在 databaseStore 中使用 createTables="false" 屬性。一旦批次執行時期意外找不到您手動建立的表格,這個選項可用來確定您使用手動建立的表格,而不是使用自動建立的表格。
如果要瞭解如何自訂產生的 DDL(包括可行的自訂作業),來手動建立表格,請參閱 Liberty 批次 - 工作儲存庫配置白皮書。雖然這份白皮書適用於 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