Para reduzir custos de armazenamento, melhorar o desempenho de consultas e aumentar a utilização de recursos do sistema, os clusters da ApsaraDB for ClickHouse Community-compatible Edition e Enterprise Edition com armazenamento ESSD_L1 ou ESSD_L2 oferecem suporte ao armazenamento em camadas de dados quentes e frios. Esse recurso armazena dados quentes e frios em mídias diferentes conforme a frequência de acesso. Este tópico descreve como ativar o armazenamento em camadas e configurar políticas de armazenamento.
Pré-requisitos
Community-compatible Edition
O cluster executa a versão 20.8 ou posterior.
O recurso de backup de dados está desativado no cluster.
Para usar o armazenamento em camadas em um cluster com versão anterior, migre os dados para um cluster que execute a versão 20.8 ou posterior e ative o armazenamento em camadas. Para mais informações, consulte Migrar dados entre clusters da ApsaraDB for ClickHouse Community-compatible Edition.
Enterprise Edition
O cluster utiliza armazenamento ESSD_L1 ou ESSD_L2. Para usar esse tipo de armazenamento, envie um ticket para adicionar o recurso à lista de permissões.
Informações básicas
O armazenamento em camadas de dados quentes e frios classifica os dados em duas categorias conforme a frequência de acesso:
Dados quentes: Dados acessados frequentemente. Ficam armazenados em discos de dados quentes, como SSDs empresariais (ESSDs) ou ultra discos selecionados durante a criação do cluster, atendendo aos requisitos de acesso de alto desempenho.
Dados frios: Dados acessados com pouca frequência. Ficam armazenados em discos de dados frios de menor custo, atendendo aos requisitos de armazenamento econômico.
As políticas de armazenamento para o armazenamento em camadas de dados quentes e frios são as seguintes:
Community-compatible Edition
|
Política de armazenamento |
Detalhes |
|
Política de armazenamento padrão |
O sistema grava novos dados em discos de dados quentes para proporcionar consultas eficientes. Quando a quantidade de dados quentes atinge um limiar especificado, o sistema move automaticamente a parte dos dados que ocupa mais espaço no disco de dados quentes para um disco de dados frios, liberando espaço de armazenamento no disco de dados quentes. |
|
Política de armazenamento TTL |
Uma instrução Time to Live (TTL) adicionada à política de armazenamento padrão move automaticamente todos os dados criados antes de um intervalo de tempo especificado para um disco de dados frios. |
Enterprise Edition
O armazenamento em camadas é implementado com base em um TTL global. Os dados inalterados são descarregados automaticamente para o Object Storage Service (OSS), de menor custo, visando a redução de despesas.
TTL global: A Enterprise Edition controla a classificação de dados usando um TTL global.
Momento do descarregamento: Após a ativação do armazenamento em camadas, o sistema verifica todos os arquivos de dados diariamente às 00:00 UTC. As partes de dados existentes há mais tempo que o TTL global são descarregadas dos discos quentes para os discos frios (OSS).
Precauções
Community-compatible Edition
Ative o armazenamento em camadas fora dos horários de pico. Após a ativação desse recurso, o cluster reinicia imediatamente. Durante a reinicialização, apenas a visualização das informações do cluster fica disponível. Não é possível atualizar, expandir, reduzir ou modificar configurações de parâmetros.
-
Ao utilizar o armazenamento em camadas, especifique uma política de armazenamento para cada tabela.
Ao criar uma tabela, especifique a política de armazenamento usando
SETTINGS storage_policy = 'hot_to_cold'.-
Modifique a política de armazenamento de uma tabela existente.
Para clusters onde a política de armazenamento em camadas foi ativada após 1º de janeiro de 2024
Execute a seguinte instrução para modificar a política.
ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';Para clusters onde a política de armazenamento em camadas foi ativada antes de 1º de janeiro de 2024
Adicione uma nova política de armazenamento em camadas por meio de operações de O&M. Isso permite usar a nova política para migrar dados de um disco quente para um disco frio.
Não é possível desativar o armazenamento em camadas após a ativação.
Enterprise Edition
Se os dados no armazenamento frio forem alterados, eles serão recarregados no armazenamento quente para reconstruir os arquivos de dados. As alterações incluem operações
MutationouOptimizeexecutadas por você, ou operaçõesMergeacionadas pelo sistema com base em regras. Os novos arquivos de dados não são movidos imediatamente para o armazenamento frio. Eles só serão descarregados novamente após existirem por um período superior ao TTL global. Portanto, evite adições, exclusões ou modificações frequentes nos dados frios.A operação de descarregamento não é imediata. O sistema ajusta dinamicamente a velocidade de descarregamento com base em fatores como a pressão de acesso atual no sistema de armazenamento. A operação pode levar várias horas para ser concluída, dependendo do volume de dados a serem descarregados.
-
Regras para entrada em vigor das alterações de TTL:
Aumento do TTL: A alteração entra em vigor no próximo momento de descarregamento. No entanto, os dados já descarregados no armazenamento frio não retornam ao armazenamento quente.
Redução do TTL: A alteração entra em vigor no próximo momento de descarregamento.
O valor mínimo para o TTL global é de 1 dia. O passo mínimo de ajuste é de 1 dia.
Faturamento
-
As regras de faturamento são as seguintes.
Tipo de armazenamento
Detalhes do faturamento
Armazenamento de dados quentes
Após adquirir um cluster, você dispõe de espaço de armazenamento de dados quentes igual à capacidade de armazenamento do cluster.
Armazenamento de dados frios
O armazenamento de dados frios utiliza o método de faturamento pagamento conforme o uso. Não é necessário adquirir uma quantidade fixa de espaço de armazenamento antecipadamente. O faturamento é feito por hora com base no espaço de armazenamento utilizado.
Para obter preços detalhados do armazenamento de dados frios, consulte Preços de buckets da Community Edition e Método de faturamento pagamento conforme o uso da Enterprise Edition.
Fórmula de faturamento: Taxa de armazenamento frio = Preço unitário do armazenamento de dados frios × Uso do armazenamento de dados frios × Duração do uso.
Por exemplo, se o preço unitário do armazenamento de dados frios for USD 0,000026 por GB/hora e você utilizar 2.000 GB de armazenamento frio das 19:00 às 20:00, a taxa total será USD 0,000026/GB/hora × 2.000 GB × 1 hora = USD 0,052. Se você liberar 500 GB de espaço de armazenamento frio das 20:00 às 21:00 e utilizar 1.500 GB, a taxa total para essa hora será USD 0,000026/GB/hora × 1.500 GB × 1 hora = USD 0,039.
Os preços nestes exemplos servem apenas como referência. Os preços reais exibidos no console prevalecem.
Ativar o armazenamento em camadas de dados quentes e frios
Community-compatible Edition
Faça login no console da ApsaraDB for ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está localizado.
Na página Clusters, clique na aba Clusters of Community-compatible Edition e, em seguida, clique no ID do cluster de destino.
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 a confirmação, o cluster reiniciará. O recurso estará ativado quando o status do cluster mudar de Changing Configuration para Running.
Enterprise Edition
Para a ApsaraDB for ClickHouse Enterprise Edition, primeiro envie um ticket para adicionar o armazenamento em camadas de dados quentes e frios à lista de permissões. Em seguida, execute as etapas a seguir para ativar o recurso no cluster de destino.
Faça login no console da ApsaraDB for ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está localizado.
Na página Clusters, clique na aba Enterprise Edition Clusters e, em seguida, clique no ID do cluster de destino.
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á ativado quando o status do cluster mudar para Running e a página Tiered Storage exibir Enabled.
Após ativar o recurso, clique no í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 descarregamento (00:00 UTC do dia seguinte).
Gerenciar políticas de armazenamento em camadas para a Community-compatible Edition
Política de armazenamento padrão para armazenamento em camadas de dados quentes e frios
Após ativar o armazenamento em camadas, a política de armazenamento padrão apresenta os seguintes parâmetros.
Parâmetro | Descrição |
move_factor | Quando a porcentagem de espaço livre em um disco de dados quentes for inferior a este valor, o sistema moverá automaticamente a parte dos dados que ocupa mais espaço no disco de dados quentes para um disco de dados frios. O valor deve estar no intervalo de Nota Para saber como visualizar o espaço em disco, consulte Visualizar espaço em disco. |
prefer_not_to_merge | Especifica se deve haver mesclagem de dados em um disco de dados frios. Valores válidos:
|
Definir uma política de armazenamento em camadas baseada em TTL ao criar uma tabela
Adicione uma instrução TTL à política de armazenamento padrão. Isso move automaticamente todos os dados criados antes de um intervalo de tempo especificado para um disco de dados frios.
Sintaxe
TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'
Descrição dos parâmetros
|
Parâmetro |
Descrição |
|
time_column |
Uma coluna do tipo de dados Date ou DateTime. |
|
number |
O intervalo de tempo. As unidades comuns são Day, Week, Month e Year. |
Para mais informações sobre cláusulas TTL, consulte TTL.
Exemplo
Mova todos os dados com mais de 90 dias para um disco de dados frios com base na coluna date. A instrução para criar a tabela é a seguinte.
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 de armazenamento em camadas baseada em TTL
É possível alterar a coluna de data ou do tipo data e o intervalo de tempo em uma política de armazenamento em camadas baseada em TTL.
Precauções
-
Impacto nos dados
Dados históricos: Por padrão, os dados históricos são armazenados de acordo com a nova política. Esse processo é assíncrono e leva tempo. Para que a alteração tenha efeito imediato, execute a instrução
ALTER TABLE materialize TTL;após modificar a política. Caso não deseje alterar a política de armazenamento para dados históricos, execute a instruçãoSET materialize_ttl_after_modify=0;antes de modificar a política.Dados incrementais: Por padrão, os dados incrementais também são armazenados de acordo com a nova política.
Após modificar a política, os dados que já estão em um disco de dados frios não são movidos automaticamente para um disco de dados quentes. Para mover os dados, consulte Mover dados entre discos quentes e frios.
Sintaxe
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';
Descrição dos parâmetros
|
Parâmetro |
Descrição |
|
table_name |
O nome da tabela. |
|
time_column |
A coluna de destino do tipo data ou data. |
|
number |
O intervalo de tempo. As unidades comuns são Day, Week, Month e Year. |
Gerenciamento de dados para a Community-compatible Edition
Mover dados entre discos quentes e frios
-
Mova dados de um disco de dados quentes para um disco de dados frios.
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk'; -
Mova dados de um disco de dados frios para um disco de dados quentes.
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';Notapartitioné o nome da partição. Você pode encontrá-lo na tabela de sistemasystem.parts.
Visualizar dados em discos quentes e frios
-
Visualize dados em um disco de dados quentes:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1; -
Visualize dados em um disco de dados frios:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;
Visualizar espaço em disco
Após ativar o armazenamento em camadas, execute a seguinte instrução para visualizar o espaço em disco.
SELECT * FROM system.disks;
O seguinte resultado é retornado.
┌─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 │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘
As colunas no conjunto de resultados são descritas a seguir.
Parâmetro | Descrição |
name | O nome do disco.
|
path | O caminho de armazenamento de dados no disco. |
free_space | O espaço livre restante no disco. O espaço livre em um disco de dados frios não é limitado. Unidade: byte. |
total_space | O espaço total no disco. O espaço livre em um disco de dados frios não é limitado. Unidade: byte. |
used_space | O espaço utilizado no disco. Unidade: byte. |
keep_free_space | O espaço livre reservado. Unidade: byte. |
type | A mídia de armazenamento.
|
Perguntas frequentes
P: Por que os dados não são movidos de um disco de dados quentes para um disco de dados frios?
R: A movimentação de dados para um disco de dados frios depende dos valores de move_ttl_info.min e move_ttl_info.max na tabela system.parts. Use a seguinte instrução para recuperar 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 dos valores retornados, essa parte dos dados não será movida para o armazenamento frio. Também é possível que o sistema esteja em processo de movimentação dos dados, mas a operação ainda não foi concluída.