Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

StripeLog 테이블 엔진

ClickHouse Cloud에서 지원되지 않음

이 엔진은 log engines 계열에 속합니다. log engines의 공통 속성과 차이점은 Log Engine Family 문서를 참조하십시오.

이 엔진은 적은 양의 데이터(100만 행 미만)를 저장하는 테이블을 많이 작성해야 하는 경우에 사용하십시오. 예를 들어, 원자적 처리가 필요한 변환용 수신 데이터 배치를 저장하는 데 이 테이블을 사용할 수 있습니다. ClickHouse 서버에서는 이 유형의 테이블 인스턴스 10만 개를 운영할 수 있습니다. 많은 수의 테이블이 필요한 경우 Log보다 이 테이블 엔진을 사용하는 것이 좋습니다. 다만 그만큼 읽기 효율은 낮아집니다.

테이블 생성하기

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 = StripeLog

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

데이터 쓰기

StripeLog 엔진은 모든 컬럼을 하나의 파일에 저장합니다. 각 INSERT 쿼리마다 ClickHouse는 데이터 블록을 테이블 파일 끝에 덧붙이고, 컬럼을 하나씩 씁니다.

각 테이블에 대해 ClickHouse는 다음 파일을 씁니다:

  • data.bin — 데이터 파일.
  • index.mrk — 마크가 있는 파일입니다. 마크에는 삽입된 각 데이터 블록의 각 컬럼에 대한 오프셋이 들어 있습니다.

StripeLog 엔진은 ALTER UPDATEALTER DELETE 작업을 지원하지 않습니다.

데이터 읽기

마크 파일을 사용하면 ClickHouse가 데이터를 병렬로 읽을 수 있습니다. 즉, SELECT 쿼리는 행을 예측할 수 없는 순서로 반환합니다. 행을 정렬하려면 ORDER BY 절을 사용하십시오.

사용 예시

테이블 생성:

CREATE TABLE stripe_log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = StripeLog

데이터 삽입:

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

두 개의 INSERT 쿼리를 사용해 data.bin 파일 안에 2개의 데이터 블록(data block)을 만들었습니다.

ClickHouse는 데이터를 조회할 때 여러 스레드를 사용합니다. 각 스레드는 서로 다른 데이터 블록을 읽고, 작업이 끝나는 대로 결과 행을 독립적으로 반환합니다. 따라서 대부분의 경우 출력에 나타나는 행 블록의 순서는 입력에서 동일한 블록의 순서와 일치하지 않습니다. 예를 들면 다음과 같습니다:

SELECT * FROM stripe_log_table
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘

결과를 정렬합니다(기본값은 오름차순):

SELECT * FROM stripe_log_table ORDER BY timestamp
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message  │
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
Navigation