ClickHouse / ClickHouse/clickhouse-java
[client-v2]Add NativeFormatWriter support to ClickHous Client v2
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 1.6k
- Forks
- 637
- Merge medio
- 2 d 23 h
- PR fusionados (30 d)
- 29
Descripción
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:
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:
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
}
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza leyendo RowBinaryFormatWriter y la API de inserción de ClickHouse Client v2 mostrada en la issue para entender el contrato existente del writer y la selección del formato. Añade soporte equivalente para NativeFormatWriter para que las inserciones puedan usar ClickHouseFormat.Native y, después, verifica que la inserción por lotes en formato Native funciona para la API solicitada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- databases
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 40/100