Lanzamiento del DBMS distribuido TiDB 3.0

Disponible lanzamiento de un DBMS distribuido TiDB 3.0, desarrollado bajo la influencia de las tecnologías de Google. Llave и F1. TiDB pertenece a la categoría de sistemas híbridos HTAP (Hybrid Transactional/Analytical Processing), capaces tanto de proporcionar transacciones en tiempo real (OLTP) como de procesar consultas analíticas. El proyecto está escrito en Go y distribuido por licenciado bajo Apache 2.0.

Características de TiDB:

  • Soporte SQL y provisión de una interfaz de cliente compatible con el protocolo MySQL, que simplifica la adaptación de aplicaciones existentes escritas para MySQL a TiDB y también permite el uso de bibliotecas de cliente comunes. Además del protocolo MySQL, puede utilizar una API basada en JSON y un conector para Spark para acceder al DBMS.
  • Las características de SQL admiten índices, funciones agregadas, GROUP BY, ORDER BY, expresiones DISTINCT, fusiones (UNIÓN IZQUIERDA / UNIÓN DERECHA / UNIÓN CRUZADA), vistas, funciones de ventana y subconsultas. Las capacidades proporcionadas son suficientes para organizar el trabajo con TiDB para aplicaciones web como PhpMyAdmin, Gogs y WordPress;
  • Escalabilidad horizontal y tolerancia a fallas: el tamaño del almacenamiento y la potencia de procesamiento se pueden aumentar simplemente conectando nuevos nodos. Los datos se distribuyen entre nodos con redundancia, lo que permite que la operación continúe si fallan los nodos individuales. Las fallas se manejan automáticamente.
  • El sistema garantiza coherencia y para el software del cliente parece un DBMS grande, a pesar de que, en realidad, se atraen datos de muchos nodos para completar la transacción.
  • Para almacenar físicamente datos en nodos, se pueden utilizar diferentes backends, por ejemplo, los motores de almacenamiento local GoLevelDB y BoltDB o nuestro propio motor de almacenamiento distribuido. TiKV.
  • La capacidad de cambiar de forma asincrónica el esquema de almacenamiento, lo que le permite agregar columnas e índices sobre la marcha sin detener el procesamiento de las operaciones en curso.

El principal innovaciones:

  • Se han realizado trabajos para aumentar la productividad. En la prueba Sysbench, la versión 3.0 es 2.1 veces más rápida que la rama 1.5 al realizar operaciones de selección y actualización, y en la prueba TPC-C 4.5 veces. Las optimizaciones han afectado varios tipos de consultas, incluidas las subconsultas IN, DO y NOT EXISTS, operaciones de combinación de tablas (JOIN), el uso de índices y mucho más;
    Lanzamiento del DBMS distribuido TiDB 3.0Lanzamiento del DBMS distribuido TiDB 3.0

  • Se agregó un nuevo motor de almacenamiento TiFlash que permite un mayor rendimiento en la resolución de problemas analíticos (OLAP) gracias al almacenamiento en columnas. TiFlash complementa el almacenamiento TiKV ofrecido anteriormente, que almacena datos por filas en un formato clave/valor y es más ideal para tareas de procesamiento de transacciones (OLTP). TiFlash trabaja codo a codo con TiKV y los datos continúan replegándose en TiKV como antes usando el protocolo Raft para determinar el consenso, pero para cada grupo de réplicas de Raft se crea una réplica adicional que se usa en TiFlash. Este enfoque permite compartir mejor los recursos entre las tareas OLTP y OLAP y también hace que los datos de las transacciones estén disponibles instantáneamente para consultas analíticas;

    Lanzamiento del DBMS distribuido TiDB 3.0

  • Se implementó un recolector de basura distribuido, que puede aumentar significativamente la velocidad de recolección de basura en grupos grandes y mejorar la estabilidad;
  • Se ha agregado una implementación experimental de control de acceso basado en roles (RBAC). También es posible configurar derechos de acceso para las operaciones ANALIZAR, USAR, CONFIGURAR GLOBAL y MOSTRAR LISTA DE PROCESOS;
  • Se agregó la capacidad de usar expresiones SQL para extraer consultas lentas del registro;
  • Se ha implementado un mecanismo para restaurar rápidamente tablas eliminadas, lo que le permite restaurar datos eliminados accidentalmente;
  • Se ha unificado el formato de las bitácoras grabadas;
  • Se agregó soporte para el modo de bloqueo pesimista, lo que hace que el procesamiento de transacciones sea más similar a MySQL;
  • Se agregó soporte para funciones de ventana (funciones de ventana o funciones analíticas) compatibles con MySQL 8.0. Las funciones de ventana le permiten realizar cálculos para cada fila de consulta utilizando otras filas. A diferencia de las funciones agregadas, que colapsan un conjunto agrupado de filas en una sola fila, las funciones de ventana se agregan en función del contenido de una "ventana", que incluye una o más filas del conjunto de resultados. Entre las funciones de ventana implementadas:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK y ROW_NUMBER;

  • Se agregó soporte experimental para vistas (VER);
  • Se mejoró el sistema de partición, se agregó la capacidad de distribuir datos en secciones según un rango de valores o hashes;
  • Se ha agregado un marco para desarrollar complementos; por ejemplo, ya se han preparado complementos para usar una lista blanca de IP o mantener un registro de auditoría;
  • Se ha proporcionado soporte experimental para la función “EXPLICAR ANALIZAR” para construir un plan de ejecución para una consulta SQL (Gestión del Plan SQL);
  • Se agregó el comando next_row_id para obtener el ID de la siguiente fila;
  • Se agregaron nuevas funciones integradas JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE y NAME_CONST.

Fuente: opennet.ru

Añadir un comentario