Tecnologías principales de GaussDB(DWS)

GaussDB(DWS) adopta una arquitectura distribuida que no comparte recursos, admite el almacenamiento híbrido en filas y columnas y es altamente disponible, confiable, seguro e inteligente.

Arquitectura sin recursos compartidos

     Cada instancia de base de datos de GaussDB(DWS) (Nodo de datos o DN) tiene su propia CPU, memoria y almacenamiento.Ninguno de estos recursos se comparte.

     La arquitectura de MPP sin recursos compartidos garantiza el acceso completo a recursos de CPU, E/S y memoria, y el rendimiento mejora linealmente a medida que el clúster se escala de manera horizontal; de este modo, se admiten hasta petabytes de datos.

Almacenamiento distribuido

      GaussDB(DWS) fragmenta horizontalmente las tablas en shards y distribuye tuplas entre los nodos de acuerdo con una política de distribución configurada. En una consulta, puede filtrar los datos que no sean necesarios para encontrar rápidamente los datos que usted necesita.

      GaussDB(DWS) también fragmenta los datos de las tablas en rangos que no se superponen.

      El particionamiento proporciona las ventajas que se describen en la siguiente tabla.

Tabla 2-1 Ventajas del particionamiento

Escenario
Ventaja

Las filas a las que se accede con frecuencia se localizan en solo una o en pocas particiones.

El alcance de la búsqueda se reduce significativamente y se mejora el rendimiento de acceso.

La mayoría de los registros de una partición necesitan ser consultados o actualizados.

El rendimiento mejora significativamente porque solo se analizan las particiones específicas en lugar de toda la tabla.

Los registros que necesitan ser cargados o eliminados por lotes se encuentran en solo una o en pocas particiones.

El rendimiento del procesamiento mejora porque solo se accede a pocas particiones o se eliminan pocas de estas. Puede evitar operaciones aisladas.

La creación de particiones de datos proporciona los siguientes beneficios:

  • Mejor capacidad de gestión

     Las tablas e índices se dividen en unidades más pequeñas y más fáciles de gestionar que permiten a los administradores de bases de datos gestionar datos en función de particiones. Se puede realizar mantenimiento en partes específicas de una tabla.

  • Eliminación más rápida

     La eliminación de una partición es más rápida y eficiente que la eliminación de filas.

  • Consultas más rápidas

     Para limitar el alcance de los datos que se van a verificar o sobre los que se va a operar, se pueden adoptar los siguientes enfoques:

     ­-Reducción de particiones:

     La reducción o eliminación de particiones implica que los nodos coordinadores (CN) tendrán que analizar menos particiones. Esta función mejora considerablemente el rendimiento de las consultas.

     ­-Unión basada en particiones:

     Las uniones basadas en particiones (partition-wise joins) pueden mejorar el rendimiento si se unen dos tablas y al menos una de ellas está particionada en la clave de join. Este tipo de operaciones dividen una unión grande en uniones más pequeñas de conjuntos de datos “idénticos”. “Idéntico” implica que el conjunto de valores de claves para la creación de particiones es el mismo en ambos lados de la unión. Solo se utilizan estos conjuntos de datos para la unión.

Cómputo completamente paralelo

     GaussDB(DWS) usa un conjunto de motores de ejecución distribuidos para utilizar plenamente los recursos y maximizar el rendimiento.

Figura 2-1 Cómputo completamente paralelo de GaussDB(DWS)

A continuación, se mencionan las principales tecnologías del cómputo completamente paralelo de GaussDB(DWS) que aparecen en la imagen anterior:

  • MPP: paralelismo de nodos

     El marco de ejecución distribuida con el protocolo TCP de espacio de usuario VPP permite que más de 1,000 servidores funcionen en paralelo con decenas de miles de CPU.

  • Multiprocesamiento simétrico (SMP): paralelismo de operadores

     Una instrucción SQL se puede dividir en múltiples subprocesos que se ejecutan en paralelo. Para acelerar las operaciones se pueden adoptar procesadores multinúcleo y el acceso no uniforme a memoria (NUMA).

  • Una instrucción, múltiples datos (SIMD): paralelismo de instrucciones

     Se puede ejecutar una instrucción x86 o Arm en registros de datos por lotes.

  • Compilación dinámica de máquinas virtuales de bajo nivel (LLVM)

     Esta compilación se puede utilizar para generar código de máquinas basado en funciones clave, con el objetivo de reducir las instrucciones necesarias para la ejecución SQL y acelerar el procesamiento.

