distribuerad DBMS-release utvecklats under pÄverkan av Googles teknik О . 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 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, О 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 .
- 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 :
- 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;
- 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;
- 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
