Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor JDBC driver #743

Merged
merged 1 commit into from
Oct 15, 2021
Merged

Refactor JDBC driver #743

merged 1 commit into from
Oct 15, 2021

Conversation

zhicwu
Copy link
Contributor

@zhicwu zhicwu commented Oct 11, 2021

Protocol Data Format JDBC URL
gRPC RowBinary jdbc:clickhouse://localhost?protocol=grpc
gRPC TabSeparated jdbc:clickhouse://localhost?protocol=grpc&format=tsv
HTTP RowBinary jdbc:clickhouse://localhost?protocol=http&?format=bin or simply jdbc:clickhouse://localhost?format=bin
HTTP TabSeparated jdbc:clickhouse://localhost?format=tsv or simply jdbc:clickhouse://localhost

TODOs:

  • new connection settings
    • protocol: http(default) or grpc
    • format: auto(tsv for http and bin for grpc), tsv, or bin
  • extract interfaces and move them to new package com.clickhouse.jdbc
  • change driver to com.clickhouse.jdbc.ClickHouseDriver while keeping ru.yandex.clickhouse.ClickHouseDriver as a sub-class
  • extract http specific implementation details and move them to clickhouse-http-client
  • multiple shaded jars each for a different protocol
  • primitive array support
  • simplify implementation by using clickhouse-client:
    • ClickHouseProperties/Map/Properties -> ClickHouseConfig
    • ClickHouseConnection -> ClickHouseClient
    • ClickHouseStatement -> ClickHouseRequest
    • ClickHouseResultSet -> ClickHouseRecord

@github-actions
Copy link

Benchmark                           (client)  (connection)  (statement)   Mode  Cnt    Score     Error  Units
Basic.insertOneRandomNumber  clickhouse-jdbc         reuse       normal  thrpt   20  264.268 ±  28.979  ops/s
Basic.insertOneRandomNumber  clickhouse-jdbc         reuse     prepared  thrpt   20  254.432 ±  28.078  ops/s
Basic.insertOneRandomNumber  clickhouse-jdbc           new       normal  thrpt   20  260.630 ±  35.215  ops/s
Basic.insertOneRandomNumber  clickhouse-jdbc           new     prepared  thrpt   20  263.413 ±  32.914  ops/s
Basic.selectOneRandomNumber  clickhouse-jdbc         reuse       normal  thrpt   20  845.133 ± 136.629  ops/s
Basic.selectOneRandomNumber  clickhouse-jdbc         reuse     prepared  thrpt   20  895.893 ±  71.614  ops/s
Basic.selectOneRandomNumber  clickhouse-jdbc           new       normal  thrpt   20  871.778 ± 114.335  ops/s
Basic.selectOneRandomNumber  clickhouse-jdbc           new     prepared  thrpt   20  900.218 ± 129.920  ops/s

@zhicwu zhicwu merged commit 9b23915 into ClickHouse:develop Oct 15, 2021
@zhicwu zhicwu mentioned this pull request Oct 17, 2021
18 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant