ClickHouse / ClickHouse/clickhouse-java

[client-v2]Add NativeFormatWriter support to ClickHous Client v2

Aperta
#2,509 14 commenti 2 reazioni 0 assegnatari Vedi su GitHub
client-api-v2 enhancement
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.