ClickHouse-2接口


客户端

ClickHouse提供了两个网络接口(两个都可以选择包装在TLS中以增加安全性):

  • HTTP, 包含文档,易于使用。
  • Native TCP,简单,方便使用。

在大多数情况下,建议使用适当的工具或库,而不是直接与它们交互。Yandex官方支持的项目有:

  • 命令行客户端
  • JDBC驱动
  • ODBC驱动
  • C++客户端

还有一些广泛的第三方库可供ClickHouse使用:

  • 客户端库
  • 第三方集成库
  • 可视化UI

命令行客户端

ClickHouse提供了一个原生命令行客户端clickhouse-client客户端支持命令行支持的更多信息详见Configuring。

安装部署后,系统默认会安装clickhouse-client(同时它属于clickhouse-client安装包中)。

$ clickhouse-client
ClickHouse client version 19.17.1.1579 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.17.1 revision 54428.

:)

使用方式?

客户端可以在交互和非交互(批处理)模式下使用。要使用批处理模式,请指定query参数,或将数据发送到stdin(它会验证stdin是否是终端),或两者同时进行。与HTTP接口类似,当使用query参数并向stdin发送数据时,客户端请求就是一行一行的stdin输入作为query的参数。这种方式在大规模的插入请求中非常方便。

使用客户端插入数据的示例:

$ echo -ne "1, 'some text', '2016-08-14 00:00:00'\n2, 'some more text', '2016-08-14 00:00:01'" | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";

$ cat <<_EOF | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";
3, 'some text', '2016-08-14 00:00:00'
4, 'some more text', '2016-08-14 00:00:01'
_EOF

$ cat file.csv | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";

查询语法?

像平常一样格式化一个查询,然后把你想要从app参数传递到查询的值用大括号格式化,格式如下:

{<name>:<data type>}

配置?

您可以通过以下方式传入参数到clickhouse-client中(所有的参数都有默认值):

  • 通过命令行

    命令行参数会覆盖默认值和配置文件的配置。

  • 配置文件

    配置文件的配置会覆盖默认值

命令行参数?

  • --host, -h -– 服务端的host名称, 默认是localhost。您可以选择使用host名称或者IPv4或IPv6地址。
  • --port – 连接的端口,默认值:9000。注意HTTP接口以及TCP原生接口使用的是不同端口。
  • --user, -u – 用户名。 默认值:default
  • --password – 密码。 默认值:空字符串。
  • --query, -q – 使用非交互模式查询。
  • --database, -d – 默认当前操作的数据库. 默认值:服务端默认的配置(默认是default)。
  • --multiline, -m – 如果指定,允许多行语句查询(Enter仅代表换行,不代表查询语句完结)。
  • --multiquery, -n – 如果指定, 允许处理用;号分隔的多个查询,只在非交互模式下生效。
  • --format, -f – 使用指定的默认格式输出结果。
  • --vertical, -E – 如果指定,默认情况下使用垂直格式输出结果。这与–format=Vertical相同。在这种格式中,每个值都在单独的行上打印,这种方式对显示宽表很有帮助。
  • --time, -t – 如果指定,非交互模式下会打印查询执行的时间到stderr中。
  • --stacktrace – 如果指定,如果出现异常,会打印堆栈跟踪信息。
  • --config-file – 配置文件的名称。
  • --secure – 如果指定,将通过安全连接连接到服务器。
  • --history_file — 存放命令历史的文件的路径。
  • --param_ — 查询参数配置查询参数.

配置文件?

clickhouse-client使用以下第一个配置文件:

  • 通过--config-file参数指定。
  • ./clickhouse-client.xml
  • ~/.clickhouse-client/config.xml
  • /etc/clickhouse-client/config.xml

配置文件示例:

<config>
<user>usernameuser>
<password>passwordpassword>
<secure>Falsesecure>
config>

原生接口(TCP)

原生接口协议用于命令行客户端,用于分布式查询处理期间的服务器间通信,以及其他C++ 程序。不幸的是,原生ClickHouse协议还没有正式的规范,但它可以从ClickHouse源代码从这里开始或通过拦截和分析TCP流量进行逆向工程。

