Para reduzir custos de armazenamento, melhorar o desempenho de consultas e aumentar a utilização de recursos do sistema, os clusters da Alibaba Cloud ClickHouse Community-compatible Edition e Enterprise Edition com tipo de armazenamento ESSD_L1 ou ESSD_L2 oferecem suporte ao armazenamento em camadas de dados quentes e frios. Esse recurso permite armazenar dados em diferentes mídias conforme a frequência de acesso. Este tópico descreve como ativar o armazenamento em camadas de dados quentes e frios e configurar as políticas correspondentes.
Pré-requisitos
Community-compatible edition
O cluster deve executar a versão 20.8 ou posterior.
O recurso de backup de dados deve estar desativado no cluster.
Se o cluster executar uma versão anterior, migre os dados para um cluster na versão 20.8 ou superior antes de ativar o armazenamento em camadas. Para mais informações, consulte Data migration between Alibaba Cloud ClickHouse Community-compatible Edition clusters.
As regiões US (Silicon Valley) e US (Virginia) não oferecem suporte ao armazenamento em camadas de dados quentes e frios.
Enterprise edition
O cluster precisa usar o tipo de armazenamento ESSD_L1 ou ESSD_L2. Para habilitar esse tipo de armazenamento, envie um ticket solicitando a inclusão da sua conta na lista de permissões.
Contexto
O armazenamento em camadas classifica os dados em duas categorias conforme a frequência de acesso:
Dados quentes: acessados com frequência. Ficam em discos de dados quentes, como ESSD ou ultra disk selecionados durante a criação do cluster, garantindo acesso de alto desempenho.
Dados frios: acessados raramente. São armazenados em discos de baixo custo para otimizar despesas. O armazenamento frio utiliza exclusivamente Object Storage Service (OSS) e não pode ser alterado para ESSD PL0 ou outros tipos de disco personalizados.
As políticas de armazenamento para dados quentes e frios funcionam da seguinte forma:
Community-compatible edition
|
Política de armazenamento |
Descrição |
|
Política padrão |
Novos dados são gravados no disco de dados quentes para consultas de alto desempenho. Quando o espaço utilizado atinge um limiar definido, o sistema move automaticamente a maior parte dos dados para o disco frio e libera espaço. |
|
Política baseada em TTL |
Estende a política padrão. Permite adicionar uma cláusula TTL para mover automaticamente todos os dados anteriores a um intervalo especificado para o disco de dados frios. |
Enterprise edition
O sistema transfere automaticamente dados sem modificações recentes para o OSS de menor custo e reduz as despesas de armazenamento.
TTL global: na Enterprise Edition, configure um TTL global para controlar o armazenamento em camadas de dados quentes e frios.
Momento da transferência: após ativar o armazenamento em camadas, o sistema verifica todos os arquivos de dados diariamente às 00:00 UTC. Partes de dados cuja idade excede o TTL global são movidas do disco quente para o disco frio (OSS).
Precauções
Community-compatible edition
Ative este recurso fora dos horários de pico. A ativação reinicia o cluster imediatamente. Durante a reinicialização, apenas a visualização das informações do cluster está disponível. Não é possível atualizar configurações, dimensionar o cluster ou modificar parâmetros.
-
Especifique uma política de armazenamento para suas tabelas ao usar este recurso. O ApsaraDB for ClickHouse oferece suporte apenas à política
hot_to_cold. Políticas personalizadas, como configurar múltiplas políticas (por exemplo,defaultehd_policy) que apontem para diretórios diferentes, não têm suporte.Ao criar uma tabela, use
SETTINGS storage_policy = 'hot_to_cold'para definir a política de armazenamento.-
Modifique a política de armazenamento de uma tabela existente.
Após 1º de janeiro de 2024
Execute a instrução abaixo para alterar a política:
ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';Antes de 1º de janeiro de 2024
Adicione uma nova política de armazenamento por meio de operações específicas de gerenciamento. Isso permite usar a nova política para migrar dados do disco quente para o disco frio.
Não é possível desativar este recurso após a ativação.
Clusters com armazenamento em camadas ativado não oferecem suporte a downgrade de disco.
Enterprise edition
Modificar dados no armazenamento frio — seja via operações
Mutation,OptimizeouMergeacionado pelo sistema — recarrega os dados no armazenamento quente para reconstruir os arquivos. Os novos arquivos não retornam imediatamente ao armazenamento frio; eles só são transferidos novamente quando a idade ultrapassar o TTL global. Portanto, evite adições, exclusões ou modificações frequentes nos dados frios.A transferência não ocorre instantaneamente. O sistema ajusta dinamicamente a taxa de transferência com base em fatores como a pressão de I/O atual no sistema de armazenamento. O processo pode levar várias horas, dependendo do volume de dados a mover.
-
As seguintes regras se aplicam à modificação do TTL:
Ao aumentar o TTL, a alteração entra em vigor na próxima janela de transferência. Contudo, dados já presentes no armazenamento frio não retornam ao armazenamento quente.
Ao diminuir o TTL, a mudança passa a valer na próxima janela de transferência.
O valor mínimo para o TTL global é de 1 dia, e o incremento mínimo de ajuste também é de 1 dia.
Clusters com armazenamento em camadas ativado não oferecem suporte a downgrade de disco.
Faturamento
-
As regras de faturamento são as seguintes:
Tipo
Detalhes
Armazenamento de dados quentes
A capacidade de armazenamento de dados quentes corresponde à capacidade adquirida para o cluster.
Armazenamento de dados frios
O armazenamento de dados frios segue o modelo de pagamento conforme o uso. Não é necessário adquirir uma quantidade fixa de espaço antecipadamente. A cobrança é horária, baseada no consumo real.
Para mais detalhes sobre os preços unitários do armazenamento de dados frios, consulte Storage space fees for the Community-compatible Edition e Pay-as-you-go billing for the Enterprise Edition.
Fórmula de cálculo: Taxa de armazenamento frio = Preço unitário do armazenamento frio × Uso de dados frios × Duração do uso.
Exemplo: Se o preço unitário for USD 0,000026 por GB-hora e você utilizar 2.000 GB de armazenamento frio entre 19:00 e 20:00, a taxa total será: USD 0,000026 por GB-hora × 2.000 GB × 1 hora = USD 0,052. Caso libere 500 GB e o uso real caia para 1.500 GB entre 20:00 e 21:00, o custo dessa hora será: USD 0,000026 por GB-hora × 1.500 GB × 1 hora = USD 0,039.
Os valores apresentados neste exemplo servem apenas como referência. Prevalecem os preços reais exibidos no console.
Ativar armazenamento em camadas
Community-compatible edition
Faça login no console da Alibaba Cloud ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está implantado.
Na página Clusters, clique em aba Clusters of Community-compatible Edition e selecione o id do cluster desejado.
No painel de navegação à esquerda, clique em Cold and hot layered storage.
Clique em Click to Enable Layered Storage.
-
Na caixa de diálogo exibida, clique em OK.
Após confirmar a operação, o cluster será reiniciado. O recurso estará ativo quando o status do cluster mudar de Changing Configuration para Running.
Enterprise edition
Para a Alibaba Cloud ClickHouse Enterprise Edition, envie primeiro um ticket para adicionar sua conta à lista de permissões deste recurso. Em seguida, siga os passos abaixo para ativá-lo no seu cluster.
Faça login no console da Alibaba Cloud ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está implantado.
Na página Clusters, clique em aba Enterprise Edition Clusters e selecione o id do cluster desejado.
No painel de navegação à esquerda, clique em Cold and hot layered storage.
Clique em Click to Enable Layered Storage.
Na caixa de diálogo exibida, configure o TTL global.
-
Clique em OK.
O recurso estará ativo quando o status do cluster mudar para Running e a página Tiered Storage indicar que o recurso está Enabled.
Após a ativação, clique em ícone de edição ao lado de Parameter Value para ajustar o TTL global. O novo TTL entrará em vigor no próximo ciclo de transferência (00:00 UTC do dia seguinte).
Gerenciar políticas de armazenamento da Community-compatible edition
Política de armazenamento padrão
Ao ativar o armazenamento em camadas de dados quentes e frios, a política padrão inclui os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
move_factor |
Quando o espaço disponível no disco de dados quentes cai abaixo desta proporção, o sistema move automaticamente a maior parte dos dados para o disco frio. O valor deste parâmetro varia entre Nota
Para verificar o espaço em disco, consulte Verificar espaço em disco. |
|
prefer_not_to_merge |
Define se os dados no disco frio devem ser mesclados. Valores válidos:
|
Política de armazenamento baseada em TTL
Adicione uma cláusula TTL à política padrão para mover automaticamente todos os dados anteriores a um intervalo especificado para o disco de dados frios.
Sintaxe
TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk'
Parâmetros
|
Parâmetro |
Descrição |
|
time_column |
Uma coluna do tipo de dado Date ou DateTime. |
|
number unit |
O intervalo de tempo. Unidades comuns incluem DAY, WEEK, MONTH e YEAR. |
Para mais informações sobre cláusulas TTL, consulte TTL para colunas e tabelas.
Exemplo
A instrução abaixo cria uma tabela e move todos os dados com mais de 90 dias para o disco de dados frios, tomando como base a coluna date.
CREATE TABLE ttl_test_tbl
(
`f1` String,
`f2` String,
`f3` Int64,
`f4` Float64,
`date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';
Modificar uma política baseada em TTL
Altere a coluna Date ou DateTime e o intervalo de tempo de uma política de armazenamento em camadas baseada em TTL.
Precauções
-
Impacto nos dados:
Dados existentes: por padrão, a nova política também se aplica aos dados existentes, mas esse processo é assíncrono e leva tempo. Para aplicar a alteração imediatamente, execute a instrução
ALTER TABLE ... MATERIALIZE TTL;após modificar a política. Se preferir não alterar a política de armazenamento dos dados existentes, execute a instruçãoSET materialize_ttl_after_modify=0;antes de modificar a política.Novos dados seguem a estratificação definida pela nova política.
Após modificar uma política baseada em TTL, os dados que já estão no disco frio não retornam automaticamente ao disco quente. Para mover esses dados, consulte Mover dados entre discos quentes e frios.
Sintaxe
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk';
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
O nome da tabela. |
|
time_column |
A coluna alvo do tipo Date ou DateTime. |
|
number unit |
O intervalo de tempo. Unidades comuns incluem DAY, WEEK, MONTH e YEAR. |
Gerenciamento de dados da Community-compatible edition
Mover dados entre discos quentes e frios
-
Mova dados de um disco quente para um disco frio:
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk'; -
Mova dados de um disco frio para um disco quente:
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';Notapartitionrefere-se ao nome da partição, disponível na tabelasystem.parts.
Visualizar dados em discos quentes e frios
-
Visualize dados em um disco quente:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1; -
Visualize dados em um disco frio:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;
Verificar espaço em disco
Após ativar o armazenamento em camadas de dados quentes e frios, execute a instrução abaixo para verificar o espaço em disco:
SELECT * FROM system.disks;
O resultado retornado será semelhante ao seguinte:
┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space──────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │ 0 │ OSS │
│ default │ /clickhouse/data/data/ │ 201663209472 │ 207083249664 │ 5420040192 │ 0 │ local │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘
A tabela a seguir descreve as colunas do conjunto de resultados.
|
Parâmetro |
Descrição |
|
name |
O nome do disco.
|
|
path |
O caminho de armazenamento dos dados no disco. |
|
free_space |
O espaço disponível no disco, em bytes. O espaço disponível em um disco de dados frios não tem limite. |
|
total_space |
O espaço total no disco, em bytes. O espaço total em um disco de dados frios é efetivamente ilimitado. |
|
used_space |
O espaço em disco utilizado, em bytes. |
|
keep_free_space |
O espaço livre reservado, em bytes. |
|
type |
A mídia de armazenamento.
|
Perguntas frequentes
P: Por que meus dados não estão sendo movidos do disco quente para o disco frio?
R: A movimentação de dados para o disco frio depende dos valores de move_ttl_info.min e move_ttl_info.max na tabela system.parts. Execute a instrução abaixo para consultar esses valores:
SELECT move_ttl_info.min, move_ttl_info.max FROM system.parts WHERE database = '<db_name>' AND table = '<tb_name>' AND disk_name = 'default'
Se a hora atual for anterior a qualquer um desses valores, o sistema não moverá a parte dos dados. Também é possível que o sistema esteja processando ou preparando a movimentação e a operação ainda não tenha sido concluída.