Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2025-05-23 GMT+08:00

O que é HTAP da edição padrão?

O processamento transacional e analítico híbrido (HTAP) é uma arquitetura de dados que lida com cargas de trabalho de processamento transacional on-line (OLTP) e processamento analítico on-line (OLAP).

Ele usa o mecanismo de armazenamento baseado em colunas e Single Instruction Multiple Data (SIMD) para computação paralela. Em cenários de análise de dados em massa, a análise HTAP fornecida pelo TaurusDB livra você de ter que manter independentemente os links de extração e sincronização de dados. Reduz os custos de gerenciamento de dados e fornece análise de dados em tempo real simples e eficiente.

O HTAP da edição padrão foi desenvolvido com base no StarRocks de código aberto.

Arquitetura do produto

As instâncias de HTAP são implementadas em ECSs e usam SSDs extremos ou discos de I/O ultra-alta.

Você pode habilitar o binlog para sua instância do TaurusDB para sincronizar dados e operações com instâncias de HTAP. As operações sincronizadas incluem a inserção de tabelas, a exclusão de tabelas e a alteração de estruturas de tabelas. Depois que os dados são sincronizados com uma instância de HTAP, você pode acessar a instância de HTAP por meio de seu endereço IP privado para análise de dados.

Uma instância de HTAP da edição padrão fornece nós de front-end (FE) e back-end (BE). Os nós de FE gerenciam metadados, gerenciam conexões de clientes e planejam e agendam consultas. Cada nó de FE armazena e mantém um backup completo de metadados na memória para garantir a consistência dos dados entre os nós de FE. Os nós de BE são para armazenamento de dados e computação SQL.

Figura 1 Arquitetura do produto

Existem três funções para nós de FE.

Figura 2 Funções do nó de FE

  • Os nós fe-leader leem e gravam metadados. Os nós fe-follower e fe-observer só podem ler metadados e rotear solicitações de gravação de metadados para os nós fe-leader. Os nós fe-leader atualizam os metadados e sincronizam as alterações de metadados com os nós fe-follower e fe-observer.
  • Os nós fe-follower só podem ler metadados.
  • Os nós fe-observer sincronizam e reproduzem logs dos nós fe-leader para atualizar metadados. Os nós fe-observer são usados para aumentar a simultaneidade de consulta de um cluster.

Principais recursos

  • Arquitetura de Processamento paralelo em massa (MPP)

    Vários nós são usados para executar consultas em paralelo.

  • Alto desempenho

    Ele oferece suporte a mecanismos vetorizados e otimizadores CBO e é excelente em consultas para tabelas grandes e amplas e operações de junção de várias tabelas.

  • SQL padrão

    As instruções de consulta estão em conformidade com o padrão SQL-92.

  • Compactação de dados para armazenamento

    O armazenamento baseado em colunas e a compactação de dados reduzem consideravelmente os custos de armazenamento para qualquer conjunto de condições.

  • Agregação de múltiplas fontes de dados

    Os dados em vários bancos de dados de TaurusDB podem ser sincronizados com uma determinada instância de HTAP.

Restrições

O HTAP da edição padrão está disponível apenas nas seguintes regiões:

  • AP-Singapore
  • AF-Johannesburg

Cobrança

Para obter detalhes, consulte Itens cobrados de instância de HTAP.

