Java 일괄처리 지속성 구성

Java™ 일괄처리는 작업 인스턴스 하나가 여러 번 실행될 때 상태, 체크포인트 및 애플리케이션의 지속적 데이터를 유지하기 위해 지속적 저장소를 사용합니다. 지속적 저장소는 이전 실행이 실패하거나 다시 시작된 작업에 적절한 데이터를 제공하여 이전 실행이 중지되어야 하는 경우 작업 인스턴스가 다시 시작될 수 있게 합니다.

Java 일괄처리 메모리 기반 지속성 구성

일괄처리 지속성을 사용하면 작업 실행이 FAILED 또는 STOPPED 상태로 종료되는 경우 작업 인스턴스를 다시 시작할 수 있습니다. 일괄처리 지속성에 대한 데이터베이스 구성이 없으면 Java 일괄처리는 기본적으로 메모리 기반 지속성을 사용하여 복수의 작업 인스턴스 실행에서 상태, 체크포인트 및 애플리케이션 지속적 데이터를 추적합니다.

참고: 기본 메모리 기반 지속성은 명확하지만 상당한 제한사항과 함께 제공됩니다. 일괄처리 컨테이너 런타임 환경 또는 서버 JVM이 손상되거나 다시 시작되는 경우 지속성을 잃습니다. 이 기능은 개발 용도로만 사용되며 프로덕션 시스템 또는 중요한 일괄처리 지원은 고려하지 않습니다.

Java 일괄처리 데이터베이스 지속성 구성

일괄처리 지속성은 데이터베이스 저장소를 통해 구성할 수 있습니다. 데이터베이스 저장소는 JDBC 드라이버, 특정 데이터베이스 위치 및 기타 데이터베이스 사용자 정의 특성을 차례로 참조하는 데이터 소스를 참조합니다. 일괄처리 지속성 테이블의 규정된 이름은 데이터베이스 저장소의 schematablePrefix 속성을 사용하여 구성할 수 있습니다.

기본 데이터베이스 저장소인 defaultDatabaseStore가 제공되고 기본 데이터 소스인 DefaultDataSource를 구성하여 활성화됩니다.

또는 databaseStore 요소를 사용하여 다른 데이터베이스 저장소를 구성하고

databaseStore를 참조하는 jobStoreRef 속성과 함께 batchPersistence 요소를 추가하여 해당 저장소를 사용하도록 일괄처리 지속성을 구성할 수 있습니다.

Java 일괄처리 데이터베이스 연결 풀링 고려사항

Java 일괄처리 런타임은 데이터베이스에 호출이 수행될 때 일반적으로 get-use-close 패턴을 따르고 일반적으로 JDBC 연결이 사용되는 시간보다 더 오래 연결을 유지하지는 않습니다. 즉, 서버에서 특정 수의 작업과 파티션을 실행하기 위해 필요한 연결 수는 전적으로 관리자가 결정해야 할 사항입니다.

교착 상태를 방지하기 위해 실행 중인 작업과 파티션 수보다 크거나 같은 크기의 연결 풀을 구성할 필요가 없습니다. 연결 수가 너무 적기 때문에 자원 경합으로 인해 여전히 최적의 성능을 내지 못할 수 있습니다. 일괄처리 컴포넌트의 활성화와 같이 특수한 경로를 실행하기 위해 필요한 최소 연결 수가 1보다 클 수 있습니다. 관리자는 기본값으로 시작할 수 있으며 예를 들어 연결 풀 메트릭과 모니터링을 사용하여 성능에 대한 자원 소비의 균형을 맞출 수 있습니다. 이는 JDBC 연결의 런타임 사용에 적용됩니다. JDBC 연결 풀링이 애플리케이션 코드에서 사용되므로 관리자는 여전히 JDBC 연결 풀링을 고려해야 할 수도 있습니다.

자동 대 수동 데이터베이스 테이블 작성

기본적으로 일괄처리 런타임은 일괄처리 지속성 데이터베이스 저장소에 존재하지 않는 테이블을 자동 작성합니다. 또한 이 기본 자동 작성 동작은 이러한 새 열 정의를 제공하는 유지보수가 적용된 경우 기존 테이블과 새 열 작성을 확장합니다.

또는, ddlGen 스크립트를 사용하여 서버 구성에 따라 DDL을 생성할 수도 있습니다. 필요한 경우에는 수동으로 테이블을 작성하여 DDL을 사용자 정의할 수 있습니다. 또한 이 DDL은 schematablePrefix 등의 서버 구성을 통합하며 데이터베이스 저장소에서 참조하는 데이터 소스의 데이터베이스 유형에 대해 적절한 SQL을 포함하고 있습니다.

참고: 사용자 정의된 DDL에서는 양수 기본 키 ID를 사용해야 합니다. 데이터베이스 지속성에 대한 제한사항으로 Java 일괄처리 시 기본 키 ID 열에 지속된 음수 또는 0 정수 ID를 허용하지 않습니다. Java 일괄처리 컨테이너 런타임은 기본 키 ID 열에 지속된 양수 작업 ID를 사용하는 작업만 실행합니다.

databaseStore에서 createTables="false" 속성을 사용하면 테이블의 자동 작성을 사용 안함으로 설정할 수 있습니다. 이 옵션은 일괄처리 런타임이 수동으로 작성된 테이블을 예기치 않게 찾지 못하는 경우 자동 작성된 테이블 대신 수동으로 작성된 테이블을 사용하도록 하는 데 사용할 수 있습니다.

가능한 사용자 정의에 대한 정보와 생성된 DDL을 사용자 정의하여 테이블을 수동으로 작성하는 방법에 대해서는 tomizations, see the 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


주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_batch_persistence_config.html