특수 테이블 엔진
특수 테이블 엔진 (Special Table Engines)
테이블 엔진에는 세 가지 주요 범주가 있어요.
- 주요 프로덕션 사용을 위한 MergeTree 엔진 패밀리
- 작은 임시 데이터를 위한 Log 엔진 패밀리
- 통합용 테이블 엔진
나머지 엔진들은 목적이 독특해서 아직 패밀리로 그룹화되지 않았어요. 그래서 이 "특수" 범주에 배치됐어요.
| Page | Description |
|---|---|
| Alias table engine | Alias 테이블 엔진은 다른 테이블에 대한 투명한 프록시를 만들어요. 모든 연산은 대상 테이블로 전달되며 alias 자체는 데이터를 저장하지 않아요 |
| Distributed table engine | Distributed 엔진의 테이블은 자체 데이터를 저장하지 않지만 여러 서버에서 분산 쿼리 처리를 허용해요. 읽기는 자동으로 병렬화돼요. 읽는 동안 원격 서버의 테이블 인덱스가 있으면 사용돼요 |
| Dictionary table engine | Dictionary 엔진은 딕셔너리 데이터를 ClickHouse 테이블로 표시해요 |
| Merge table engine | Merge 엔진(MergeTree와 혼동하지 마세요)은 자체적으로 데이터를 저장하지 않지만 다른 테이블 여러 개에서 동시에 읽는 것을 허용해요 |
| Executable and ExecutablePool table engines | Executable과 ExecutablePool 테이블 엔진은 정의한 스크립트(행을 stdout에 쓰는)에서 행이 생성되는 테이블을 정의할 수 있게 해줘요 |
| File table engine | File 테이블 엔진은 지원되는 파일 형식(TabSeparated, Native 등) 중 하나로 데이터를 파일에 보관해요 |
| Null table engine | Null 테이블에 쓰면 데이터는 무시돼요. Null 테이블에서 읽으면 응답은 비어 있어요 |
| Set table engine | 항상 RAM에 있는 데이터 집합. IN 연산자의 오른쪽에서 사용하기 위한 것이에요 |
| Join table engine | JOIN 연산에서 사용하기 위한 선택적 준비 데이터 구조 |
| URL table engine | 원격 HTTP/HTTPS 서버와 데이터를 주고받아요. 이 엔진은 File 엔진과 비슷해요 |
| View table engine | 뷰 구현에 사용돼요 (자세한 내용은 CREATE VIEW query 참고). 데이터를 저장하지 않고 지정된 SELECT 쿼리만 저장해요. 테이블에서 읽을 때 이 쿼리를 실행해요 (쿼리에서 불필요한 컬럼을 모두 삭제) |
| Memory table engine | Memory 엔진은 압축되지 않은 형태로 RAM에 데이터를 저장해요. 데이터는 읽을 때 받은 정확히 같은 형태로 저장돼요. 즉, 이 테이블에서 읽는 것은 완전히 무료예요 |
| Buffer table engine | 쓸 데이터를 RAM에 버퍼링하고 주기적으로 다른 테이블로 flush해요. 읽는 동안 데이터는 버퍼와 다른 테이블에서 동시에 읽혀요 |
| 쿼리 처리를 위한 외부 데이터 | ClickHouse는 쿼리 처리에 필요한 데이터를 SELECT 쿼리와 함께 서버로 보낼 수 있게 해줘요. 이 데이터는 임시 테이블에 놓이고 쿼리에서 사용할 수 있어요 (예: IN 연산자) |
| GenerateRandom table engine | GenerateRandom 테이블 엔진은 주어진 테이블 스키마에 대해 임의 데이터를 생성해요 |
| KeeperMap table engine | 이 엔진은 선형화 가능한 쓰기와 순차적으로 일관된 읽기가 있는 일관된 키-값 저장소로 Keeper/ZooKeeper 클러스터를 사용할 수 있게 해줘요 |
| FileLog table engine | 이 엔진은 애플리케이션 로그 파일을 레코드 스트림으로 처리할 수 있게 해줘요 |
출처: 문서
본문
특수 테이블 엔진들은 목적이 독특해서 별도 범주로 분류된 엔진들이에요. 위 표에서 각 엔진의 용도를 확인할 수 있어요.