Task Reactor SQL 참조

데이터베이스 오브젝트 및 프로시저

다음 데이터베이스 오브젝트는 task_reactor.sql 파일을 통해 생성됩니다.

TASK_REACTOR SCHEMA

커넥터에서 Task Reactor의 일부 데이터베이스 오브젝트가 포함된 버전이 지정된 스키마입니다.

TASK_REACTOR_INSTANCES SCHEMA

커넥터에서 Task Reactor의 일부 인스턴스 데이터베이스 오브젝트가 포함된 버전이 지정되지 않은 스키마입니다.

TASK_REACTOR_INSTANCES.INSTANCE_REGISTRY

이 테이블은 애플리케이션 런타임 동안 기존 인스턴스를 추적하고 관리할 수 있도록 Task Reactor 인스턴스에 대한 데이터를 저장하기 위해 생성되었습니다. 이 테이블은 TASK_REACTOR_INSTANCES 스키마에 생성됩니다.

  • instance_name VARCHAR

  • is_initialized BOOLEAN

  • is_active BOOLEAN

TASK_REACTOR.DISPATCHER(INSTANCE_SCHEMA_NAME VARCHAR)

이 프로시저는 Java DispatcherHandler.dispatchWorkItems 를 호출하고 작업 항목을 디스패치할 수 있습니다.

TASK_REACTOR.SET_WORKERS_NUMBER (WORKERS_NUMBER NUMBER, INSTANCE_SCHEMA_NAME VARCHAR)

이 프로시저는 Java SetWorkersNumberHandler.setWorkersNumber 를 호출하고 워커 수를 설정할 수 있습니다.

TASK_REACTOR.CREATE_INSTANCE_OBJECTS

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • WORKER_PROCEDURE_NAME VARCHAR

  • WORK_SELECTOR_TYPE VARCHAR

  • WORK_SELECTOR_NAME VARCHAR

  • EXPIRED_WORK_SELECTOR_NAME VARCHAR

프로시저는 정확한 Task reactor 흐름에 필요한 모든 인스턴스 오브젝트를 생성하고 이미 초기화되지 않아야 하는 오브젝트의 유효성을 검사합니다. 프로세스가 끝나면 새로운 인스턴스 레지스트리 레코드가 테이블에 삽입됩니다.

가능한 원인은 다음과 같을 수 있습니다.

  • INSTANCE_NOT_FOUND - 이 이름을 갖는 인스턴스가 없습니다.

  • INSTANCE_ALREADY_INITIALIZED - 이 이름을 갖는 인스턴스가 이미 초기화되었습니다.

  • DEFAULT_PROCEDURE_VALIDATION_EXCEPTION - 프로시저를 찾을 수 없습니다.

  • SCHEMA_WITH_THE_SAME_NAME_ALREADY_EXISTS - 동일한 이름의 스키마가 이미 있습니다.

  • CREATING_TR_INSTANCE_EXCEPTION - Task Reactor의 새 인스턴스를 생성하는 동안 예기치 못한 문제가 발생했습니다. 인스턴스가 생성되지 않았습니다.

TASK_REACTOR.INITIALIZE_INSTANCE

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • WAREHOUSE_NAME VARCHAR

  • DT_SHOULD_BE_STARTED BOOLEAN

  • DT_TASK_SCHEDULE VARCHAR

  • DT_ALLOW_OVERLAPPING_EXECUTION BOOLEAN

  • DT_USER_TASK_TIMEOUT_MS VARCHAR

이 프로시저는 동일한 데이터베이스 인스턴스 내에서 초기화되지 않은 모든 인스턴스를 시작합니다. 인스턴스가 존재하는지 또는 이미 초기화되지 않았는지 확인한 후 디스패처 작업을 생성하고 필요한 경우 이 작업을 시작합니다.

프로시저가 다음과 함께 성공적으로 종료되었습니다.

{
    "response_code": "OK",
    "message": "Instance has been initialized successfully."
}
Copy

가능한 원인은 다음과 같을 수 있습니다.

  • INSTANCE_NOT_FOUND - 인스턴스가 없습니다.

  • INSTANCE_ALREADY_INITIALIZED - 이 이름을 갖는 인스턴스가 이미 초기화되었습니다.

TASK_REACTOR.PAUSE_INSTANCE

입력 매개 변수:

  • INSTANCE_SCHEMA VARCHAR

프로시저는 지정된 Task Reactor 인스턴스를 일시 중지하는 프로세스를 시작하고 OK 응답을 반환합니다. 모든 워커 작업과 디스패처 작업을 비동기적으로 중지시키는 작업을 시작합니다. 워커 작업이 이미 수집을 수행 중일 경우, 작업은 즉시 중지되지 않지만 수집이 완료된 후 작업이 중지됩니다.

참고

이 프로시저의 논리는 커넥터 일시 중지 에서 이미 사용되었으므로 전체 커넥터를 중지하기 위한 일부로 이 프로시저를 사용할 필요는 없습니다.

프로시저가 다음과 함께 성공적으로 종료되었습니다.

{
    "response_code": "OK"
}
Copy

TASK_REACTOR.RESUME_INSTANCE

입력 매개 변수:

  • INSTANCE_SCHEMA VARCHAR

프로시저는 지정된 Task Reactor 인스턴스를 재개하는 프로세스를 시작하고 OK 응답을 반환합니다. 디스패처 작업을 재개하고 이미 작업이 할당된 모든 워커 작업을 비동기적으로 재개하는 작업을 시작합니다.

참고

이 프로시저의 논리는 커넥터 재개 에서 이미 사용되었으므로 전체 커넥터를 재개하기 위한 일부로 이 프로시저를 사용할 필요는 없습니다.

