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.

Existem três funções para nós 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)
- 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;
- Instruções DDL que podem ser sincronizadas
- 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.