Almacenamiento híbrido en columnas y en filas, y ejecución vectorizada

     En GaussDB(DWS), puede utilizar el almacenamiento en columnas o en filas para su tabla, como se muestra en la siguiente figura.

Figura 2-2 Motor de almacenamiento híbrido en columnas o filas de GaussDB(DWS)

     El almacenamiento en columnas le permite comprimir datos antiguos e inactivos para liberar espacio, lo que reduce los costos de adquisición y O&M de equipos. La compresión por almacenamiento en columnas de GaussDB(DWS) admite algoritmos tales como la codificación delta, la compresión de diccionarios, RLE, LZ4 y ZLIB, y permite seleccionar algoritmos de compresión automáticamente de acuerdo con las características de sus datos. La relación de compresión promedio es 7:1. Los datos comprimidos son transparentes para los servicios y se puede acceder a ellos sin descomprimirlos, lo que reduce en gran medida el tiempo de espera que toma acceder a los datos históricos.

     El ejecutor vectorizado de GaussDB(DWS) puede procesar múltiples tuplas a la vez, lo cual implica una gran mejora en la eficiencia. Cuando consulta tablas de almacenamiento en filas y en columnas al mismo tiempo, GaussDB(DWS) puede alternar automáticamente entre los motores de almacenamiento en filas y en columnas para obtener un rendimiento óptimo.

Alta disponibilidad primaria/secundaria/en standby

     En un sistema convencional de dos copias, que consiste en un servidor principal y uno en standby, si un servidor presenta fallas, el otro continuará proporcionando servicios, pero solo puede mantener una copia de los datos. Si el otro servidor también se daña, esta copia se perderá de manera permanente. Puede crear un sistema de tres copias para evitar este problema, pero necesitará invertir más en almacenamiento. Para reducir los costos de almacenamiento, GaussDB(DWS) cuenta con un mecanismo de HA principal/en standby/secundario. Incluso si un servidor se daña, habrá dos copias de datos disponibles. Este sistema permite contar básicamente con el mismo nivel de confiabilidad de datos que el que ofrece el mecanismo de tres copias, pero con solo 2/3 del almacenamiento necesario.

Figura 2-3 Replicación de servidores principales/en standby/secundarios

     Como se muestra en esta figura, GaussDB(DWS) despliega servidores principales, en standby y secundarios. Cuando funcionan correctamente, el servidor principal y el servidor en standby realizan una sincronización sólida a través de flujos de registros y flujos de páginas de datos. El servidor principal se conecta al servidor secundario, pero no le envía registros ni datos, por lo que el secundario no utiliza todos los recursos de almacenamiento. Si el servidor en standby se daña, el servidor principal enviará al servidor secundario todos los registros y datos que no se hayan sincronizado. A continuación, el servidor principal inicia una sincronización sólida con el secundario. Esta conmutación se realiza en los kernels y no afecta las transacciones. No se producirán errores ni problemas de incoherencia.

     Si el servidor principal se daña, el componente de gestión de clústeres convertirá el servidor en standby en servidor principal. El nuevo servidor principal iniciará una sincronización sólida con el servidor secundario. De esta manera, si uno de los nodos de datos (DN) de un grupo se daña, dos copias de datos seguirán estando disponibles, lo cual garantizará la confiabilidad de los datos.

