Com o aumento expressivo do volume de dados corporativos, muitas empresas enfrentam desafios centrais para gerenciar custos de armazenamento massivo e manter a eficiência analítica. Para resolver essa questão, o PolarDB for MySQL oferece o recurso de tabela colunar X-Engine. Esse recurso utiliza armazenamento colunar, compressão eficiente e computação paralela para reduzir seus custos de armazenamento de dados a 10% do tamanho original, além de melhorar o desempenho de consultas analíticas em uma ordem de grandeza. Ele possibilita o arquivamento de dados em larga escala com baixo custo e análises em tempo real de alto desempenho, mantendo total compatibilidade com o ecossistema MySQL.
Visão geral
As tabelas colunares X-Engine utilizam uma arquitetura baseada na separação entre computação e armazenamento. Isso permite que os recursos de computação e armazenamento escalem de forma independente e elástica, oferecendo capacidade de processamento de dados no nível de petabytes. A camada de armazenamento é construída sobre um sistema de arquivos distribuído e OSS. Já a camada de computação entrega análises de alto desempenho por meio de otimizações profundas no otimizador de consultas, nos operadores de execução e no mecanismo de armazenamento.
Arquitetura técnica
Arquitetura geral do PolarDB
O PolarDB adota uma arquitetura com separação entre computação e armazenamento, fundamentada em uma camada de armazenamento distribuído. O sistema usa o protocolo ParallelRaft para garantir a consistência de múltiplas réplicas e suporta OSS de forma transparente. Os nós de computação consistem em um nó de leitura e gravação (RW) e um ou mais nós somente leitura (RO), com suporte aos mecanismos InnoDB e X-Engine. Um proxy de banco de dados atua como ponte entre as aplicações e os nós de computação, fornecendo divisão de leitura/gravação e balanceamento de carga.
Arquitetura da tabela colunar
Seus principais componentes técnicos incluem:
Otimizador de consultas: Um otimizador baseado em custo (CBO) integrado para armazenamento misto de linhas e colunas. Ele estima o custo da consulta e seleciona automaticamente o plano de execução ideal, escolhendo entre o armazenamento por linha ou por coluna.
Operador de execução: Utiliza técnicas de vetorização orientada a colunas e execução paralela. O processamento em lote acelera significativamente as consultas analíticas, tanto em tabelas únicas quanto em junções de múltiplas tabelas.
Mecanismo de armazenamento: Suporta atualizações transacionais em tempo real. A tabela principal usa armazenamento colunar e aproveita um componente de Índice Não Clusterizado (NCI) para oferecer capacidades rápidas de atualização. Um mecanismo de máscara de exclusão sinaliza dados para remoção, permitindo consultas paralelas eficientes sem impactar as gravações em tempo real. Além disso, seus índices secundários de armazenamento por linha filtram rapidamente dados irrelevantes, aumentando ainda mais a eficiência das consultas.
Comparação de tipos de tabela
A tabela a seguir compara as principais diferenças entre tabelas tradicionais orientadas a linhas (como InnoDB) e tabelas colunares do PolarDB para ajudar você a escolher o tipo adequado:
|
Aspecto |
Tabela orientada a linhas (X-Engine) |
Tabela colunar |
|
Organização de dados |
Os dados são armazenados contiguamente por linha. Todas as colunas de uma única linha ficam armazenadas juntas. |
Os dados são armazenados contiguamente por coluna. Todos os valores de uma única coluna ficam armazenados juntos. |
|
Taxa de compressão de dados |
Média. Em comparação ao InnoDB, os dados podem ser comprimidos a 3/10 do tamanho original. |
Alta. Com armazenamento colunar e codificação especializada (como codificação por dicionário), os dados podem ser comprimidos a 1/10 do tamanho original em relação ao InnoDB. |
|
Desempenho de consulta |
Excelente para buscas pontuais. Adequado para cenários de Processamento Transacional Online (OLTP) que envolvem leitura rápida de uma ou poucas linhas com base em uma chave primária ou índice. |
Forte para análises. As consultas leem apenas as colunas relevantes, o que reduz significativamente a E/S. Combinado com computação paralela vetorizada, o desempenho analítico é uma ordem de grandeza superior ao das tabelas orientadas a linhas. |
|
Desempenho de atualização e exclusão |
Alto. Localiza e modifica linhas diretamente. |
Relativamente menor, mas suporta atualizações em tempo real. O componente NCI ajuda a localizar rapidamente os registros a serem modificados. |
|
Casos de uso |
Processamento Transacional Online (OLTP), como operações de inserção, exclusão, atualização e consulta de alta concorrência. |
Processamento Analítico Online (OLAP), como arquivamento de dados, geração de relatórios, consultas ad-hoc e análise de dados agregados em larga escala. |
Benefícios
Custo-benefício: Reduz os custos de armazenamento e processamento de grandes conjuntos de dados em até 90% através da combinação de armazenamento colunar, codificação eficiente, algoritmos de alta compressão e mídias de armazenamento de baixo custo, como OSS.
Análise em tempo real de alto desempenho: Os dados ficam disponíveis para consultas analíticas imediatamente após a gravação. Ao aproveitar o paralelismo multinúcleo, a vetorização e a tecnologia de Processamento Massivamente Paralelo (MPP), o desempenho das consultas é comparável ao de bancos de dados analíticos dedicados, atendendo a demandas rigorosas de análise em tempo real.
100% compatível com MySQL: Oferece um sistema de tipos de dados e protocolos consistentes com o MySQL, além de suportar conversões flexíveis de tipos. Conecte suas aplicações e ferramentas existentes sem necessidade de modificações.
Dimensionamento elástico independente: A separação entre computação e armazenamento permite o dimensionamento independente e sob demanda de nós de computação e espaço de armazenamento para lidar com picos de negócios e crescimento de dados.
Suporte robusto a tabelas largas: Uma única tabela pode suportar até 10.000 colunas, atendendo aos requisitos de negócios para armazenamento de tabelas largas e gravações de alta concorrência.
Excelente usabilidade: Simplifica sua pilha tecnológica e o gerenciamento operacional ao suportar armazenamento de alta compressão e análises de alto desempenho dentro de um único mecanismo de banco de dados, com suporte completo a operações DDL e DML.
Casos de uso
Arquivamento de dados de baixo custo
Problema: À medida que os negócios crescem, dados históricos como pedidos antigos, logs e registros de transações podem se acumular rapidamente nos bancos de dados principais, consumindo espaço de armazenamento caro. Embora soluções tradicionais de migração de dados possam reduzir custos, elas frequentemente tiram os dados do ar, tornando o acesso online complexo.
Solução: Utilize tabelas colunares para arquivamento de dados online. Migre dados frios de tabelas orientadas a linhas (InnoDB) ou tabelas históricas inteiras para tabelas colunares dentro do mesmo cluster PolarDB.
-
Valor principal:
Redução drástica de custos: Com uma taxa de compressão de até 10:1 e o uso de mídias de armazenamento de baixo custo como OSS, os custos de armazenamento podem ser reduzidos em até 90%.
Disponibilidade de dados online: Os dados arquivados permanecem online e acessíveis. Consulte e analise-os a qualquer momento usando SQL padrão, sem processos complexos de migração de dados.
Integração perfeita com aplicações: Do ponto de vista da aplicação, uma tabela colunar funciona exatamente como uma tabela MySQL comum, sem exigir alterações no código.
Data warehouse dedicado
Problema: Ao construir um data warehouse dedicado, as empresas frequentemente enfrentam altos custos de hardware, pipelines complexos de sincronização de dados (ETL) e uma curva de aprendizado operacional íngreme, especialmente ao introduzir novas tecnologias como ClickHouse.
Solução: Aproveite a enorme capacidade de armazenamento do PolarStore para agregar dados de múltiplas fontes upstream e armazená-los uniformemente em tabelas colunares X-Engine. Isso permite beneficiar-se de armazenamento massivo e de baixo custo, além de desempenho de análise agregada em tempo real.
-
Valor principal:
Menor custo e complexidade: Construa um data warehouse dentro do ecossistema MySQL familiar, sem adquirir hardware dedicado caro ou introduzir sistemas analíticos heterogêneos. Essa abordagem simplifica sua pilha tecnológica e reduz a sobrecarga operacional.
Análise de dados em tempo real: Suporta consolidação em tempo real de dados upstream em tabelas colunares para análise, evitando a latência de dados T+1 comum em soluções ETL tradicionais.
Capacidade massiva de processamento de dados: A arquitetura de armazenamento X-Engine e a compressão eficiente permitem o armazenamento e processamento de dados na escala de petabytes com baixo custo.
Análise de consulta federada
Problema: Os dados empresariais costumam estar divididos entre diferentes sistemas. Alguns residem em bancos de dados online como o PolarDB, enquanto outros estão armazenados em formatos abertos como Parquet ou ORC no OSS. Analisar esses conjuntos de dados díspares juntos geralmente exige um processo complexo de ETL para importar os dados do OSS para o banco de dados.
Solução: Use o recurso de tabela externa do PolarDB para consultar dados diretamente no OSS.
-
Valor principal:
Análise no local: Consulte os dados onde eles estão. Crie uma tabela externa no PolarDB que aponte para seus arquivos no OSS e use SQL padrão para consultá-los diretamente, sem mover ou importar os dados.
Consulta federada: Execute facilmente operações
JOINentre tabelas locais no PolarDB (orientadas a linhas ou colunares) e tabelas externas do OSS para realizar análises unificadas em dados online e offline.
Desempenho
Os dados de desempenho a seguir foram obtidos em um ambiente de teste específico e servem como referência para avaliar os benefícios das tabelas colunares.
A implementação do TPC-H neste tópico baseia-se nos benchmarks do TPC-H. Estes resultados de teste não podem ser comparados com os resultados oficiais publicados pelo TPC-H, pois os testes não atendem totalmente a todos os requisitos do TPC-H.
Desempenho de carregamento de dados
Os dados abaixo baseiam-se em um ambiente de teste com 32 núcleos e 256 GB de memória. Eles comparam o desempenho de carregamento e armazenamento de tabelas colunares com ClickHouse e Doris, utilizando os conjuntos de dados TPC-H e Airline.
Velocidade de carregamento
Conjunto de dados TPC-H: A velocidade de carregamento das tabelas colunares atingiu 5,71 milhões de linhas/segundo, com throughput de gravação de 50 GB/min, aproximadamente 2,7 vezes superior ao do ClickHouse.
Conjunto de dados Airline: A velocidade de carregamento das tabelas colunares atingiu 4,3 milhões de linhas/segundo, com throughput de gravação de 27 GB/min, aproximadamente 2 vezes superior ao do ClickHouse.
|
Conjunto de dados |
ClickHouse (milhões de linhas/s) |
Doris (milhões de linhas/s) |
Tabela colunar (milhões de linhas/s) |
|
TPC-H |
2,10 |
4,54 |
5,71 |
|
Airline |
1,40 |
2,15 |
4,30 |
Espaço de armazenamento
Conjunto de dados TPC-H: Com 100 GB de dados brutos, as tabelas colunares alcançaram uma taxa de compressão de 4x.
Conjunto de dados Airline: Com 75 GB de dados brutos, as tabelas colunares alcançaram uma taxa de compressão de 18x.
A tabela a seguir compara o espaço de armazenamento para o conjunto de dados Airline de 75 GB:
|
Tipo/Product |
ClickHouse |
Doris |
Tabela colunar |
|
Espaço de armazenamento (GB) |
9,29 |
4,49 |
3,97 |
|
Taxa de compressão |
Aprox. 8x |
Aprox. 16x |
Aprox. 18x |
Desempenho de consulta TPC-H
-
Em um teste de desempenho usando o conjunto de dados TPC-H de 100 GB, o tempo total para uma tabela colunar executar todas as 22 consultas foi de 17.994 segundos, contra 76,9 segundos do ClickHouse. O desempenho geral da tabela colunar foi aproximadamente 4,3 vezes superior ao do ClickHouse.
Consulta
Tabela colunar (segundos)
ClickHouse (segundos)
Q1
1.175
2,2
Q2
0,178
0,9
Q3
0,577
1,6
Q4
0,433
1,3
Q5
0,522
3,3
Q6
0,366
0,32
Q7
0,633
1,7
Q8
0,528
1,8
Q9
2.817
12
Q10
0,935
2,3
Q11
0,218
0,66
Q12
0,535
1,4
Q13
1.255
4,4
Q14
0,442
0,3
Q15
0,889
0,42
Q16
0,553
0,6
Q17
0,738
4,2
Q18
2.381
4,3
Q19
0,759
2
Q20
0,453
0,6
Q21
1.308
29,6
Q22
0,299
1
Total
17.994
76,9
-
Análise paralela multinó: Em um teste de desempenho com o conjunto de dados TPC-H de 1 TB, as tabelas colunares usaram aceleração paralela multinó, reduzindo o tempo total de consulta de 1.420.551 segundos em um único nó para 167.948 segundos em seis nós.
Consulta
1 nó (segundos)
2 nós (segundos)
4 nós (segundos)
6 nós (segundos)
Q1
76.849
36.831
23.031
20.022
Q2
5.841
2.805
1.527
1,09
Q3
133,69
26.131
15.833
4,75
Q4
51.466
19,02
3.353
2.362
Q5
52.965
26.844
13.715
4.269
Q6
34.577
21.831
35,17
11.274
Q7
75.996
29.659
17.279
5.717
Q8
54.989
28.922
15.651
3.375
Q9
155,33
78.216
40,38
25.983
Q10
72.222
31.659
17.177
4.594
Q11
4.149
2.049
1.351
1.069
Q12
50.997
27,79
16.207
2.977
Q13
73.009
31.742
17.605
16.255
Q14
36.887
22.093
4.475
3.778
Q15
66.217
38.628
7.583
6.451
Q16
11.493
4,49
2.528
1.758
Q17
59.225
37.101
11.434
8.767
Q18
132.604
53.578
17.164
10.797
Q19
72.794
38.416
23.759
16.651
Q20
42.621
22.432
5,62
4.768
Q21
149.245
54.803
12.758
8.793
Q22
7.385
5.684
2.972
2.448
Total
1.420.551
640.724
306.572
167.948