스키마 포맷 설정

스키마 포맷 설정 (format_schema format settings)

이 페이지는 포맷 스키마(형식 정의)와 관련된 자동 생성 설정을 다루는 문서예요. Cap’n ProtoProtobuf처럼 스키마 정의가 필요한 포맷에서 사용합니다.

출처: 문서

본문

이 설정들은 source에서 자동 생성됩니다.

format_schema

이 파라미터는 Cap’n ProtoProtobuf처럼 스키마 정의가 필요한 포맷을 사용할 때 유용해요. 값은 포맷에 따라 달라집니다.

format_schema_message_name

format_schema에 정의된 스키마에서 필요한 메시지의 이름을 정의해요. 레거시 format_schema 형식(file_name:message_name)과의 호환성을 유지하려면:

  • format_schema_message_name이 지정되지 않으면, 메시지 이름은 레거시 format_schema 값의 message_name 부분에서 추론됩니다.
  • 레거시 형식을 사용하면서 format_schema_message_name이 지정되면 오류가 발생해요.

format_schema_source

format_schema의 소스를 정의해요. 가능한 값:

  • ‘file’(기본값): format_schema는 format_schemas 디렉터리에 있는 스키마 파일의 이름이에요.
  • ‘string’: format_schema는 스키마의 리터럴 내용이에요.
  • ‘query’: format_schema는 스키마를 가져오는 쿼리예요.

format_schema_source가 ‘query’로 설정되면 다음 조건이 적용됩니다:

  • 쿼리는 정확히 하나의 값을 반환해야 해요: 단일 문자열 열이 있는 단일 행.
  • 쿼리 결과는 스키마 내용으로 취급돼요.
  • 이 결과는 format_schemas 디렉터리에 로컬로 캐시됩니다.
  • SYSTEM DROP FORMAT SCHEMA CACHE FOR Files 명령으로 로컬 캐시를 지울 수 있어요.
  • 한번 캐시되면, 같은 사용자의 동일한 쿼리는 캐시를 명시적으로 지우기 전까지 다시 실행되어 스키마를 가져오지 않아요.
  • 로컬 캐시 파일 외에도 Protobuf 메시지는 메모리에도 캐시됩니다. 로컬 캐시 파일을 지워도, 메모리 캐시는 SYSTEM DROP FORMAT SCHEMA CACHE [FOR Protobuf]로 지워야 스키마를 완전히 새로 고칠 수 있어요.
  • SYSTEM DROP FORMAT SCHEMA CACHE 쿼리를 실행하면 캐시 파일과 Protobuf 메시지 스키마 모두에 대한 캐시를 한 번에 지울 수 있어요.
  • 쿼리는 실행하는 사용자의 권한으로 실행되므로 해당 사용자의 접근 권한이 적용되며, 캐시된 결과는 같은 사용자에게만 재사용됩니다. 사용자가 없는 곳(예: 스트리밍 엔진 소비자 같은 백그라운드 작업, 클라이언트 측에서 INSERT 데이터를 파싱하는 경우)에서는 실행할 수 없어요. 그런 곳에서는 format_schema_source를 file 또는 string으로 설정하세요.

더 알아보기 (Learn more)