ClickHouse / ClickHouse/clickhouse-java
[client-v2]Add NativeFormatWriter support to ClickHous Client v2
- Lingua principale
- Java
- Stelle
- 1.6k
- Fork
- 636
- Merge medio
- 2g 23h
- PR unite (30g)
- 29
Descrizione
### Use case
Currently, the ClickHouse Java Client v2 only supports `RowBinaryFormatWriter` for batch insertions, but does not provide `NativeFormatWriter` support. The `Native` format typically offers better performance compared to `RowBinary` format for high-throughput scenarios. We have a high-throughput application that needs to insert large batches of data into ClickHouse. Our current implementation uses `RowBinary` format:
```java
ClickHouseFormat format = ClickHouseFormat.RowBinary; // Currently limited options
try (InsertResponse response = clickhouseClient.insert(TABLE_NAME, out -> {
RowBinaryFormatWriter writer = new RowBinaryFormatWriter(out, tableSchema, format);
// ... data writing logic
}, format, new InsertSettings())) {
// ... handle response
}
```
### Describe the solution you'd like
We would like to use `Native` format for better performance:
```java
ClickHouseFormat format = ClickHouseFormat.Native; // Desired functionality
try (InsertResponse response = clickhouseClient.insert(TABLE_NAME, out -> {
NativeFormatWriter writer = new NativeFormatWriter(out, tableSchema, format); // Desired API
// ... data writing logic
}, format, new InsertSettings())) {
// ... handle response
}
```
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia leggendo RowBinaryFormatWriter e l’API di inserimento di ClickHouse Client v2 mostrata nell’issue per comprendere il contratto esistente del writer e la selezione del formato. Aggiungi un supporto equivalente per NativeFormatWriter in modo che gli inserimenti possano usare ClickHouseFormat.Native, quindi verifica che l’inserimento batch in formato Native funzioni per l’API richiesta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 40/100