HTTP客户端

HTTP接口允许您在任何编程语言的任何平台上使用ClickHouse。我们使用它在Java和Perl以及shell脚本中工作。在其他部门中,HTTP接口用于Perl、Python和Go。HTTP接口比原生接口受到更多的限制,但它具有更好的兼容性。

默认情况下,clickhouse-server会在8123端口上监控HTTP请求(这可以在配置中修改)。

如果你发送了一个未携带任何参数的GET /请求,它会返回一个字符串 ?Ok.?(结尾有换行)。可以将它用在健康检查脚本中。

如果你发送了一个未携带任何参数的GET /请求,它返回响应码200和OK字符串定义,可在Http服务响应配置定义(在末尾添加换行)

$ curl 'http://localhost:8123/'
Ok.

通过URL中的 query 参数来发送请求,或者发送POST请求,或者将查询的开头部分放在URL的query参数中,其他部分放在POST中(我们会在后面解释为什么这样做是有必要的)。URL的大小会限制在16KB,所以发送大型查询时要时刻记住这点。

如果请求成功,将会收到200的响应状态码和响应主体中的结果。 如果发生了某个异常,将会收到500的响应状态码和响应主体中的异常描述信息。

当使用GET方法请求时,readonly会被设置。换句话说,若要作修改数据的查询,只能发送POST方法的请求。可以将查询通过POST主体发送,也可以通过URL参数发送。

示例:

$ curl 'http://localhost:8123/?query=SELECT%201'
1

$ wget -nv -O- 'http://localhost:8123/?query=SELECT 1'
1

$ echo -ne 'GET /?query=SELECT%201 HTTP/1.0\r\n\r\n' | nc localhost 8123
HTTP/1.0 200 OK
Date: Wed, 27 Nov 2019 10:30:18 GMT
Connection: Close
Content-Type: text/tab-separated-values; charset=UTF-8
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0"}

1

如您所见,curl有些不方便,因为空格必须进行URL转义。 尽管wget本身会对所有内容进行转义,但我们不推荐使用它,因为在使用keepalive和传输编码chunked时,它在HTTP 1.1上不能很好地工作。

$ echo 'SELECT 1' | curl 'http://localhost:8123/' --data-binary @-
1

$ echo 'SELECT 1' | curl 'http://localhost:8123/?query=' --data-binary @-
1

$ echo '1' | curl 'http://localhost:8123/?query=SELECT' --data-binary @-
1

默认情况下,返回的数据是TabSeparated格式的,更多信息,见Formats部分。

您可以使用查询的FORMAT子句来设置其他格式。

另外,还可以使用default_formatURL参数或X-ClickHouse-Format头来指定TabSeparated之外的默认格式。

$ echo 'SELECT 1 FORMAT Pretty' | curl 'http://localhost:8123/?' --data-binary @-
┏━━━┓
1
┡━━━┩
1
└───┘

使用类似INSERT的查询来插入数据:

$ echo 'INSERT INTO t VALUES (1),(2),(3)' | curl 'http://localhost:8123/' --data-binary @-

您可以指定任何数据格式。Values格式与将INSERT写入t值时使用的格式相同:

$ echo '(7),(8),(9)' | curl 'http://localhost:8123/?query=INSERT%20INTO%20t%20FORMAT%20Values' --data-binary @-

从表中读取内容。由于查询处理是并行的,数据以随机顺序输出。

$ curl 'http://localhost:8123/?query=SELECT%20a%20FROM%20t'
7
8
9
10
11
12
1
2
3
4
5
6

成功请求后并不会返回数据,返回一个空的响应体。

在传输数据时,可以使用ClickHouse内部压缩格式。压缩的数据具有非标准格式,您需要使用特殊的clickhouse-compressor程序来处理它(它是与clickhouse-client包一起安装的)。为了提高数据插入的效率,您可以通过使用http_native_compression_disable_checksumming_on_decompress设置禁用服务器端校验。

