clickhouse-odbc-bridge

clickhouse-odbc-bridge

clickhouse-odbc-bridge는 ODBC 드라이버를 위한 프록시처럼 동작하는 간단한 HTTP 서버예요. ODBC 구현에서 발생할 수 있는 세그폴트(segfault) 등의 장애가 전체 clickhouse-server 프로세스를 중단시키는 것을 막기 위한 도구입니다.

출처: 문서

본문

ODBC 드라이버의 프록시처럼 동작하는 간단한 HTTP 서버입니다. 주된 동기는 ODBC 구현에서 발생할 수 있는 세그폴트나 다른 장애가 전체 clickhouse-server 프로세스를 중단시킬 수 있기 때문이에요.

이 도구는 파이프(pipes), 공유 메모리, TCP가 아니라 HTTP로 동작합니다. 그 이유는:

  • 구현하기 더 간단하고
  • 디버깅하기 더 간단하며
  • jdbc-bridge도 같은 방식으로 구현할 수 있기 때문입니다.

사용법 (Usage)

clickhouse-server는 odbc 테이블 함수와 StorageODBC 안에서 이 도구를 사용합니다. 하지만 독립 실행 도구로서 명령줄에서 POST-request URL에 다음 파라미터를 넣어 사용할 수도 있습니다:

  • connection_string — ODBC 연결 문자열.
  • sample_block — ClickHouse NamesAndTypesList 형식의 컬럼 설명. 이름은 백틱으로, 타입은 문자열로 표기합니다. 이름과 타입은 공백으로 구분하고, 행은 줄바꿈으로 구분합니다.
  • max_block_size — 선택 파라미터. 단일 블록의 최대 크기를 설정합니다. 쿼리는 post body로 전송되고, 응답은 RowBinary 형식으로 반환됩니다.

예시 (Example)

$ clickhouse-odbc-bridge --http-port 9018 --daemon

$ curl -d "query=SELECT PageID, ImpID, AdType FROM Keys ORDER BY PageID, ImpID" --data-urlencode "connection_string=DSN=ClickHouse;DATABASE=stat" --data-urlencode "sample_block=columns format version: 1
3 columns:
\`PageID\` String
\`ImpID\` String
\`AdType\` String
"  "http://localhost:9018/" > result.txt

$ cat result.txt
12246623837185725195925621517

더 알아보기 (Learn more)