Introdução
- O JSON se consolidou como o formato padrão para lidar com dados semiestruturados e não estruturados em sistemas de dados modernos.
- O ClickHouse reconhece a importância do JSON e resolveu alguns desafios para utilizá-lo de forma eficaz em grande escala.
Desafios
-
Desafio 1: armazenamento verdadeiramente orientado a colunas
Para processar dados JSON com a mesma eficiência de outros tipos de coluna, é necessário armazenar os caminhos JSON de forma orientada a colunas. -
Desafio 2: dados que mudam dinamicamente e problema de integração de tipos
É necessário manter a integridade dos dados permitindo armazenar diferentes tipos de dados para caminhos JSON. -
Desafio 3: evitar a explosão de arquivos de dados de colunas em disco
Quando há muitas chaves JSON únicas, é preciso impor limites à criação de colunas para evitar a explosão de arquivos de coluna. -
Desafio 4: armazenamento denso
Quando há muitas chaves JSON únicas, porém raras, é preciso evitar armazenar repetidamenteNULLou valores padrão.
Novo tipo de dado JSON
- O ClickHouse introduz um novo tipo de dado JSON para processamento de dados JSON de alto desempenho.
- Esse tipo oferece suporte a dados que mudam dinamicamente, mantendo alta compressão de dados e desempenho de consulta.
- É possível ajustar o desempenho fornecendo hints para o parsing de JSON.
Bloco de construção 1 - tipo Variant
- O tipo Variant permite armazenar com eficiência valores de diferentes tipos de dados na mesma coluna da tabela.
- Ele mantém a integridade dos dados usando uma subcoluna separada para cada tipo de dado.
Bloco de construção 2 - tipo Dynamic
- O tipo Dynamic expande o tipo Variant para permitir o armazenamento de vários tipos de dados sem definir os tipos previamente.
- Ele limita a quantidade de tipos armazenados para evitar a explosão de arquivos de coluna.
Tipo JSON do ClickHouse
- Com base nos tipos Variant e Dynamic, foi implementado um novo tipo JSON que resolve todos os desafios.
- Ele pode armazenar dados independentemente da estrutura do objeto JSON, e os valores podem ser lidos usando caminhos JSON como subcolunas.
Resumo do GN⁺
- O novo tipo de dado JSON do ClickHouse foca em resolver problemas de desempenho de JSON em análises de dados em grande escala.
- Esse tipo oferece suporte a diversos tipos de dados, além de alto desempenho e escalabilidade.
- Ele também estabelece a base para suportar outros tipos semiestruturados além de JSON, como XML e YAML.
- É útil para desenvolvedores que usam ClickHouse e oferece vantagens em compressão de dados e desempenho de consultas.
1 comentários
Comentários do Hacker News
Na PostHog, a decisão de usar ClickHouse foi uma das melhores escolhas. Isso permitiu escalar o desempenho e construir mais produtos com o mesmo conjunto de dados
Fico me perguntando se adicionar tipos de dados ao JSON ainda mantém sua condição de JSON
É bom ver esse recurso no ClickHouse
Ao avaliar o ClickHouse, também vale a pena considerar o Apache Pinot
Acho isso interessante para dados que mudam dinamicamente
Eu estava esperando pelo suporte a JSON no ClickHouse, e o novo tipo junto com colunas dinâmicas deve ser especialmente útil
ClickHouse é uma ferramenta excelente
Quando testei o ClickHouse algumas semanas atrás, ele nomeava arquivos com base nos nomes das colunas, e nomes longos junto com barras causavam erros no sistema de arquivos
ClickHouse não é usado o suficiente
clickhouse-localé excelente para processar CSV com SQL, e eu o recomendo fortemente quando você se cansar do Google Sheets ou do Excel