Precauções

  • Quando você consulta dados em uma instância de HTAP, a comparação de cadeias de caracteres e os nomes de bancos de dados, tabelas, exibições, usuários e funções diferenciam maiúsculas de minúsculas, mas os nomes de colunas e partições não diferenciam maiúsculas de minúsculas.
  • Uma tabela Duplicate Key é usada quando tabelas sem chaves primárias em uma instância do TaurusDB são sincronizadas com uma instância de HTAP.
  • Algumas instruções DDL executadas em instâncias de TaurusDB não podem ser sincronizadas com instâncias de HTAP, o que pode causar falhas de sincronização ou inconsistências de dados.

    As instruções de DDL que podem ser sincronizadas e não podem ser sincronizadas são as seguintes:

    • Instruções DDL que podem ser sincronizadas
      Tabela 1 Instruções DDL que podem ser sincronizadas

      Nome do DDL

      Exemplo de SQL

      Criação de uma tabela

      CREATE TABLE tbl_name (c_id int not null, c_d_id integer not null, primary key (c_id));

      Eliminação de uma tabela

      DROP TABLE tbl_name;

      Renomeação de uma tabela

      RENAME TABLE tbl_name to new_tbl_name;

      ALTER TABLE tbl_name RENAME TO new_tbl_name;

      Limpeza de dados da tabela

      TRUNCATE TABLE tbl_name;

      Alteração de comentários da tabela

      ALTER TABLE tbl_name COMMENT='test';

      Adição de uma coluna (coluna de chave não primária)

      ALTER TABLE tbl_name ADD c_varchar varchar(2000) AFTER c_tinytext;

      Exclusão de uma coluna (coluna de chave não primária)

      ALTER TABLE tbl_name DROP c_vchar;

      Alteração do tipo e da sequência de uma coluna (coluna de chave não primária)

      ALTER TABLE tbl_name CHANGE c_vchar c_vchar varchar(2000) default 'test' AFTER c_tinytext;

      CUIDADO:

      O nome da coluna e o valor padrão não podem ser alterados.

      ALTER TABLE tbl_name MODIFY c_vchar varchar(2100) default 'test' AFTER c_tinytext;

      CUIDADO:

      O valor padrão não pode ser alterado.

      Criação de uma visualização

      CREATE VIEW view_name as select * from tbl_name;

      Eliminação de uma visualização

      DROP VIEW view_name;

      Alteração de uma visualização

      ALTER VIEW view_name AS select * from tbl_name;

    • Instruções DDL que não podem ser sincronizadas

      Após uma tarefa de sincronização de banco de dados, somente tabelas e dados podem ser sincronizados. Operações para bancos de dados, funções, procedimentos armazenados, gatilhos, partições (operações DELETE), chaves primárias (operações INSERT/DELETE/ALTER), transações, usuários, funções, privilégios e eventos não podem ser sincronizadas.

      Tabela 2 lista operações relacionadas a tabelas particionadas que não podem ser sincronizadas

      Tabela 2 Operações relacionadas a tabelas particionadas que não podem ser sincronizadas

      Nome do DDL

      Exemplo de SQL

      Analisar uma partição de tabela

      ALTER TABLE {db}.tp ANALYZE PARTITION p0;

      Verificar uma partição de tabela

      ALTER TABLE {db}.tp CHECK PARTITION p0;

      Otimizar uma partição de tabela

      ALTER TABLE {db}.tp OPTIMIZE PARTITION p0;

      Reconstruir uma partição de tabela

      ALTER TABLE {db}.tp REBUILD PARTITION p0;

      Reparar uma partição de tabela

      ALTER TABLE {db}.tp REPAIR PARTITION p0;

      Criar um banco de dados

      CREATE DATABASE ddl_test_2;

      Modificar um formato de linha

      ALTER TABLE tbl_name ROW_FORMAT = row_format;

      Configurar estatísticas de tabela persistentes

      ALTER TABLE tbl_name STATS_PERSISTENT=0, STATS_SAMPLE_PAGES=20,STATS_AUTO_RECALC=1, ALGORITHM=INPLACE, LOCK=NONE;

      Definir um conjunto de caracteres de tabela

      ALTER TABLE tbl_name CHARACTER SET = charset_name;

      Converter um conjunto de caracteres de tabela

      ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;

      Reconstruir uma tabela sem dados

      ALTER TABLE tbl_name ENGINE=InnoDB;

      Adicionar uma partição de tabela

      ALTER TABLE {db}.tp ADD PARTITION (PARTITION p3 VALUES LESS THAN (2006) );

      Definir conjunto de caracteres padrão e das regras de verificação para uma tabela

      ALTER TABLE tbl_name DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;

      As instruções de criação de tabela não podem conter CHECK ou opções de tabela.

      Durante a sincronização de dados, as operações em Tabela 3 podem causar inconsistência de dados entre instâncias de TaurusDB e instâncias de HTAP. Você deve evitar essas operações.

      Elas não afetam a consulta e a análise de dados em instâncias de HTAP.

      Tabela 3 Operações de DDL que resultam em inconsistência de dados

      Nome do DDL

      Exemplo de SQL

      Excluir uma chave primária

      ALTER TABLE tbl_name DROP PRIMARY KEY;

      Adicionar uma chave primária

      ALTER TABLE {db}.t1 ADD PRIMARY KEY (id);

      Adicionar uma chave primária e excluir uma chave primária

      ALTER TABLE tbl_name DROP PRIMARY KEY, ADD PRIMARY KEY (column);

      Configurar uma chave primária para NULL

      ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type;

      Alterar o tipo de uma chave primária

      ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type not null;

      Adicionar uma coluna

      NOTA:

      Colunas comuns podem ser adicionadas. Se as colunas contiverem os seguintes valores padrão, elas não poderão ser adicionadas.

      • Funções, cadeias de caracteres e identificadores que não podem ser encontrados em instâncias de HTAP

      ALTER TABLE tbl_name ADD COLUMN column_name column_definition

      c VARCHAR(10) DEFAULT (CONCAT('1', '2'));

      Configurar o valor padrão de uma coluna

      NOTA:

      Se as colunas contiverem os seguintes valores padrão, você não poderá redefinir os valores padrão para as colunas.

      • Funções, cadeias de caracteres e identificadores que não podem ser encontrados em instâncias de HTAP

      ALTER TABLE tbl_name ALTER COLUMN col SET DEFAULT literal;

      Alterar NULL em tabelas para NOT NULL

      ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NOT NULL;

      Alterar o nome e o tipo da coluna ao mesmo tempo

      ALTER TABLE t1 CHANGE b b1 VARCHAR(100);

      Alterar o nome de uma coluna

      ALTER TABLE t1 RENAME COLUMN a TO b;

      Criar uma tabela sem uma chave primária

      ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)STORED);

      Adicionar uma coluna derivada STORED

      ALTER TABLE {db}.t1 ADD COLUMN (st2 INT GENERATED ALWAYS AS (c2 + 2)STORED), ALGORITHM=COPY;

      Adicionar uma coluna derivada VIRTUAL

      ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)VIRTUAL);

      Eliminar uma partição de tabela

      ALTER TABLE {db}.tp DROP PARTITION p4;

      Descartar uma partição de tabela

      ALTER TABLE {db}.tp DISCARD PARTITION p2 TABLESPACE;

      Importar uma partição de tabela

      ALTER TABLE {db}.tp IMPORT PARTITION p2 TABLESPACE;

      Truncar uma partição de tabela

      ALTER TABLE {db}.tp TRUNCATE PARTITION p2;

      Truncar uma tabela particionada

      TRUNCATE {db}.tp;

      Coalescer partições de tabela

      ALTER TABLE {db}.tp_hash COALESCE PARTITION 2;

      Reorganizar partições de tabela

      ALTER TABLE {db}.tp REORGANIZE PARTITION p0,p1,p2,p3 INTO ( ... );

      Trocar partições de tabela

      ALTER TABLE {db}.tp EXCHANGE PARTITION p0 WITH TABLE {db}.tp2;

      Remover uma partição de tabela

      ALTER TABLE {db}.tp REMOVE PARTITIONING;

      Usar uma cláusula REPLACE

      CREATE OR REPLACE TABLE;

      Renomear uma visualização

      RENAME TABLE old_view_name TO new_view_name;

      Tabela 4 Operações DDL que foram ignoradas durante a sincronização (sem impactos)

      Nome de DDL

      Exemplo de SQL

      Adicionar um índice

      ALTER TABLE tbl_name ADD INDEX name;

      Renomear um índice

      ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name;

      Eliminar um índice

      DROP INDEX name ON table;

      Adicionar um índice de texto completo

      CREATE FULLTEXT INDEX name ON table(column);

      Adicionar um índice espacial

      ALTER TABLE geom ADD SPATIAL INDEX(g);

      Modificar o tipo de um índice

      ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE;

      Adicionar uma restrição de índice

      ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING BTREE (column);

      ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING HASH(column);

      Otimizar uma tabela

      OPTIMIZE TABLE tbl_name;

      Reconstruir uma tabela usando a opção FORCE

      ALTER TABLE tbl_name FORCE;

      Renomear um espaço de tabela

      ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;

      Adicionar uma chave estrangeira

      ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY index (col1)REFERENCES tbl2(col2) referential_actions;

      Excluir uma chave estrangeira

      ALTER TABLE tbl DROP FOREIGN KEY fk_name;

  • Os nomes dos bancos de dados e tabelas a serem sincronizados não podem conter caracteres chineses.
  • Para melhorar o desempenho, você pode usar os seguintes métodos para otimizar as consultas:
    • Simplifique instruções SQL reduzindo cálculos inválidos, excluindo campos não usados e evitando SELECT.
    • Em vez de consultar todas as colunas, exclua aquelas que são desnecessárias.
  • As tabelas a serem sincronizadas usam o mecanismo OLAP e o modelo de chave primária por padrão.
  • Estas são as descrições e restrições da sincronização de exibição:
    • Por padrão, as visualizações não são sincronizadas. Para sincronizá-las, você precisa definir sync_view como true ao criar uma tarefa de sincronização.
    • Quando você seleciona uma visualização de sincronização, o nome do banco de dados de origem deve ser igual ao nome do banco de dados de destino.
    • Algumas instruções DDL relacionadas à exibição não podem ser sincronizadas, por exemplo, o comando rename table usado para renomear uma exibição.
    • Uma exibição entre bancos de dados pode falhar ao ser sincronizada se os bancos de dados dependentes não estiverem sincronizados.
    • Se uma função ou sintaxe que não é suportada por instâncias de HTAP for usada em uma exibição, a exibição não poderá ser sincronizada.
    • Se uma exibição não puder ser sincronizada, você poderá criá-la manualmente em uma instância de HTAP após a correção da falha.
    • Quando a sincronização de visualização falha, alarmes e informações de erro são relatados. Você pode se conectar a uma instância de HTAP e executar show sync job para visualizar SyncErrViews (visualizações que não foram sincronizadas) e SyncErrMsg (informações detalhadas sobre erros). Para limpar alarmes e informações de erro, você pode executar alter sync synchronization_task_name setting "SyncErrMsg" = "", "SyncErrViews"="";
    • As falhas de sincronização de exibição não afetam a sincronização de dados da tabela.
    • A versão do kernel da instância do TaurusDB deve ser 2.0.57.240900 ou posterior.
  • Após conectar-se a uma instância de HTAP padrão, execute o comando a seguir para visualizar os bancos de dados sincronizados do TaurusDB com a instância de HTAP padrão e o status da sincronização.
    Como este comando consulta as informações do binlog no TaurusDB, ele pode consumir a cota de consulta por hora. É aconselhável executar este comando no máximo uma vez por minuto.
    show sync job;