Qué es HTAP of Standard Edition
Hybrid Transactional and Analytical Processing (HTAP) es una arquitectura de datos que gestiona cargas de trabajo de procesamiento transaccional en línea (OLTP) y de procesamiento analítico en línea (OLAP).
Utiliza el motor de almacenamiento basado en columnas y datos múltiples de instrucción única (SIMD) para la computación en paralelo. En escenarios de análisis de datos masivos, el análisis HTAP proporcionado por TaurusDB lo libera de tener que mantener la extracción de datos y los enlaces de sincronización de forma independiente. Reduce los costos de gestión de datos y proporciona un análisis de datos simple y eficiente en tiempo real.
HTAP de Standard Edition se desarrolla sobre la base del StarRocks de código abierto.
Arquitectura del producto
Las instancias de HTAP se despliegan en ECS y utilizan SSD extremos o discos de E/S ultraalta.
Puede habilitar binlog para la instancia de TaurusDB para sincronizar datos y operaciones con instancias de HTAP. Las operaciones sincronizadas incluyen la inserción de tablas, la eliminación de tablas y el cambio de estructuras de tablas. Después de sincronizar los datos con una instancia de HTAP, puede acceder a la instancia de HTAP con su dirección IP privada para el análisis de datos.
Una instancia HTAP de la edición estándar proporciona nodos frontend (FE) y backend (BE). Los nodos FE gestionan metadatos, gestionan conexiones de clientes y planifican y programan consultas. Cada nodo FE almacena y mantiene una copia de respaldo de metadatos completo en la memoria para garantizar la uniformidad de los datos entre los nodos FE. Los nodos BE se utilizan para el almacenamiento de datos y el cómputo SQL.

Existen tres roles para los nodos FE.

