Release van de gedistribueerde DBMS TiDB 3.0

Beschikbaar release van een gedistribueerd DBMS TiDB 3.0, ontwikkeld onder invloed van Google-technologieën Moersleutel и F1. TiDB behoort tot de categorie hybride HTAP-systemen (Hybrid Transactional/Analytical Processing), die zowel realtime transacties (OLTP) kunnen leveren als analytische vragen kunnen verwerken. Het project is geschreven in Go en gedistribueerd door gelicentieerd onder Apache 2.0.

Kenmerken van TiDB:

  • SQL-ondersteuning en levering van een clientinterface die compatibel is met het MySQL-protocol, wat de aanpassing van bestaande applicaties die voor MySQL zijn geschreven aan TiDB vereenvoudigt, en ook het gebruik van gemeenschappelijke clientbibliotheken mogelijk maakt. Naast het MySQL-protocol kunt u een op JSON gebaseerde API en een connector voor Spark gebruiken om toegang te krijgen tot het DBMS.
  • SQL-functies ondersteunen indexen, aggregatiefuncties, GROUP BY, ORDER BY, DISTINCT-expressies, samenvoegingen (LEFT JOIN / RIGHT JOIN / CROSS JOIN), views, vensterfuncties en subquery's. De geboden mogelijkheden zijn voldoende om het werk met TiDB te organiseren voor webapplicaties als PhpMyAdmin, Gogs en WordPress;
  • Horizontale schaalbaarheid en fouttolerantie: de opslaggrootte en verwerkingskracht kunnen worden vergroot door simpelweg nieuwe knooppunten aan te sluiten. Gegevens worden redundant over knooppunten verdeeld, waardoor de werking kan worden voortgezet als individuele knooppunten uitvallen. Storingen worden automatisch afgehandeld.
  • Het systeem garandeert consistentie en voor de clientsoftware lijkt het op één groot DBMS, ondanks het feit dat er in feite gegevens van veel knooppunten worden aangetrokken om de transactie te voltooien.
  • Om data fysiek op knooppunten op te slaan kunnen verschillende backends worden gebruikt, bijvoorbeeld lokale opslagengines GoLevelDB en BoltDB of onze eigen gedistribueerde opslagengine TiKV.
  • De mogelijkheid om het opslagschema asynchroon te wijzigen, zodat u on-the-fly kolommen en indexen kunt toevoegen zonder de verwerking van lopende bewerkingen te stoppen.

De belangrijkste innovaties:

  • Er zijn werkzaamheden verricht om de productiviteit te verhogen. In de Sysbench-test is release 3.0 2.1 keer sneller dan de 1.5-vertakking bij het uitvoeren van selectie- en updatebewerkingen, en in de TPC-C-test 4.5 keer. Optimalisaties hebben invloed gehad op verschillende soorten query's, waaronder IN-, DO- en NOT EXISTS-subquery's, samenvoegbewerkingen van tabellen (JOIN), het gebruik van indexen en nog veel meer;
    Release van de gedistribueerde DBMS TiDB 3.0Release van de gedistribueerde DBMS TiDB 3.0

  • Een nieuwe TiFlash-opslagengine toegevoegd die betere prestaties mogelijk maakt bij het oplossen van analytische problemen (OLAP) dankzij kolomvormige opslag. TiFlash is een aanvulling op de eerder aangeboden TiKV-opslag, die rijgewijze gegevens opslaat in een sleutel/waarde-formaat en meer ideaal is voor transactieverwerkingstaken (OLTP). TiFlash werkt zij aan zij met TiKV en gegevens worden nog steeds naar TiKV gerepliceerd zoals voorheen met behulp van het Raft-protocol om consensus te bepalen, maar voor elke groep Raft-replica's wordt een extra replica gemaakt die in TiFlash wordt gebruikt. Deze aanpak zorgt voor een betere uitwisseling van bronnen tussen OLTP- en OLAP-taken, en maakt transactiegegevens ook direct beschikbaar voor analytische vragen;

    Release van de gedistribueerde DBMS TiDB 3.0

  • Er is een gedistribueerde garbage collector geïmplementeerd, die de snelheid van de garbage collection in grote clusters aanzienlijk kan verhogen en de stabiliteit kan verbeteren;
  • Een experimentele implementatie van Role-Based Access Control (RBAC) is toegevoegd. Het is ook mogelijk om toegangsrechten in te stellen voor de bewerkingen ANALYZE, USE, SET GLOBAL en SHOW PROCESSLIST;
  • De mogelijkheid toegevoegd om SQL-expressies te gebruiken om langzame zoekopdrachten uit het logboek te extraheren;
  • Er is een mechanisme geïmplementeerd voor het snel herstellen van verwijderde tabellen, waardoor u per ongeluk verwijderde gegevens kunt herstellen;
  • Het formaat van de opgenomen logs is uniform;
  • Ondersteuning toegevoegd voor de pessimistische vergrendelingsmodus, waardoor transactieverwerking meer op MySQL lijkt;
  • Ondersteuning toegevoegd voor vensterfuncties (vensterfuncties of analytische functies) compatibel met MySQL 8.0. Met vensterfuncties kunt u voor elke queryrij berekeningen uitvoeren met behulp van andere rijen. In tegenstelling tot aggregatiefuncties, waarbij een gegroepeerde reeks rijen in één enkele rij wordt samengevoegd, worden vensterfuncties geaggregeerd op basis van de inhoud van een 'venster', dat een of meer rijen uit de resultatenset bevat. Onder de geïmplementeerde vensterfuncties:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK en ROW_NUMBER;

  • Experimentele ondersteuning voor weergaven toegevoegd (VIEW);
  • Het partitiesysteem is verbeterd, de mogelijkheid om gegevens in secties te distribueren op basis van een reeks waarden of hashes is toegevoegd;
  • Er is een raamwerk voor het ontwikkelen van plug-ins toegevoegd, er zijn bijvoorbeeld al plug-ins voorbereid voor het gebruik van een IP-whitelist of het bijhouden van een auditlog;
  • Er is experimentele ondersteuning geboden voor de functie “EXPLAIN ANALYZE” voor het opstellen van een uitvoeringsplan voor een SQL-query (SQL Plan Management);
  • Next_row_id commando toegevoegd om de ID van de volgende rij op te halen;
  • Nieuwe ingebouwde functies JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE en NAME_CONST toegevoegd.

Bron: opennet.ru

Voeg een reactie