프로시저가 다음과 함께 성공적으로 종료되었습니다.

{
    "response_code": "OK"
}
Copy

TASK_REACTOR.UPDATE_WAREHOUSE_INSTANCE

입력 매개 변수:

  • WAREHOUSE_NAME VARCHAR

  • INSTANCE_SCHEMA VARCHAR

프로시저는 Task Reactor의 지정된 인스턴스에 대한 웨어하우스를 변경하는 프로세스를 시작합니다. 디스패처 작업의 웨어하우스를 변경한 다음 모든 워커 작업의 웨어하우스를 비동기적으로 변경하는 작업을 시작합니다.

참고

이 프로시저의 논리는 이미 웨어하우스 업데이트 에서 사용되었으므로, 전체 커넥터에 대한 웨어하우스 업데이트의 일부로 이 프로시저를 사용할 필요가 없습니다.

프로시저가 다음과 함께 성공적으로 종료되었습니다.

{
    "response_code": "OK"
}
Copy

가능한 원인은 다음과 같을 수 있습니다.

  • INSTANCE_NOT_FOUND - 지정된 인스턴스가 없습니다.

  • TASK_REACTOR_INSTANCE_IS_ACTIVE - 이 프로시저를 사용하기 전에 지정된 Task Reactor 인스턴스가 일시 중지되지 않았습니다.

내부 프로시저

아래의 모든 프로시저는 task_reactor 설정 스크립트 내부용으로만 사용되며 외부에서 사용해서는 안 됩니다.

TASK_REACTOR.CREATE_INSTANCE_SCHEMA(INSTANCE_SCHEMA_NAME VARCHAR)

이 프로시저는 식별자가 instance_schema_name 인 새 스키마를 생성한 다음 스키마를 생성할 수 없는 경우 새 예외를 throw합니다.

가능한 원인은 다음과 같을 수 있습니다.

  • SCHEMA_WITH_THE_SAME_NAME_ALREADY_EXISTS - 동일한 이름의 스키마가 이미 있습니다.

TASK_REACTOR.VALIDATE_PROCEDURE_EXISTENCE

입력 매개 변수:

  • PROCEDURE_NAME VARCHAR

  • PROCEDURE_TYPE VARCHAR

이 프로시저는 정의된 프로시저가 존재하지 않는지 유효성 검사한 후 새로운 예외를 발생시킵니다.

가능한 원인은 다음과 같을 수 있습니다.

  • WORKER_PROCEDURE_NOT_FOUND_EXCEPTION - 워커 프로시저를 찾을 수 없습니다.

  • WORK_SELECTOR_PROCEDURE_NOT_FOUND_EXCEPTION - 작업 선택기 프로시저를 찾을 수 없습니다.

  • DEFAULT_PROCEDURE_VALIDATION_EXCEPTION - 프로시저를 찾을 수 없습니다.

TASK_REACTOR.CREATE_QUEUE

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • TABLE_NAME VARCHAR

  • STREAM_NAME VARCHAR

Task Reactor 의 도우미 메서드로, 이름이 instance_schema_name.table_name 이고 다음 열이 있는 큐 테이블을 생성합니다.

  • ID STRING

  • RESOURCE_ID STRING

  • DISPATCHER_OPTIONS VARIANT

  • WORKER_PAYLOAD VARIANT

  • TIMESTAMP DATETIME

그런 다음 스트림이 아직 존재하지 않는 경우 이름이 instance_schema_name.stream_name 인 스트림을 생성합니다.

TASK_REACTOR.CREATE_WORKER_REGISTRY_SEQUENCE

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • SEQUENCE_NAME VARCHAR

Task Reactor 의 도우미 메서드로, instance_schema_name.sequence_name 시퀀스 이름으로 워커 레지스트리에 대한 시퀀스를 생성합니다.

TASK_REACTOR.CREATE_WORKER_REGISTRY

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • TABLE_NAME VARCHAR

  • SEQUENCE_NAME VARCHAR

Task Reactor 의 도우미 메서드로, 이름이 instance_schema_name.table_name 이고 다음 열을 갖는 테이블로 구성된 워커 레지스트리를 생성합니다.

  • 기본 instance_schema_name.sequence_name 시퀀스를 갖는 WORKER_ID NUMBER

  • CREATED_AT DATETIME

  • UPDATED_AT DATETIME

  • STATUS STRING

TASK_REACTOR.CREATE_WORKER_STATUS_TABLE

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • TABLE_NAME VARCHAR

Task Reactor 의 도우미 메서드로, 이름이 instance_schema_name.table_name 이고 다음 열을 갖는 워커에 대한 상태 테이블을 생성합니다.

  • WORKER_ID NUMBER

  • TIMESTAMP DATETIME

  • STATUS STRING

TASK_REACTOR.CREATE_CONFIG_TABLE

입력 매개 변수:

  • INSTANCE_SCHEMA_NAME VARCHAR

  • TABLE_NAME VARCHAR

  • WORKER_PROCEDURE_NAME VARCHAR

  • WORK_SELECTOR_TYPE VARCHAR

  • WORK_SELECTOR_NAME VARCHAR

  • EXPIRED_WORK_SELECTOR_NAME VARCHAR

  • IS_INSTANCE_REGISTERED BOOLEAN

Task Reactor 의 도우미 메서드로, 키와 값 열을 갖는 이름이 instance_schema_name.table_name 인 구성 테이블을 생성합니다. 다음 값으로 아직 등록되지 않은 경우 구성 데이터를 테이블에 삽입합니다.

  • WORKER_PROCEDURE

  • WORK_SELECTOR_TYPE

  • WORK_SELECTOR

  • SCHEMA