Frigivelse af det distribuerede DBMS TiDB 3.0

Ledig frigivelse af et distribueret DBMS TiDB 3.0, udviklet under indflydelse af Googles teknologier Spanner и F1. TiDB tilhører kategorien af ​​hybride HTAP (Hybrid Transactional/Analytical Processing) systemer, der både er i stand til at levere realtidstransaktioner (OLTP) og behandle analytiske forespørgsler. Projektet er skrevet på Go sprog og distribueret af licenseret under Apache 2.0.

Funktioner i TiDB:

  • SQL-understøttelse og levering af en klientgrænseflade, der er kompatibel med MySQL-protokollen, hvilket forenkler tilpasningen af ​​eksisterende applikationer skrevet til MySQL til TiDB, og tillader også brugen af ​​almindelige klientbiblioteker. Ud over MySQL-protokollen kan du bruge en JSON-baseret API og en forbindelse til Spark for at få adgang til DBMS.
  • SQL-funktioner understøtter indekser, aggregerede funktioner, GROUP BY, ORDER BY, DISTINCT udtryk, fletninger (LEFT JOIN / RIGHT JOIN / CROSS JOIN), visninger, vinduesfunktioner og underforespørgsler. De medfølgende muligheder er tilstrækkelige til at organisere arbejdet med TiDB for sådanne webapplikationer som PhpMyAdmin, Gogs og WordPress;
  • Horisontal skalerbarhed og fejltolerance: Lagerstørrelse og processorkraft kan øges ved blot at forbinde nye noder. Data fordeles på tværs af noder med redundans, hvilket gør det muligt at fortsætte driften, hvis individuelle noder svigter. Fejl håndteres automatisk.
  • Systemet garanterer konsistens, og for klientsoftwaren ser det ud som ét stort DBMS, på trods af at data fra mange noder faktisk tiltrækkes for at gennemføre transaktionen.
  • Til fysisk lagring af data på noder kan forskellige backends bruges, for eksempel lokale storage-motorer GoLevelDB og BoltDB eller vores egen distribuerede storage-motor TiKV.
  • Muligheden for asynkront at ændre lagerskemaet, så du kan tilføje kolonner og indekser på farten uden at stoppe behandlingen af ​​igangværende operationer.

The main innovationer:

  • Der er arbejdet på at øge produktiviteten. I Sysbench-testen er release 3.0 2.1 gange hurtigere end 1.5-grenen, når der udføres valg- og opdateringsoperationer, og i TPC-C-testen 4.5 gange. Optimeringer har påvirket forskellige typer forespørgsler, herunder IN, DO og NOT EXISTS underforespørgsler, table merging (JOIN) operationer, brugen af ​​indekser og meget mere;
    Frigivelse af det distribuerede DBMS TiDB 3.0Frigivelse af det distribuerede DBMS TiDB 3.0

  • Tilføjet en ny TiFlash-lagringsmotor, der giver mulighed for højere ydeevne ved løsning af analytiske problemer (OLAP) takket være søjleopbevaring. TiFlash komplementerer det tidligere tilbudte TiKV-lager, som lagrer rækkevise data i et nøgle/værdi-format og er mere ideel til transaktionsbehandlingsopgaver (OLTP). TiFlash arbejder side om side med TiKV, og data bliver fortsat replikeret til TiKV som før ved at bruge Raft-protokollen til at bestemme konsensus, men for hver gruppe af Raft-replikaer oprettes en ekstra replika, som bruges i TiFlash. Denne tilgang giver mulighed for bedre ressourcedeling mellem OLTP- og OLAP-opgaver og gør også transaktionsdata øjeblikkeligt tilgængelige for analytiske forespørgsler;

    Frigivelse af det distribuerede DBMS TiDB 3.0

  • Der er implementeret en distribueret skraldeopsamler, som markant kan øge hastigheden af ​​affaldsindsamling i store klynger og forbedre stabiliteten;
  • En eksperimentel implementering af rollebaseret adgangskontrol (RBAC) er blevet tilføjet. Det er også muligt at indstille adgangsrettigheder til operationerne ANALYSE, BRUG, INDSTIL GLOBAL og VIS PROCESLISTE;
  • Tilføjet muligheden for at bruge SQL-udtryk til at udtrække langsomme forespørgsler fra loggen;
  • En mekanisme til hurtigt at gendanne slettede tabeller er blevet implementeret, hvilket giver dig mulighed for at gendanne utilsigtet slettede data;
  • Formatet af registrerede logfiler er blevet forenet;
  • Tilføjet understøttelse af pessimistisk låsetilstand, som gør transaktionsbehandling mere lig MySQL;
  • Tilføjet understøttelse af vinduesfunktioner (vinduefunktioner eller analytiske funktioner) kompatibel med MySQL 8.0. Vinduesfunktioner giver dig mulighed for at udføre beregninger for hver forespørgselsrække ved hjælp af andre rækker. I modsætning til aggregerede funktioner, som kollapser et grupperet sæt rækker til en enkelt række, aggregeres vinduesfunktioner baseret på indholdet af et "vindue", som omfatter en eller flere rækker fra resultatsættet. Blandt de implementerede vinduesfunktioner:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK og ROW_NUMBER;

  • Tilføjet eksperimentel støtte til visninger (VIEW);
  • Partitioneringssystemet er blevet forbedret, muligheden for at distribuere data i sektioner baseret på en række værdier eller hashes er blevet tilføjet;
  • En ramme til udvikling af plugins er blevet tilføjet, for eksempel er plugins allerede blevet forberedt til at bruge en IP-hvidliste eller vedligeholde en revisionslog;
  • Eksperimentel support er blevet leveret til funktionen "EXPLAIN ANALYZE" til at konstruere en eksekveringsplan for en SQL-forespørgsel (SQL Plan Management);
  • Tilføjet next_row_id kommando for at få ID'et for den næste række;
  • Tilføjet nye indbyggede funktioner JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK ,COALESCE og NAME_CONST.

Kilde: opennet.ru

Tilføj en kommentar