如果在URL中指定了compress=1,服务会返回压缩的数据。 如果在URL中指定了decompress=1,服务会解压通过POST方法发送的数据。

您也可以选择使用HTTP compression。发送一个压缩的POST请求,附加请求头Content-Encoding: compression_method。为了使ClickHouse响应,您必须附加Accept-Encoding: compression_method。ClickHouse支持gzipbrdeflate compression methods。要启用HTTP压缩,必须使用ClickHouse启用Http压缩配置。您可以在Http zlib压缩级别设置中为所有压缩方法配置数据压缩级别。

您可以使用它在传输大量数据时减少网络流量,或者创建立即压缩的转储。

通过压缩发送数据的例子:

#Sending data to the server:
$ curl -vsS "http://localhost:8123/?enable_http_compression=1" -d 'SELECT number FROM system.numbers LIMIT 10' -H 'Accept-Encoding: gzip'

#Sending data to the client:
$ echo "SELECT 1" | gzip -c | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://localhost:8123/'

默认情况下,在服务器设置中注册的数据库被用作默认数据库。默认情况下,它是名为default的数据库。或者,您可以始终在表名之前使用点来指定数据库。

用户名和密码可以通过以下三种方式指定:

  1. 通过HTTP Basic Authentication。示例:
$ echo 'SELECT 1' | curl 'http://user:password@localhost:8123/' -d @-
  1. 使用X-ClickHouse-UserX-ClickHouse-Key头指定,示例:
$ echo 'SELECT 1' | curl -H 'X-ClickHouse-User: user' -H 'X-ClickHouse-Key: password' 'http://localhost:8123/' -d @-

有关其他参数的信息,请参考SET一节。

类似地,您可以在HTTP协议中使用ClickHouse会话。为此,需要向请求添加session_idGET参数。您可以使用任何字符串作为会话ID。默认情况下,会话在60秒不活动后终止。要更改此超时配置,请修改服务器配置中的default_session_timeout设置,或向请求添加session_timeoutGET参数。要检查会话状态,使用session_check=1参数。一次只能在单个会话中执行一个查询。

您可以在X-ClickHouse-Progress响应头中收到查询进度的信息。为此,启用Http Header携带进度。示例:

X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128"}
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128"}
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128"}

查询请求响应状态码和HTTP头被发送到客户端后,若发生查询处理出错,使用缓冲区可以避免这种情况的发生。在这种情况下,响应主体的结尾会写入一条错误消息,而在客户端,只能在解析阶段检测到该错误。

查询参数?

您可以使用参数创建查询,并通过相应的HTTP请求参数为它们传递值。有关更多信息,请参见CLI查询参数。

示例?

$ curl -sS "
?param_id=2¶m_phrase=test" -d "SELECT * FROM table WHERE int_column = {id:UInt8} and string_column = {phrase:String}"

ClickHouse还支持预定义的HTTP接口,可以帮助您更容易与第三方工具集成,如Prometheus Exporter.

示例:

  • 首先,将此部分添加到服务器配置文件中:
<http_handlers>
<rule>
<url>/predefined_queryurl>
<methods>POST,GETmethods>
<handler>
<type>predefined_query_handlertype>
<query>SELECT * FROM system.metrics LIMIT 5 FORMAT Template SETTINGS format_template_resultset = 'prometheus_template_output_format_resultset', format_template_row = 'prometheus_template_output_format_row', format_template_rows_between_delimiter = '\n'query>
handler>
rule>
<rule>...rule>
<rule>...rule>
http_handlers>

正如您从示例中看到的,如果在config.xml文件中配置了http_handlers,并且http_handlers可以包含许多规则。ClickHouse将把接收到的HTTP请求与rule中的预定义类型进行匹配,第一个匹配的将运行处理程序。如果匹配成功,ClickHouse将执行相应的预定义查询。

