CREATE DICTIONARY ... SOURCE Executable File
CREATE DICTIONARY ... SOURCE Executable File
실행 파일 소스는 외부 실행 파일에서 딕셔너리 데이터를 로드해요.
출처: 문서
본문
실행 파일 작업은 딕셔너리가 메모리에 저장되는 방식에 따라 달라져요. 딕셔너리가 cache 및 complex_key_cache로 저장되면 ClickHouse는 실행 파일의 STDIN에 요청을 보내 필요한 키를 요청합니다. 그렇지 않으면 ClickHouse는 실행 파일을 시작하고 그 출력을 딕셔너리 데이터로 취급해요.
설정 예시:
- DDL
- Configuration file
SOURCE(EXECUTABLE(
command 'cat /opt/dictionaries/os.tsv'
format 'TabSeparated'
implicit_key false
))
<source>
<executable>
<command>cat /opt/dictionaries/os.tsv</command>
<format>TabSeparated</format>
<implicit_key>false</implicit_key>
</executable>
</source>
설정 필드:
| Setting | Description |
|---|---|
command |
실행 파일의 절대 경로 또는(명령의 디렉터리가 PATH에 있다면) 파일 이름이에요. |
format |
파일 형식이에요. Formats에 설명된 모든 형식이 지원됩니다. |
command_termination_timeout |
실행 스크립트는 메인 읽기-쓰기 루프를 포함해야 해요. 딕셔너리가 파괴된 후 파이프가 닫히고, ClickHouse가 자식 프로세스에 SIGTERM 신호를 보내기 전에 실행 파일이 종료할 수 있는 시간이 command_termination_timeout초 있습니다. 초 단위로 지정됩니다. 기본값은 10이에요. 선택 사항이에요. |
command_read_timeout |
명령 stdout에서 데이터를 읽는 타임아웃(밀리초)이에요. 기본값 10000. 선택 사항이에요. |
command_write_timeout |
명령 stdin에 데이터를 쓰는 타임아웃(밀리초)이에요. 기본값 10000. 선택 사항이에요. |
implicit_key |
실행 소스 파일은 값만 반환할 수 있으며, 요청된 키와의 대응은 결과의 행 순서로 암시적으로 결정돼요. 기본값은 false예요. |
execute_direct |
execute_direct = 1이면 command는 user_scripts_path로 지정된 user_scripts 폴더 안에서 검색됩니다. 추가 스크립트 인자는 공백 구분자로 지정할 수 있어요. 예: script_name arg1 arg2. execute_direct = 0이면 command는 bin/sh -c의 인자로 전달됩니다. 기본값은 0이에요. 선택 사항이에요. |
send_chunk_header |
처리할 데이터 청크를 보내기 전에 행 수를 보낼지 제어해요. 기본값은 false예요. 선택 사항이에요. |
이 딕셔너리 소스는 XML 구성으로만 설정할 수 있어요. DDL로 실행 소스를 가진 딕셔너리를 만드는 것은 비활성화되어 있습니다. 그렇지 않으면 DB 사용자가 ClickHouse 노드에서 임의 바이너리를 실행할 수 있기 때문이에요.