ClickHouse/clickhouse-java

[client-v2] Compression

chernser opened this issue · 2 comments

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:

  • 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
  • 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.
  • com.clickhouse.client.config.ClickHouseClientOption#COMPRESS_LEVEL "Compression level for response, -1 standards for default" - currently means server response compression level and it should be named accordingly. But may be dropped. com.clickhouse.client.config.ClickHouseClientOption#DECOMPRESS_LEVEL "Compression level for request, -1 standards for default" - currently means client request compression level and it should be named accordingly. But may be dropped.

Metrics

Not yet

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

@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?