SQLite 데이터베이스 엔진

SQLite 데이터베이스 엔진

SQLite 데이터베이스에 연결하고, ClickHouse와 SQLite 사이 데이터를 교환하기 위해 INSERTSELECT 쿼리를 수행할 수 있게 해주는 데이터베이스 엔진이에요.

출처: 문서

본문

SQLite 데이터베이스에 연결하고, ClickHouse와 SQLite 사이 데이터를 교환하기 위해 INSERTSELECT 쿼리를 수행할 수 있게 해줘요.

데이터베이스 만들기 (Creating a database)

    CREATE DATABASE sqlite_database
    ENGINE = SQLite('db_path')

엔진 매개변수 (Engine Parameters)

  • db_path — SQLite 데이터베이스가 있는 파일의 경로.

데이터 타입 지원 (Data types support)

아래 표는 ClickHouse가 SQLite에서 스키마를 자동으로 추론할 때의 기본 타입 매핑을 보여줘요.

SQLite ClickHouse
INTEGER Int32
REAL Float32
TEXT String
TEXT UUID
BLOB String

SQLite 테이블 엔진으로 특정 ClickHouse 타입을 가진 테이블을 명시적으로 정의하면 다음 ClickHouse 타입을 SQLite TEXT 컬럼에서 파싱할 수 있어요.

SQLite는 동적 타이핑이 있고, 그 타입 접근 함수들은 자동 타입 강제 변환을 수행해요. 예를 들어 TEXT 컬럼을 정수로 읽으면 텍스트를 숫자로 파싱할 수 없을 때 0을 반환해요. 이것은 ClickHouse 테이블이 하부 SQLite 컬럼과 다른 타입으로 정의되면 값이 오류를 내는 대신 조용히 강제 변환될 수 있음을 뜻해요.

세부 사항과 권장 사항 (Specifics and recommendations)

SQLite는 전체 데이터베이스(정의, 테이블, 인덱스, 데이터 자체)를 호스트 머신의 단일 크로스 플랫폼 파일로 저장해요. 쓰기 중에 SQLite는 전체 데이터베이스 파일을 잠그므로 쓰기 연산은 순차적으로 수행돼요. 읽기 연산은 멀티태스킹될 수 있어요. SQLite는 서비스 관리(시작 스크립트 같은)나 GRANT·비밀번호 기반 접근 제어를 요구하지 않아요. 접근 제어는 데이터베이스 파일 자체에 주어진 파일시스템 권한으로 처리돼요.

사용 예시 (Usage example)

SQLite에 연결된 ClickHouse의 데이터베이스:

CREATE DATABASE sqlite_db ENGINE = SQLite('sqlite.db');
SHOW TABLES FROM sqlite_db;
┌──name───┐
│ table1  │
│ table2  │
└─────────┘

테이블 보이기:

SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
└───────┴──────┘

ClickHouse 테이블에서 SQLite 테이블로 데이터 넣기:

CREATE TABLE clickhouse_table(`col1` String,`col2` Int16) ENGINE = MergeTree() ORDER BY col2;
INSERT INTO clickhouse_table VALUES ('text',10);
INSERT INTO sqlite_db.table1 SELECT * FROM clickhouse_table;
SELECT * FROM sqlite_db.table1;
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
│ text  │   10 │
└───────┴──────┘

더 알아보기 (Learn more)