- Los nodos de fe-leader leen y escriben metadatos. Los nodos fe-follower y fe-observer solo pueden leer metadatos y enrutamiento escribir solicitudes de metadatos a los nodos fe-leader. Los nodos de fe-leader actualizan los metadatos y sincronizan los cambios de metadatos con los nodos de fe-follower y fe-observer.
- Los nodos fe-follower solo pueden leer metadatos.
- Los nodos fe-observer sincronizan y reproducen los registros de los nodos fe-leader para actualizar los metadatos. Los nodos fe-observer se utilizan para aumentar la simultaneidad de consultas de un clúster.
Características principales
- Arquitectura de procesamiento paralelo masivo (MPP)
Se utilizan varios nodos para ejecutar consultas en paralelo.
- Alto rendimiento
Soporta motores vectorizados y optimizadores CBO y destaca en consultas para tablas grandes y amplias y operaciones de unión de múltiples tablas.
- SQL estándar
- Compresión de datos para almacenamiento
El almacenamiento basado en columnas y la compresión de datos reducen en gran medida los costos de almacenamiento para cualquier conjunto de condiciones.
- Agregación de múltiples fuentes de datos
Los datos de varias bases de datos de TaurusDB se pueden sincronizar con una instancia HTAP determinada.
Restricciones
HTAP de Standard Edition solo está disponible en las siguientes regiones:
- AP-Singapore
- AF-Johannesburg
Facturación
Para obtener más información, véase Conceptos facturados de instancia de HTAP.
Precauciones
- Cuando se consultan datos en una instancia de HTAP, la comparación de cadenas de caracteres y los nombres de bases de datos, tablas, vistas, usuarios y roles distinguen entre mayúsculas y minúsculas, pero los nombres de columnas y particiones no distinguen entre mayúsculas y minúsculas.
- Una tabla de claves duplicadas se utiliza cuando las tablas sin claves principales de una instancia de TaurusDB se sincronizan con una instancia de HTAP.
- Algunas sentencias DDL ejecutadas en instancias de TaurusDB no se pueden sincronizar con instancias de HTAP, lo que puede causar errores de sincronización o incoherencias de datos.
Las sentencias DDL que se pueden sincronizar y no se pueden sincronizar son las siguientes:
- Sentencias DDL que se pueden sincronizar
Tabla 1 Sentencias DDL que se pueden sincronizar Nombre de DDL
Ejemplo de SQL
Creación de una tabla
CREATE TABLE tbl_name (c_id int not null, c_d_id integer not null, primary key (c_id));
Borrar una tabla
DROP TABLE tbl_name;
Cambiar el nombre de una tabla
RENAME TABLE tbl_name to new_tbl_name;
ALTER TABLE tbl_name RENAME TO new_tbl_name;
Borrar datos de tabla
TRUNCATE TABLE tbl_name;
Alterar comentarios de tabla
ALTER TABLE tbl_name COMMENT='test';
Agregar una columna (columna de clave no principal)
ALTER TABLE tbl_name ADD c_varchar varchar(2000) AFTER c_tinytext;
Eliminar una columna (columna de clave no principal)
ALTER TABLE tbl_name DROP c_vchar;
Cambiar el tipo y la secuencia de una columna (columna de clave no principal)
ALTER TABLE tbl_name CHANGE c_vchar c_vchar varchar(2000) default 'test' AFTER c_tinytext;
ATENCIÓN:El nombre de la columna y el valor predeterminado no se pueden cambiar.
ALTER TABLE tbl_name MODIFY c_vchar varchar(2100) default 'test' AFTER c_tinytext;
ATENCIÓN:El valor predeterminado no se puede cambiar.
Creación de una consulta
CREATE VIEW view_name as select * from tbl_name;
Borrar una vista
DROP VIEW view_name;
Alterar una vista
ALTER VIEW view_name AS select * from tbl_name;
- Sentencias DDL que no se pueden sincronizar
Después de una tarea de sincronización de base de datos, solo se pueden sincronizar tablas y datos. No se pueden sincronizar las operaciones de bases de datos, funciones, procedimientos almacenados, activadores, particiones (operaciones DELETE), claves principales (operaciones INSERT/DELETE/ALTER), transacciones, usuarios, roles, privilegios y eventos.
Tabla 2 enumera las operaciones relacionadas con tablas particionadas que no se pueden sincronizar
Tabla 2 Operaciones relacionadas con tablas particionadas que no se pueden sincronizar Nombre de DDL
Ejemplo de SQL
Analizar una partición de tabla
ALTER TABLE {db}.tp ANALYZE PARTITION p0;
Comprobar una partición de tabla
ALTER TABLE {db}.tp CHECK PARTITION p0;
Optimizar una partición de tabla
ALTER TABLE {db}.tp OPTIMIZE PARTITION p0;
Reconstruir una partición de tabla
ALTER TABLE {db}.tp REBUILD PARTITION p0;
Reparar una partición de tabla
ALTER TABLE {db}.tp REPAIR PARTITION p0;
Creación de una base de datos
CREATE DATABASE ddl_test_2;
Modificar un formato de fila
ALTER TABLE tbl_name ROW_FORMAT = row_format;
Establecer estadísticas de tablas persistentes
ALTER TABLE tbl_name STATS_PERSISTENT=0, STATS_SAMPLE_PAGES=20,STATS_AUTO_RECALC=1, ALGORITHM=INPLACE, LOCK=NONE;
Establecer un juego de caracteres de tabla
ALTER TABLE tbl_name CHARACTER SET = charset_name;
Conversión de un juego de caracteres de tabla
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
Reconstruir una tabla sin datos
ALTER TABLE tbl_name ENGINE=InnoDB;
Agregar una partición de tabla
ALTER TABLE {db}.tp ADD PARTITION (PARTITION p3 VALUES LESS THAN (2006) );
Establecer el juego de caracteres predeterminado y las reglas de verificación para una tabla
ALTER TABLE tbl_name DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Las instrucciones de creación de tabla no pueden contener opciones CHECK o de tabla.
Durante la sincronización de datos, las operaciones de Tabla 3 pueden causar incoherencia de datos entre las instancias HTAP y las instancias de TaurusDB. Deberías evitar estas operaciones.
No afectan a la consulta y el análisis de datos en instancias HTAP.
Tabla 3 Operaciones DDL que provocan incoherencia de datos Nombre de DDL
Ejemplo de SQL
Eliminar una clave principal
ALTER TABLE tbl_name DROP PRIMARY KEY;
Agregar una clave principal
ALTER TABLE {db}.t1 ADD PRIMARY KEY (id);
Agregar y eliminar una clave principal
ALTER TABLE tbl_name DROP PRIMARY KEY, ADD PRIMARY KEY (column);
Establecer una clave principal en NULL
ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type;
Cambiar el tipo de una clave principal
ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type not null;
Agregar una columna
NOTA:Se pueden agregar columnas comunes. Si las columnas contienen los siguientes valores predeterminados, no se pueden agregar.
- Funciones, cadenas de caracteres e identificadores que no se pueden encontrar en instancias de HTAP
ALTER TABLE tbl_name ADD COLUMN column_name column_definition
c VARCHAR(10) DEFAULT (CONCAT('1', '2'));
Establecer el valor predeterminado de una columna
NOTA:Si las columnas contienen los siguientes valores predeterminados, no se pueden restablecer los valores predeterminados de las columnas.
- Funciones, cadenas de caracteres e identificadores que no se pueden encontrar en instancias de HTAP
ALTER TABLE tbl_name ALTER COLUMN col SET DEFAULT literal;
Cambiar NULL en las tablas a NOT NULL
ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NOT NULL;
Cambiar el nombre y el tipo de columna al mismo tiempo
ALTER TABLE t1 CHANGE b b1 VARCHAR(100);
Cambiar el nombre de una columna
ALTER TABLE t1 RENAME COLUMN a TO b;
Crear una tabla sin una clave principal
ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)STORED);
Adición de una columna derivada STORED
ALTER TABLE {db}.t1 ADD COLUMN (st2 INT GENERATED ALWAYS AS (c2 + 2)STORED), ALGORITHM=COPY;
Adición de una columna derivada VIRTUAL
ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)VIRTUAL);
Borrar una partición de tabla
ALTER TABLE {db}.tp DROP PARTITION p4;
Descartar una partición de tabla
ALTER TABLE {db}.tp DISCARD PARTITION p2 TABLESPACE;
Importar una partición de tabla
ALTER TABLE {db}.tp IMPORT PARTITION p2 TABLESPACE;
Truncar una partición de tabla
ALTER TABLE {db}.tp TRUNCATE PARTITION p2;
Truncar una tabla particionada
TRUNCATE {db}.tp;
Combinar particiones de tabla
ALTER TABLE {db}.tp_hash COALESCE PARTITION 2;
Reorganizar particiones de tabla
ALTER TABLE {db}.tp REORGANIZE PARTITION p0,p1,p2,p3 INTO ( ... );
Intercambiar particiones de tabla
ALTER TABLE {db}.tp EXCHANGE PARTITION p0 WITH TABLE {db}.tp2;
Quitar una partición de tabla
ALTER TABLE {db}.tp REMOVE PARTITIONING;
Uso de una cláusula REPLACE
CREATE OR REPLACE TABLE;
Cambio de nombre de una vista
RENAME TABLE old_view_name TO new_view_name;
Tabla 4 Operaciones DDL que se han ignorado durante la sincronización (sin impacto) Nombre de DDL
Ejemplo de SQL
Agregar un índice
ALTER TABLE tbl_name ADD INDEX name;
Cambio de nombre de un índice
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name;
Borrar un índice
DROP INDEX name ON table;
Agregar un índice de texto completo
Nombre CREATE FULLTEXT INDEX ON table(columna);
Agregar un índice espacial
ALTER TABLE geom ADD SPATIAL INDEX(g);
Modificación del tipo de un índice
ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE;
Agregar una restricción de índice
ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING BTREE (column);
ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING HASH(column);
Optimizar una tabla
OPTIMIZE TABLE tbl_name;
Regeneración de una tabla mediante la opción FORCE
ALTER TABLE tbl_name FORCE;
Cambio de nombre de un tablespace
ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;
Agregar una clave externa
ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY index (col1)REFERENCES tbl2(col2) referential_actions;
Eliminar una clave externa
ALTER TABLE tbl DROP FOREIGN KEY fk_name;
- Sentencias DDL que se pueden sincronizar
- Los nombres de las bases de datos y tablas que se van a sincronizar no pueden contener caracteres chinos.
- Para mejorar el rendimiento, puede utilizar los siguientes métodos para optimizar las consultas:
- Simplifique las sentencias SQL reduciendo los cálculos no válidos, eliminando los campos no utilizados y evitando SELECT.
- En lugar de consultar todas las columnas, elimine las que no sean necesarias.
- Las tablas que se van a sincronizar utilizan el motor OLAP y el modelo de clave principal de forma predeterminada.
- Estas son las descripciones y restricciones de la sincronización de vistas:
- Por defecto, las vistas no están sincronizadas. Para sincronizarlos, debe configurar sync_view en true al crear una tarea de sincronización.
- Al seleccionar una vista de sincronización, el nombre de la base de datos de origen debe ser el mismo que el nombre de la base de datos de destino.
- Algunas sentencias DDL relacionadas con vistas no se pueden sincronizar, por ejemplo, la sentencia rename table utilizada para cambiar el nombre de una vista.
- Una vista entre bases de datos puede no sincronizarse si las bases de datos dependientes no están sincronizadas.
- Si en una vista se utiliza una función o sintaxis que no son compatibles con las instancias de HTAP, la vista no se puede sincronizar.
- Si una vista no se puede sincronizar, puede crearla manualmente en una instancia HTAP después de rectificar el error.
- Cuando la sincronización de la vista falla, se reportan alarmas e información de error. Puede conectarse a una instancia de HTAP y ejecutar show sync job para ver SyncErrViews (vistas que no se pudieron sincronizar) y SyncErrMsg (información detallada de errores). Para borrar alarmas e información de errores, ejecute alter sync synchronization_task_name setting "SyncErrMsg" = "", "SyncErrViews"="";
- Los errores de sincronización de vista no afectan a la sincronización de datos de tabla.
- La versión del núcleo de su instancia de TaurusDB debe ser 2.0.57.240900 o posterior.
- Después de conectarse a una instancia HTAP estándar, ejecute el siguiente comando para ver las bases de datos sincronizadas de TaurusDB a la instancia HTAP estándar y el estado de sincronización.