现在rule可以配置method, header, url, handler:

  • method 负责匹配HTTP请求的方法部分。 method完全符合HTTP协议中method的定义。这是一个可选的配置。如果它没有在配置文件中定义,那么它与HTTP请求的方法部分不匹配。

  • url 负责匹配HTTP请求的URL部分。它匹配RE2正则表达式。这是一个可选的配置。如果配置文件中没有定义它,则它与HTTP请求的URL部分不匹配。

  • headers 负责匹配HTTP请求的头部分。它与RE2的正则表达式兼容。这是一个可选的配置。如果它没有在配置文件中定义,那么它与HTTP请求的头部分不匹配。

  • handler 包含主要的处理部分。现在handler可以配置typestatuscontent_typeresponse_contentqueryquery_param_name。 type 目前支持三种类型:特定查询, 动态查询, static.

    • query — 使用predefined_query_handler类型,在调用处理程序时执行查询。

    • query_param_name — 与dynamic_query_handler类型一起使用,提取并执行HTTP请求参数中与query_param_name值对应的值。

    • status — 与static类型一起使用,响应状态代码。

    • content_type — 与static类型一起使用,响应信息content-type。

    • response_content — 与static类型一起使用,响应发送给客户端的内容,当使用前缀file://config://时,从发送给客户端的文件或配置中查找内容。

接下来是不同type的配置方法。

特定查询?

predefined_query_handler 支持设置Settingsquery_params参数。您可以将query配置为predefined_query_handler类型。

query 是一个预定义的predefined_query_handler查询,它由ClickHouse在匹配HTTP请求并返回查询结果时执行。这是一个必须的配置。

以下是定义的max_threads和max_final_threads设置, 然后查询系统表以检查这些设置是否设置成功。

示例:

<http_handlers>
<rule>
<url>[^/]+)(/(?P[^/]+))?]]>url>
<method>GETmethod>
<headers>
<XXX>TEST_HEADER_VALUEXXX>
<PARAMS_XXX>[^/]+)(/(?P[^/]+))?]]>PARAMS_XXX>
headers>
<handler>
<type>predefined_query_handlertype>
<query>SELECT value FROM system.settings WHERE name = {name_1:String}query>
<query>SELECT name, value FROM system.settings WHERE name = {name_2:String}query>
handler>
rule>
http_handlers>

!!! note "警告" 在一个predefined_query_handler中,只支持insert类型的一个查询

动态查询?

dynamic_query_handler时,查询以HTTP请求参数的形式编写。区别在于,在predefined_query_handler中,查询是在配置文件中编写的。您可以在dynamic_query_handler中配置query_param_name

ClickHouse提取并执行与HTTP请求URL中的query_param_name值对应的值。query_param_name的默认值是/query。这是一个可选的配置。如果配置文件中没有定义,则不会传入参数。

为了试验这个功能,示例定义了max_threads和max_final_threadsqueries设置是否成功的值。

示例:

<http_handlers>
<rule>
<headers>
<XXX>TEST_HEADER_VALUE_DYNAMICXXX> headers>
<handler>
<type>dynamic_query_handlertype>
<query_param_name>query_paramquery_param_name>
handler>
rule>
http_handlers>

static?

static可以返回content_type, status和response_contentresponse_content可以返回指定的内容。

示例:

返回信息.

<http_handlers>
<rule>
<methods>GETmethods>
<headers><XXX>xxxXXX>headers>
<url>/hiurl>
<handler>
<type>statictype>
<status>402status>
<content_type>text/html; charset=UTF-8content_type>
<response_content>Say Hi!response_content>
handler>
rule>
http_handlers>

从配置中查找发送到客户端的内容。

<get_config_static_handler>
<script src="http://loader.tabix.io/master.js"></script>]]>get_config_static_handler>

<http_handlers>
<rule>
<methods>GETmethods>
<headers><XXX>xxxXXX>headers>
<url>/get_config_static_handlerurl>
<handler>
<type>statictype>
<response_content>config://get_config_static_handlerresponse_content>
handler>
rule>
http_handlers>

从发送到客户端的文件中查找内容。

