Version du SGBD distribué TiDB 3.0

Disponible version distribuée du SGBD TiDB 3.0développé sous l'influence des technologies Google clé à molette и F1. TiDB appartient à la catégorie des systèmes hybrides HTAP (Hybrid Transactional/Analytical Processing) capables à la fois de fournir des transactions en temps réel (OLTP) et de traiter des requêtes analytiques. Le projet est écrit en Go et distribué par sous licence Apache 2.0.

Fonctionnalités TiDB :

  • Prise en charge de SQL et mise à disposition d'une interface client compatible avec le protocole MySQL, ce qui facilite l'adaptation d'applications existantes écrites pour MySQL à TiDB, et vous permet également d'utiliser des bibliothèques clientes communes. En plus du protocole MySQL, vous pouvez utiliser l'API basée sur JSON et le connecteur pour Spark pour accéder au SGBD.
  • Parmi les fonctionnalités de SQL, les index, les fonctions d'agrégation, les expressions GROUP BY, ORDER BY, DISTINCT, les fusions (LEFT JOIN / RIGHT JOIN / CROSS JOIN), les vues, les fonctions de fenêtre et les sous-requêtes sont prises en charge. Les opportunités fournies sont suffisantes pour organiser le travail avec TiDB d'applications Web telles que PhpMyAdmin, Gogs et Wordpress ;
  • Évolutivité et résilience : la puissance de stockage et de traitement peut être augmentée simplement en ajoutant de nouveaux nœuds. Les données sont distribuées sur les nœuds avec redondance pour permettre aux opérations de se poursuivre si des nœuds individuels échouent. Les pannes sont gérées automatiquement.
  • Le système garantit la cohérence et ressemble à un grand SGBD pour le logiciel client, malgré le fait que, en fait, les données de nombreux nœuds sont impliquées pour compléter la transaction.
  • Pour stocker physiquement les données sur les nœuds, différents backends peuvent être utilisés, par exemple les moteurs de stockage locaux GoLevelDB et BoltDB ou notre propre moteur de stockage distribué. TiKV.
  • La possibilité de modifier de manière asynchrone le schéma de stockage, vous permettant d'ajouter des colonnes et des index à la volée sans arrêter le traitement des opérations en cours.

principal les innovations:

  • Des travaux ont été réalisés pour augmenter la productivité. Dans le test Sysbench, la version 3.0 est 2.1 fois plus rapide que la branche 1.5 lors de l'exécution des opérations de sélection et de mise à jour, et dans le test TPC-C 4.5 fois. Les optimisations ont affecté différents types de requêtes, notamment les sous-requêtes IN, DO et NOT EXISTS, les opérations de fusion de tables (JOIN), l'utilisation d'index et bien plus encore ;
    Version du SGBD distribué TiDB 3.0Version du SGBD distribué TiDB 3.0

  • Ajout d'un nouveau moteur de stockage TiFlash qui permet des performances plus élevées dans la résolution de problèmes analytiques (OLAP) grâce au stockage en colonnes. TiFlash complète le stockage TiKV précédemment proposé, qui stocke les données par ligne dans un format clé/valeur et est plus idéal pour les tâches de traitement des transactions (OLTP). TiFlash fonctionne côte à côte avec TiKV et les données continuent d'être répliquées sur TiKV comme avant en utilisant le protocole Raft pour déterminer le consensus, mais pour chaque groupe de répliques Raft, une réplique supplémentaire est créée et utilisée dans TiFlash. Cette approche permet un meilleur partage des ressources entre les tâches OLTP et OLAP, et rend également les données de transaction instantanément disponibles pour les requêtes analytiques ;

    Version du SGBD distribué TiDB 3.0

  • Un garbage collector distribué a été implémenté, ce qui peut augmenter considérablement la vitesse de garbage collection dans les grands clusters et améliorer la stabilité ;
  • Une implémentation expérimentale du contrôle d'accès basé sur les rôles (RBAC) a été ajoutée. Il est également possible de définir des droits d'accès pour les opérations ANALYZE, USE, SET GLOBAL et SHOW PROCESSLIST ;
  • Ajout de la possibilité d'utiliser des expressions SQL pour extraire les requêtes lentes du journal ;
  • Un mécanisme de restauration rapide des tables supprimées a été implémenté, vous permettant de restaurer des données supprimées accidentellement ;
  • Le format des journaux enregistrés a été unifié ;
  • Ajout de la prise en charge du mode de verrouillage pessimiste, qui rend le traitement des transactions plus similaire à MySQL ;
  • Ajout de la prise en charge des fonctions de fenêtre (fonctions de fenêtre ou fonctions analytiques) compatibles avec MySQL 8.0. Les fonctions de fenêtre vous permettent d'effectuer des calculs pour chaque ligne de requête en utilisant d'autres lignes. Contrairement aux fonctions d'agrégation, qui regroupent un ensemble de lignes en une seule ligne, les fonctions de fenêtre agrègent en fonction du contenu d'une « fenêtre », qui comprend une ou plusieurs lignes de l'ensemble de résultats. Parmi les fonctions de fenêtre implémentées :
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK et ROW_NUMBER ;

  • Ajout du support expérimental pour les vues (VIEW) ;
  • Le système de partitionnement a été amélioré, la possibilité de répartir les données en sections en fonction d'une plage de valeurs ou de hachages a été ajoutée ;
  • Un cadre de développement de plugins a été ajouté, par exemple, des plugins ont déjà été préparés pour utiliser une liste blanche IP ou maintenir un journal d'audit ;
  • Un support expérimental a été apporté à la fonction « EXPLAIN ANALYZE » pour construire un plan d'exécution d'une requête SQL (SQL Plan Management) ;
  • Ajout de la commande next_row_id pour obtenir l'ID de la ligne suivante ;
  • Ajout de nouvelles fonctions intégrées JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE et NAME_CONST.

Source: opennet.ru

Ajouter un commentaire