TinyLog 테이블 엔진

TinyLog 테이블 엔진

이 엔진은 로그 엔진 패밀리에 속해요. 로그 엔진의 공통 속성과 차이점은 Log 엔진 패밀리를 참고해요.

이 테이블 엔진은 일반적으로 한 번 쓰기(write-once) 방식으로 사용돼요: 데이터를 한 번 쓰고 필요한 만큼 여러 번 읽는 방식이에요. 예를 들어 작은 배치로 처리되는 중간 데이터에 TinyLog-타입 테이블을 사용할 수 있어요. 단, 많은 수의 작은 테이블에 데이터를 저장하는 것은 비효율적이라는 점을 유의해요.

쿼리는 단일 스트림으로 실행돼요. 즉, 이 엔진은 비교적 작은 테이블(약 1,000,000행까지)을 위한 것이에요. 많은 작은 테이블이 있다면 Log 엔진보다 단순하므로(열어야 할 파일이 적음) 이 테이블 엔진을 사용하는 것이 합리적이에요.

출처: 문서

본문

특징

  • 더 단순한 구조: Log 엔진과 달리 TinyLog는 mark 파일을 사용하지 않아요. 이는 복잡성을 줄이지만 대규모 데이터셋에 대한 성능 최적화도 제한해요
  • 단일 스트림 쿼리: TinyLog 테이블의 쿼리는 단일 스트림으로 실행되므로 일반적으로 최대 1,000,000행까지의 비교적 작은 테이블에 적합해요
  • 작은 테이블에 효율적: TinyLog 엔진의 단순함은 Log 엔진보다 파일 연산이 적게 필요하므로 많은 작은 테이블을 관리할 때 유리해요

Log 엔진과 달리 TinyLog는 mark 파일을 사용하지 않아요. 이는 복잡성을 줄이지만 더 큰 데이터셋에 대한 성능 최적화도 제한해요.

테이블 생성하기

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = TinyLog

CREATE TABLE 쿼리에 대한 자세한 설명은 해당 문서를 참고해요.

데이터 쓰기

TinyLog 엔진은 모든 컬럼을 하나의 파일에 저장해요. 각 INSERT 쿼리에 대해 ClickHouse는 컬럼을 하나씩 쓰면서 데이터 블록을 테이블 파일 끝에 추가해요.

각 테이블에 대해 ClickHouse는 다음 파일을 써요:

  • <column>.bin: 직렬화·압축된 데이터를 포함하는 각 컬럼의 데이터 파일

TinyLog 엔진은 ALTER UPDATEALTER DELETE 연산을 지원하지 않아요.

사용 예시

테이블 생성:

CREATE TABLE tiny_log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = TinyLog

데이터 삽입:

INSERT INTO tiny_log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO tiny_log_table VALUES (now(),'REGULAR','The second regular message'),(now(),'WARNING','The first warning message')

두 개의 INSERT 쿼리를 사용해 <column>.bin 파일 내부에 두 개의 데이터 블록을 만들었어요. ClickHouse는 데이터를 선택할 때 단일 스트림을 사용해요. 결과적으로 출력의 행 블록 순서가 입력의 같은 블록 순서와 일치해요. 예:

SELECT * FROM tiny_log_table
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2024-12-10 13:11:58 │ REGULAR      │ The first regular message  │
│ 2024-12-10 13:12:12 │ REGULAR      │ The second regular message │
│ 2024-12-10 13:12:12 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘

더 알아보기 (Learn more)