Lanzamento de DBMS distribuído TiDB 3.0

Dispoñible versión de DBMS distribuído TiDB 3.0desenvolvido baixo a influencia das tecnoloxías de Google Padiola и F1. TiDB pertence á categoría de sistemas híbridos HTAP (Hybrid Transactional/Analytical Processing) capaces tanto de proporcionar transaccións en tempo real (OLTP) como de procesar consultas analíticas. O proxecto está escrito en Go e distribuído por licenciado baixo Apache 2.0.

Características de TiDB:

  • Soporte para SQL e a provisión dunha interface de cliente compatible co protocolo MySQL, o que facilita a adaptación das aplicacións existentes escritas para MySQL a TiDB e tamén permite utilizar bibliotecas cliente comúns. Ademais do protocolo MySQL, pode usar a API baseada en JSON e o conector para Spark para acceder ao DBMS.
  • Das características de SQL, son compatibles os índices, as funcións agregadas, as expresións GROUP BY, ORDER BY, DISTINCT, combinacións (LEFT JOIN / RIGHT JOIN / CROSS JOIN), vistas, funcións de ventá e subconsultas. As oportunidades proporcionadas son suficientes para organizar o traballo con TiDB de aplicacións web como PhpMyAdmin, lentes e WordPress;
  • Ampliación e resistencia: a potencia de almacenamento e procesamento pódese ampliar simplemente engadindo novos nodos. Os datos distribúense entre nós con redundancia para permitir que as operacións continúen se fallan nodos individuais. Os fallos son tratados automaticamente.
  • O sistema garante a coherencia e parece un gran DBMS para o software do cliente, a pesar de que os datos de moitos nodos se usan realmente para completar a transacción.
  • Para almacenar fisicamente datos nos nodos, pódense usar diferentes backends, por exemplo, os motores de almacenamento local GoLevelDB e BoltDB ou o noso propio motor de almacenamento distribuído. TiKV.
  • A capacidade de cambiar de forma asíncrona o esquema de almacenamento, o que lle permite engadir columnas e índices sobre a marcha sen deter o procesamento das operacións en curso.

O principal innovacións:

  • Realizáronse traballos para aumentar a produtividade. Na proba de Sysbench, a versión 3.0 é 2.1 veces máis rápida que a rama 1.5 cando se realizan operacións de selección e actualización, e na proba TPC-C 4.5 veces. As optimizacións afectaron a varios tipos de consultas, incluíndo subconsultas IN, DO e NOT EXISTS, operacións de combinación de táboas (JOIN), o uso de índices e moito máis;
    Lanzamento de DBMS distribuído TiDB 3.0Lanzamento de DBMS distribuído TiDB 3.0

  • Engadiuse un novo motor de almacenamento TiFlash que permite un maior rendemento na resolución de problemas analíticos (OLAP) grazas ao almacenamento en columnas. TiFlash complementa o almacenamento TiKV ofrecido anteriormente, que almacena datos por filas nun formato clave/valor e é máis ideal para tarefas de procesamento de transaccións (OLTP). TiFlash funciona codo con codo con TiKV e os datos seguen a ser replicados en TiKV como antes usando o protocolo Raft para determinar o consenso, pero para cada grupo de réplicas de Raft créase unha réplica adicional que se usa en TiFlash. Este enfoque permite compartir mellor os recursos entre tarefas OLTP e OLAP, e tamén fai que os datos das transaccións estean dispoñibles ao instante para consultas analíticas;

    Lanzamento de DBMS distribuído TiDB 3.0

  • Implementouse un colector de lixo distribuído, que pode aumentar significativamente a velocidade de recollida de lixo en grandes clústeres e mellorar a estabilidade;
  • Engadiuse unha implementación experimental do control de acceso baseado en roles (RBAC). Tamén é posible establecer dereitos de acceso para as operacións ANALIZAR, USAR, ESTABLECER GLOBAL e MOSTRAR LISTA DE PROCESO;
  • Engadida a capacidade de usar expresións SQL para extraer consultas lentas do rexistro;
  • Implementouse un mecanismo para restaurar rapidamente as táboas eliminadas, que lle permite restaurar os datos eliminados accidentalmente;
  • Unificouse o formato dos rexistros rexistrados;
  • Engadido soporte para o modo de bloqueo pesimista, o que fai que o procesamento de transaccións sexa máis semellante ao de MySQL;
  • Engadido soporte para funcións de fiestra (funcións de fiestra ou funcións analíticas) compatibles con MySQL 8.0. As funcións de fiestra permítenche realizar cálculos en cada fila dunha consulta utilizando outras filas. A diferenza das funcións agregadas, que contraen un conxunto agrupado de filas nunha soa fila, as funcións de xanela agreganse en función do contido dunha "xanela", que inclúe unha ou máis filas do conxunto de resultados. Entre as funcións da fiestra implementadas:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK e ROW_NUMBER;

  • Engadido soporte experimental para vistas (VIEW);
  • Mellorouse o sistema de partición, engadiuse a capacidade de distribuír datos en seccións en función dun rango de valores ou hash;
  • Engadiuse un marco para desenvolver complementos, por exemplo, xa se prepararon complementos para usar unha lista branca de IP ou manter un rexistro de auditoría;
  • Proporcionouse soporte experimental para a función "EXPLICAR ANÁLISE" para construír un plan de execución para unha consulta SQL (Xestión do plan SQL);
  • Engadido o comando next_row_id para obter o ID da seguinte fila;
  • Engadíronse novas funcións integradas JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE e NAME_CONST.

Fonte: opennet.ru

Engadir un comentario