lanzamiento de base de datos distribuida , desarrollada inspirándose en tecnologías de Google y . TiDB pertenece a la categoría de sistemas híbridos HTAP (Procesamiento Híbrido Transaccional/Analítico), capaces de llevar a cabo tanto transacciones en tiempo real (OLTP) como procesamiento de consultas analíticas. El proyecto está escrito en el lenguaje Go y bajo la licencia Apache 2.0.
Características de TiDB:
- Soporte para SQL y una interfaz de cliente compatible con el protocolo MySQL, lo que facilita la adaptación de las aplicaciones existentes para TiDB escritas para MySQL, y permite utilizar bibliotecas de clientes ampliamente utilizadas. Además del protocolo MySQL, se puede usar una API basada en JSON y un conector para Spark para acceder a la base de datos.
- Entre las capacidades de SQL se incluyen índices, funciones de agregación, expresiones GROUP BY, ORDER BY, DISTINCT, uniones (LEFT JOIN / RIGHT JOIN / CROSS JOIN), vistas, funciones de ventana y subconsultas. Las capacidades ofrecidas son suficientes para implementar aplicaciones web que trabajen con TiDB, como PhpMyAdmin, y WordPress;
- Posibilidad de escalabilidad horizontal y garantizar la tolerancia a fallos: el tamaño del almacenamiento y la potencia computacional se pueden aumentar fácilmente al conectar nuevos nodos. Los datos se distribuyen entre nodos con redundancia, lo que permite continuar funcionando en caso de fallos de nodos individuales. Los fallos se gestionan automáticamente.
- El sistema garantiza la coherencia y se presenta como una gran base de datos para el software cliente, a pesar de que, de hecho, para llevar a cabo una transacción se obtienen datos de múltiples nodos.
- Para el almacenamiento físico de datos en los nodos se pueden utilizar diferentes backends, como los motores de almacenamiento locales GoLevelDB y BoltDB o motores de almacenamiento distribuido propios. y TiFlash. TiKV almacena datos en formato clave/valor y es más óptimo para tareas de procesamiento de transacciones (OLTP). TiFlash almacena datos en columnas y permite lograr un mayor rendimiento en tareas analíticas (OLAP).
- Habilidad para realizar cambios en el esquema de almacenamiento de forma asíncrona, permitiendo agregar columnas e índices sobre la marcha sin detener el procesamiento de operaciones actuales.
En esta nueva versión:
- Por defecto, está habilitado el recolector de basura distribuido Green GC, que permite aumentar significativamente la velocidad de recolección de basura en grandes clústeres y mejorar la estabilidad del funcionamiento.
- Se ha añadido soporte para grandes transacciones, cuyo tamaño está limitado prácticamente al tamaño de la memoria física. El límite de tamaño para una transacción ha aumentado de 100 MB a 10 GB.
- Se ha añadido soporte para los comandos BACKUP y RESTORE para copias de seguridad.
- Se ha añadido la posibilidad de establecer bloqueos en tablas.
- Se ha añadido un mecanismo de aislamiento de transacciones compatible con MySQL a nivel de lectura (READ COMMITTED).
- En el comando «ADMIN SHOW DDL JOBS» se ha añadido soporte para expresiones LIKE y WHERE.
- Se ha añadido el parámetro oom-use-tmp-storage, que permite utilizar archivos temporales para almacenar en caché resultados intermedios en caso de falta de memoria RAM.
- Se ha añadido la palabra clave Random para asignar valores aleatorios a los atributos.
- En el comando LOAD DATA ahora hay posibilidad de usar expresiones hexadecimales y binarias.
- Se han añadido 15 parámetros para controlar el comportamiento del optimizador.
- Se han añadido herramientas para diagnosticar el rendimiento de las consultas SQL. Se ha añadido un registro de consultas lentas, disponible a través de las tablas del sistema SLOW_QUERY / CLUSTER_SLOW_QUERY.
- Se ha añadido soporte para funciones para trabajar con secuencias.
- Se ha añadido la posibilidad de cambiar dinámicamente los parámetros de configuración, leídos desde PD (Placement Driver, servidor de gestión del clúster). Se ha añadido la opción de usar la expresión «SET CONFIG» para cambiar la configuración de los nodos PD/TiKV.
- Se ha añadido la configuración max-server-connections para limitar el número máximo de conexiones simultáneas al servidor (por defecto 4096).
- Se ha aumentado el rendimiento en situaciones donde las columnas solicitadas están completamente cubiertas por índices.
- Se ha añadido una optimización de consultas basada en la fusión de índices.
- Se ha mejorado el rendimiento de las operaciones con rangos de valores;
- Se ha reducido la carga en la CPU mediante la caché de los resultados de las consultas a los índices y la eliminación de duplicados;
- Se ha añadido soporte para un nuevo formato de almacenamiento de cadenas que permite aumentar el rendimiento de las tablas con un gran número de columnas;
- La función GROUP_CONCAT ahora soporta la expresión «ORDER BY»;
- Se ha añadido la posibilidad de extraer datos del registro de TiFlash a través de SQL;
- En el comando «RECOVER TABLE» se ha implementado el soporte para la recuperación de tablas truncadas;
- Se ha añadido una tabla del sistema DDLJobs para solicitar detalles sobre la ejecución de trabajos DDL;
- Se ha añadido la posibilidad de aplicar el comando SHOW CONFIG para mostrar la configuración de PD y TiKV;
- por defecto, caché de coprocessor;
- El número de goroutines en la fase de reintentos de compromiso ahora puede ser controlado mediante la configuración committer-concurrency;
- Se ha añadido la posibilidad de mostrar regiones de partición de tablas (table partition);
- En el tidb-server se ha añadido la posibilidad de limitar el tamaño del almacenamiento temporal;
- Se ha añadido soporte para las operaciones «insert into tbl_name partition(partition_name_list)» y «replace into tbl_name partition(partition_name_list)»;
- En el hash utilizado para la partición se ha añadido el soporte para la filtración basada en el criterio «is null»;
- Para las tablas particionadas se ha añadido el soporte para operaciones de verificación, limpieza y recuperación de índices.
Fuente: opennet.ru