<http_handlers>
<rule>
<methods>GETmethods>
<headers><XXX>xxxXXX>headers>
<url>/get_absolute_path_static_handlerurl>
<handler>
<type>statictype>
<content_type>text/html; charset=UTF-8content_type>
<response_content>file:///absolute_path_file.htmlresponse_content>
handler>
rule>
<rule>
<methods>GETmethods>
<headers><XXX>xxxXXX>headers>
<url>/get_relative_path_static_handlerurl>
<handler>
<type>statictype>
<content_type>text/html; charset=UTF-8content_type>
<response_content>file://./relative_path_file.htmlresponse_content>
handler>
rule>
http_handlers>

使用命令行工具 mysql 进行连接的示例:

$ mysql --protocol tcp -u default -P 9004

为了与所有MySQL客户端兼容,建议在配置文件中使用 double SHA1 来指定用户密码。 如果使用 SHA256 指定用户密码,一些客户端将无法进行身份验证(比如mysqljs和旧版本的命令行工具mysql)。

限制:

  • 不支持prepared queries

  • 某些数据类型以字符串形式发送

C++客户端库

请参考仓库的描述文件clickhouse-cpp。

JDBC驱动

  • 官方驱动
  • 第三方驱动:
    • ClickHouse-Native-JDBC
    • clickhouse4j

ODBC驱动

  • 官方驱动。

输入/输出格式

ClickHouse可以接受和返回各种格式的数据。受支持的输入格式可用于提交给INSERT语句、从文件表(File,URL,HDFS或者外部目录)执行SELECT语句,受支持的输出格式可用于格式化SELECT语句的返回结果,或者通过INSERT写入到文件表。

以下是支持的格式:

格式输入输出
TabSeparated ? ?
TabSeparatedRaw ? ?
TabSeparatedWithNames ? ?
TabSeparatedWithNamesAndTypes ? ?
Template ? ?
TemplateIgnoreSpaces ? ?
CSV ? ?
CSVWithNames ? ?
CustomSeparated ? ?
Values ? ?
Vertical ? ?
JSON ? ?
JSONAsString ? ?
JSONStrings ? ?
JSONCompact ? ?
JSONCompactStrings ? ?
JSONEachRow ? ?
JSONEachRowWithProgress ? ?
JSONStringsEachRow ? ?
JSONStringsEachRowWithProgress ? ?
JSONCompactEachRow ? ?
JSONCompactEachRowWithNamesAndTypes ? ?
JSONCompactStringsEachRow ? ?
JSONCompactStringsEachRowWithNamesAndTypes ? ?
TSKV ? ?
Pretty ? ?
PrettyCompact ? ?
PrettyCompactMonoBlock ? ?
PrettyNoEscapes ? ?
PrettySpace ? ?
Protobuf ? ?
ProtobufSingle ? ?
Avro ? ?
AvroConfluent ? ?
Parquet ? ?
Arrow ? ?
ArrowStream ? ?
ORC ? ?
RowBinary ? ?
RowBinaryWithNamesAndTypes ? ?
Native ? ?
Null ? ?
XML ? ?
CapnProto ? ?
LineAsString ? ?
Regexp ? ?
RawBLOB ? ?

您可以使用ClickHouse设置一些格式化参数。更多详情设置请参考设置

第三方工具

这是第三方工具的链接集合,它们提供了一些ClickHouse的接口。它可以是可视化界面、命令行界面或API:

  • Client libraries
  • Integrations
  • GUI
  • Proxies

!!! note "注意" 支持通用API的通用工具ODBC或JDBC,通常也适用于ClickHouse,但这里没有列出,因为它们实在太多了。

第三方开发库

