ClickHouse / clickhouse-java

Java client and JDBC driver for ClickHouse
https://clickhouse.com
Apache License 2.0
1.39k stars 513 forks source link

[client-v2] Compression #1717

Open chernser opened 3 days ago

chernser commented 3 days ago

Compression

Compression may be on transport or application layer. For example, HTTP compressed encoding is transport layer and LZ4 payload compression is what application does. Currently application compression is what we need to implement. First implementation should support bi-directional LZ4 encoding.

Note 1: There is a satisfying implementation of LZ4 support but it uses own stream classes. Should be adopted for broader use.

Settings

Next settings should be deprecated:

Metrics

Not yet

mshustov commented 3 days ago

com.clickhouse.client.config.ClickHouseClientOption#COMPRESS "Whether the server will compress response it sends to client." - currently means server response compression and it should be named accordingly com.clickhouse.client.config.ClickHouseClientOption#DECOMPRESS "Whether the server will decompress request from client." - currently means client request compression and it should be named accordingly

It's mirroring of ClickHouse settings https://clickhouse.com/docs/en/interfaces/http

com.clickhouse.client.config.ClickHouseClientOption#COMPRESS_ALGORITHM "Algorithm used for server to compress response." - currently only LZ4 is used and this setting can be dropped. com.clickhouse.client.config.ClickHouseClientOption#DECOMPRESS_ALGORITHM "Algorithm for server to decompress request." - currently only LZ4 is used and this setting can be dropped.

currently only LZ4, maybe we should ignore other value

chernser commented 3 days ago

@mshustov we have moved from this naming already because it is super confusing. But I need to mention it here to not forget when it will be the time for a migration guide.

we should not ignore values and in the new client it is not a problem because we will use enum for that, so no invalid values may be passed. However if there is no option today - may be drop these two settings?