TiDB 3.0 distribuerad DBMS-version

Tillgängliga distribuerad DBMS-release TiDB3.0utvecklats under påverkan av Googles teknik Spanner и F1. TiDB tillhör kategorin hybrid HTAP-system (Hybrid Transactional/Analytical Processing) som kan både tillhandahålla realtidstransaktioner (OLTP) och bearbeta analytiska frågor. Projektet är skrivet i Go och levererad av licensierad under Apache 2.0.

TiDB-funktioner:

  • Stöd för SQL och tillhandahållande av ett klientgränssnitt som är kompatibelt med MySQL-protokollet, vilket gör det enkelt att anpassa befintliga applikationer skrivna för MySQL till TiDB, och även låter dig använda vanliga klientbibliotek. Förutom MySQL-protokollet kan du använda det JSON-baserade API:et och kontakten för Spark för att komma åt DBMS.
  • Av funktionerna i SQL stöds index, aggregerade funktioner, GROUP BY, ORDER BY, DISTINCT uttryck, sammanslagningar (LEFT JOIN / RIGHT JOIN / CROSS JOIN), vyer, fönsterfunktioner och underfrågor. De tillhandahållna möjligheterna är tillräckliga för att organisera arbetet med TiDB för sådana webbapplikationer som PhpMyAdmin, Gogs och WordPress;
  • Skalning och motståndskraft: Lagrings- och processorkraft kan skalas upp helt enkelt genom att lägga till nya noder. Data distribueras över noder med redundans för att verksamheten ska kunna fortsätta om enskilda noder misslyckas. Fel hanteras automatiskt.
  • Systemet garanterar konsistens och ser ut som ett enda stort DBMS för klientprogramvaran, trots att data från många noder faktiskt används för att slutföra transaktionen.
  • Olika backends kan användas för fysisk datalagring på noder, till exempel lokala lagringsmotorer GoLevelDB och BoltDB eller en proprietär distribuerad lagringsmotor TiKV.
  • Möjligheten att asynkront ändra lagringsschemat, så att du kan lägga till kolumner och index i farten utan att stoppa bearbetningen av pågående operationer.

Den huvudsakliga innovationer:

  • Arbete har gjorts för att öka produktiviteten. I Sysbench-testet överträffar 3.0-versionen 2.1-grenen med 1.5 gånger i val och uppdateringsoperationer, och i TPC-C-testet med 4.5 gånger. Optimering har påverkat olika typer av frågor, inklusive "IN", "DO" och "NOT EXISTS" underfrågor, tabellsammanslagningsoperationer (JOIN), användning av index och mer;
    TiDB 3.0 distribuerad DBMS-versionTiDB 3.0 distribuerad DBMS-version

  • En ny lagringsmotor, TiFlash, har lagts till för att uppnå bättre analytisk (OLAP) prestanda genom kolumnbunden lagring. TiFlash kompletterar den tidigare erbjudna TiKV-lagringen, som lagrar data i kontexten av rader i nyckel/värde-format och är mer lämpad för transaktionsbehandlingsuppgifter (OLTP). TiFlash arbetar sida vid sida med TiKV och data fortsätter att replikeras till TiKV som tidigare genom att använda Raft-protokollet för att bestämma konsensus, men för varje grupp av Raft-repliker skapas och används en extra replika i TiFlash. Ett sådant tillvägagångssätt möjliggör en bättre uppdelning av resurser mellan OLTP- och OLAP-uppgifter, och gör också transaktionsdata omedelbart tillgänglig för analytiska frågor;

    TiDB 3.0 distribuerad DBMS-version

  • En distribuerad sophämtare har implementerats, vilket avsevärt kan öka hastigheten för sophämtning i stora kluster och förbättra stabiliteten;
  • En experimentell implementering av det rollbaserade åtkomstkontrollsystemet (RBAC) har lagts till. Det är också möjligt att ställa in åtkomsträttigheter för operationerna ANALYSE, ANVÄND, SET GLOBAL och VISA PROCESSLISTA;
  • Lade till möjligheten att använda SQL-uttryck för att extrahera från den långsamma frågeloggen;
  • Implementerat en mekanism för snabb återställning av raderade tabeller, så att du kan återställa oavsiktligt raderade data;
  • Enhetligt format för inspelade loggar;
  • Tillagt stöd för pessimistiskt låsläge, vilket gör transaktionsbearbetningen närmare MySQL;
  • Tillagt stöd för fönsterfunktioner (fönsterfunktioner eller analytiska funktioner) kompatibla med MySQL 8.0. Fönsterfunktioner gör det möjligt för varje rad i en fråga att utföra beräkningar med andra rader. Till skillnad från aggregerade funktioner, som kollapsar en grupperad uppsättning rader till en enda rad, aggregeras fönsterfunktioner baserat på innehållet i ett "fönster" som inkluderar en eller flera rader från resultatuppsättningen. Bland de implementerade fönsterfunktionerna:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE , LAST_VALUE, RANK, DENSE_RANK och ROW_NUMBER;

  • Lade till experimentellt stöd för vyer (VIEW);
  • Förbättrat partitioneringssystem (partitionering), lade till möjligheten att distribuera data i sektioner baserat på en rad värden eller hash;
  • Lade till ett ramverk för pluginutveckling, till exempel har plugins redan förberetts för att använda IP-vitlistan eller revisionsloggning;
  • Tillhandahöll experimentellt stöd för funktionen "EXPLAIN ANALYZE" för att bygga en SQL-förfrågningsplan (SQL Plan Management);
  • Lade till kommandot next_row_id för att få nästa rad-id;
  • Lade till nya inbyggda funktioner JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK ,COALESCE och NAME_CONST.

Källa: opennet.ru

Lägg en kommentar