!!! warning "声明" Yandex没有维护下面列出的库,也没有做过任何广泛的测试来确保它们的质量。

  • Python
    • infi.clickhouse_orm
    • clickhouse-driver
    • clickhouse-client
    • aiochclient
    • asynch
  • PHP
    • smi2/phpclickhouse
    • 8bitov/clickhouse-php-client
    • bozerkins/clickhouse-client
    • simpod/clickhouse-client
    • seva-code/php-click-house-client
    • SeasClick C++ client
    • one-ck
    • glushkovds/phpclickhouse-laravel
  • Go
    • clickhouse
    • go-clickhouse
    • mailrugo-clickhouse
    • golang-clickhouse
  • Swift
    • ClickHouseNIO
    • ClickHouseVapor ORM
  • NodeJs
    • clickhouse (NodeJs)
    • node-clickhouse
  • Perl
    • perl-DBD-ClickHouse
    • HTTP-ClickHouse
    • AnyEvent-ClickHouse
  • Ruby
    • ClickHouse (Ruby)
    • clickhouse-activerecord
  • R
    • clickhouse-r
    • RClickHouse
  • Java
    • clickhouse-client-java
    • clickhouse-client
  • Scala
    • clickhouse-scala-client
  • Kotlin
    • AORM
  • C#
    • Octonica.ClickHouseClient
    • ClickHouse.Ado
    • ClickHouse.Client
    • ClickHouse.Net
  • Elixir
    • clickhousex
    • pillar
  • Nim
    • nim-clickhouse
  • Haskell
    • hdbc-clickhouse

第三方集成库

!!! warning "声明" ClickHouse, Inc.没有维护下面列出的库,也没有做过任何广泛的测试来确保它们的质量。

基础设施?

  • 关系数据库
    • MySQL
      • mysql2ch
      • ProxySQL
      • clickhouse-mysql-data-reader
      • horgh-replicator
    • PostgreSQL
      • clickhousedb_fdw
      • infi.clickhouse_fdw (uses infi.clickhouse_orm)
      • pg2ch
      • clickhouse_fdw
    • MSSQL
      • ClickHouseMigrator
  • 消息队列
    • Kafka
      • clickhouse_sinker (uses Go client)
      • stream-loader-clickhouse
  • 流处理
    • Flink
      • flink-clickhouse-sink
  • 对象存储
    • S3
      • clickhouse-backup
  • 容器编排
    • Kubernetes
      • clickhouse-operator
  • 配置管理
    • puppet
      • innogames/clickhouse
      • mfedotov/clickhouse
  • Monitoring
    • Graphite
      • graphouse
      • carbon-clickhouse
      • graphite-clickhouse
      • graphite-ch-optimizer - optimizes staled partitions in *GraphiteMergeTree if rules from rollup configuration could be applied
    • Grafana
      • clickhouse-grafana
    • Prometheus
      • clickhouse_exporter
      • PromHouse
      • clickhouse_exporter (uses Go client)
    • Nagios
      • check_clickhouse
      • check_clickhouse.py
    • Zabbix
      • clickhouse-zabbix-template
    • Sematext
      • clickhouse integration
  • Logging
    • rsyslog
      • omclickhouse
    • fluentd
      • loghouse (for Kubernetes)
    • logagent
      • logagent output-plugin-clickhouse
  • Geo
    • MaxMind
      • clickhouse-maxmind-geoip

编程语言?

  • Python
    • SQLAlchemy
      • sqlalchemy-clickhouse (uses infi.clickhouse_orm)
    • pandas
      • pandahouse
  • PHP
    • Doctrine
      • dbal-clickhouse
  • R
    • dplyr
      • RClickHouse (uses clickhouse-cpp)
  • Java
    • Hadoop
      • clickhouse-hdfs-loader (uses JDBC)
  • Scala
    • Akka
      • clickhouse-scala-client
  • C#
    • ADO.NET
      • ClickHouse.Ado
      • ClickHouse.Client
      • ClickHouse.Net
      • ClickHouse.Net.Migrations
  • Elixir
    • Ecto
      • clickhouse_ecto
  • Ruby
    • Ruby on Rails
      • activecube
      • ActiveRecord
    • GraphQL
      • activecube-graphql

第三方代理

chproxy?

chproxy, 是一个用于ClickHouse数据库的HTTP代理和负载均衡器。

特性:

  • 用户路由和响应缓存。
  • 灵活的限制。
  • 自动SSL证书续订。