Escalamiento horizontal en línea

     Un clúster de GaussDB(DWS) puede tener hasta 2,048 nodos. Sus capacidades de almacenamiento y cómputo se pueden mejorar linealmente al agregar nodos.

     La tecnología de grupos de nodos de GaussDB(DWS) permite el escalamiento horizontal de múltiples tablas en paralelo, con una velocidad de hasta 400 GB por hora en cada nodo nuevo. La siguiente figura muestra el proceso de escalamiento horizontal.

Figura 2-4 Proceso de escalamiento horizontal

El escalamiento horizontal de GaussDB(DWS) ofrece las siguientes ventajas:

  • Continuidad del servicio

    La importación y las consultas de datos no se interrumpen durante el escalamiento horizontal.

  • Escalamiento horizontal en paralelo de múltiples tablas y hashing coherente

     El hashing coherente minimiza la cantidad de datos que se migra durante la redistribución.

     Se pueden redistribuir múltiples tablas en paralelo y la la secuencia de redistribución se puede especificar.

     También se puede consultar el progreso del escalamiento horizontal.

  • Incremento lineal del rendimiento

     GaussDB(DWS) cuenta con una arquitectura distribuida totalmente en paralelo. El rendimiento de carga de datos, el rendimiento del procesamiento de servicios y el almacenamiento de un clúster aumentan linealmente a medida que se agregan nodos.

Seguridad transparente

     GaussDB(DWS) admite la encriptación transparente de datos (TDE), y la experiencia del usuario no se ve afectada por la encriptación ni la desencriptación. Cada clúster cuenta con una clave de encriptación de clústeres (CEK) y cada base de datos se encripta utilizando una clave de encriptación de base de datos independiente (DEK).Una DEK se encripta por medio de una CEK para mejorar la seguridad. Puede utilizar Kerberos para solicitar, encriptar y desencriptar claves, y para configurar algoritmos de encriptación mediante elementos de configuración de forma unificada. Actualmente, se admiten los algoritmos AES y SM4. El algoritmo SM4 admite la aceleración de hardware en chips de Hi1620 y versiones posteriores.

     Le ayudamos a extraer valor con la analítica de big data y, al mismo tiempo, a proteger la privacidad. Puede definir políticas para enmascarar determinadas columnas y proteger datos confidenciales. Una vez aplicada una política de enmascaramiento de datos, solo el administrador y el propietario de la tabla pueden acceder a los datos originales. El enmascaramiento no afecta el procesamiento de datos.Los datos enmascarados aún se pueden usar para el cómputo. Los datos solo se enmascararán cuando la base de datos proporcione resultados.

    La siguiente figura muestra un ejemplo. El salario, la dirección de correo electrónico y el número de teléfono celular de los empleados son datos confidenciales. Dichos datos se convierten en letras “x” para proteger la privacidad.

Figura 2-5 Resultados del enmascaramiento de datos

Tecnologías clave utilizadas para el enmascaramiento de datos:

  • Alcance definido por el usuario

     Puede ejecutar instrucciones DDL para aplicar políticas de enmascaramiento de datos a columnas específicas.

  • Políticas definidas por el usuario

     Puede personalizar las funciones de enmascaramiento de datos de acuerdo con funciones integradas de enmascaramiento de tipo de fecha/hora, numérico y de caracteres.

  • Control de acceso

     Una vez enmascarados los datos, solo el administrador y el propietario de la tabla pueden ver los datos.

  • Disponibilidad de los datos

     Los datos enmascarados se pueden usar para el cómputo, pero se enmascararán cuando la base de datos proporcione resultados.

Autodiagnóstico SQL

     El ajuste del rendimiento de SQL convencional, especialmente en bases de datos distribuidas, es complicado y difícil. La tareas de resolución de problemas efectivas requieren una amplia experiencia y habilidades profesionales. GaussDB(DWS) analiza de forma inteligente los problemas de rendimiento durante la ejecución de SQL, y registra y presenta los problemas de una manera fácil de entender. Puede aprender fácilmente cómo optimizar sus instrucciones SQL para mejorar el rendimiento.

Figura 2-6 Cómo funciona el autodiagnóstico SQL