使用go语言实现。

KittenHouse?

KittenHouse被设计为ClickHouse和应用服务器之间的本地代理,以防不可能或不方便在应用程序端缓冲插入数据。

特性:

  • 内存和磁盘上的数据缓冲。
  • 表路由。
  • 负载平衡和运行状况检查。

使用go语言实现。

ClickHouse-Bulk?

ClickHouse-Bulk是一个简单的ClickHouse收集器。

特性:

  • 按阈值或间隔对请求进行分组并发送。
  • 多个远程服务器。
  • 基本身份验证。

使用go语言实现。

Original article

第三方开发的可视化界面

开源?

Tabix?

ClickHouse Web 界面 Tabix.

主要功能:

  • 浏览器直接连接 ClickHouse,不需要安装其他软件。
  • 高亮语法的编辑器。
  • 自动命令补全。
  • 查询命令执行的图形分析工具。
  • 配色方案选项。

Tabix 文档.

HouseOps?

HouseOps 是一个交互式 UI/IDE 工具,可以运行在 OSX, Linux and Windows 平台中。

主要功能:

  • 查询高亮语法提示,可以以表格或 JSON 格式查看数据。
  • 支持导出 CSV 或 JSON 格式数据。
  • 支持查看查询执行的详情,支持 KILL 查询。
  • 图形化显示,支持显示数据库中所有的表和列的详细信息。
  • 快速查看列占用的空间。
  • 服务配置。

以下功能正在计划开发:

  • 数据库管理
  • 用户管理
  • 实时数据分析
  • 集群监控
  • 集群管理
  • 监控副本情况以及 Kafka 引擎表

灯塔?

灯塔 是ClickHouse的轻量级Web界面。

特征:

  • 包含过滤和元数据的表列表。
  • 带有过滤和排序的表格预览。
  • 只读查询执行。

DBeaver?

DBeaver 具有ClickHouse支持的通用桌面数据库客户端。

特征:

  • 使用语法高亮显示查询开发。
  • 表格预览。
  • 自动完成。

clickhouse-cli?

clickhouse-cli 是ClickHouse的替代命令行客户端,用Python 3编写。

特征:

  • 自动完成。
  • 查询和数据输出的语法高亮显示。
  • 寻呼机支持数据输出。
  • 自定义PostgreSQL类命令。

clickhouse-flamegraph?

[clickhouse-flamegraph](https://github.com/Slach/clickhouse-flamegraph) 是一个可视化的专业工具`system.trace_log`如[flamegraph](http://www.brendangregg.com/flamegraphs.html).

DBM?

DBM DBM是一款ClickHouse可视化管理工具!

特征:

  • 支持查询历史(分页、全部清除等)
  • 支持选中的sql子句查询(多窗口等)
  • 支持终止查询
  • 支持表管理
  • 支持数据库管理
  • 支持自定义查询
  • 支持多数据源管理(连接测试、监控)
  • 支持监控(处理进程、连接、查询)
  • 支持迁移数据

商业?

Holistics?

Holistics 在2019年被Gartner FrontRunners列为可用性最高排名第二的商业智能工具之一。 Holistics是一个基于SQL的全栈数据平台和商业智能工具,用于设置您的分析流程。

特征:

-自动化的电子邮件,Slack和Google表格报告时间表。 -强大的SQL编辑器,具有版本控制,自动完成,可重用的查询组件和动态过滤器。 -通过iframe在自己的网站或页面中嵌入仪表板。 -数据准备和ETL功能。 -SQL数据建模支持数据的关系映射。

DataGrip?

DataGrip 是JetBrains的数据库IDE,专门支持ClickHouse。 它还嵌入到其他基于IntelliJ的工具中:PyCharm,IntelliJ IDEA,GoLand,PhpStorm等。

特征:

  • 非常快速的代码完成。
  • ClickHouse语法高亮显示。
  • 支持ClickHouse特有的功能,例如嵌套列,表引擎。
  • 数据编辑器。
  • 重构。
  • 搜索和导航。