Release der verteilten DBMS , inspiriert von Technologien von Google und . TiDB gehört zur Kategorie der hybriden HTAP-Systeme (Hybrid Transactional/Analytical Processing), die sowohl Echtzeitztransaktionen (OLTP) unterstĂŒtzt als auch analytische Abfragen verarbeiten kann. Das Projekt ist in der Programmiersprache Go geschrieben und unter der Apache 2.0 Lizenz.
Merkmale von TiDB:
- UnterstĂŒtzung von SQL und Bereitstellung einer Client-Schnittstelle, die mit dem MySQL-Protokoll kompatibel ist, was die Anpassung vorhandener Anwendungen, die fĂŒr MySQL geschrieben wurden, an TiDB erleichtert und die Verwendung gĂ€ngiger Client-Bibliotheken ermöglicht. Neben dem MySQL-Protokoll kann auch eine JSON-basierte API und ein Connector fĂŒr Spark verwendet werden, um auf die DBMS zuzugreifen.
- Zu den SQL-Funktionen gehören Indizes, Aggregatfunktionen, GROUP BY, ORDER BY, DISTINCT, Joins (LEFT JOIN / RIGHT JOIN / CROSS JOIN), Sichten, Fensterfunktionen und Unterabfragen. Diese Funktionen sind ausreichend fĂŒr die Integration von TiDB in Webanwendungen wie PhpMyAdmin, und WordPress;
- Die Möglichkeit zur horizontalen Skalierung und GewĂ€hrleistung der Ausfallsicherheit: SpeichergröĂe und Rechenleistung können einfach durch Anschluss neuer Knoten erweitert werden. Die Daten werden redundant auf die Knoten verteilt, sodass der Betrieb im Falle eines Ausfalls einzelner Knoten fortgesetzt werden kann. AusfĂ€lle werden automatisch verarbeitet.
- Das System gewĂ€hrleistet die Konsistenz und erscheint fĂŒr die Client-Software wie eine groĂe DBMS, obwohl tatsĂ€chlich Daten von mehreren Knoten abgerufen werden, um eine Transaktion auszufĂŒhren.
- FĂŒr die physische Speicherung von Daten auf Knoten können verschiedene Backends verwendet werden, beispielsweise die lokalen Speicherungsmotoren GoLevelDB und BoltDB oder die eigene Engine fĂŒr die verteilte Speicherung. .
- Die Möglichkeit zur asynchronen Ănderung des Speicherschemas, die es ermöglicht, Spalten und Indizes ohne Unterbrechung der Verarbeitung aktueller VorgĂ€nge hinzuzufĂŒgen.
Haupt- :
- Es wurde an der Leistungssteigerung gearbeitet. Im Sysbench-Test ĂŒbertrifft die Version 3.0 die Version 2.1 um das 1,5-Fache bei den Operationen select und update, und im TPC-C-Test sogar um das 4,5-Fache. Optimierungen betrafen verschiedene Arten von Abfragen, einschlieĂlich der Unterabfragen 'IN', 'DO' und 'NOT EXISTS', der JOIN-Operationen, der Verwendung von Indizes und vieles mehr.
- Eine neue Speicherungsmotor TiFlash wurde hinzugefĂŒgt, der eine höhere Leistung bei der Lösung analytischer Aufgaben (OLAP) ermöglicht, da die Daten spaltenbasiert gespeichert werden. TiFlash ergĂ€nzt die zuvor angebotene Speicherung TiKV, die Daten zeilenweise im SchlĂŒssel/Wert-Format speichert und optimaler fĂŒr Transaktionsverarbeitung (OLTP) ist. TiFlash arbeitet neben TiKV, und die Daten werden weiterhin wie gewohnt in TiKV unter Verwendung des Raft-Protokolls zum Konsens repliziert, jedoch wird fĂŒr jede Raft-Replikatgruppe eine zusĂ€tzliche Replikat erstellt, die in TiFlash verwendet wird. Dieser Ansatz ermöglicht eine bessere Ressourcenteilung zwischen OLTP- und OLAP-Aufgaben und macht Transaktionsdaten sofort fĂŒr analytische Abfragen zugĂ€nglich.
- Ein verteilter Garbage Collector wurde implementiert, der die Geschwindigkeit der MĂŒllabfuhr in groĂen Clustern erheblich erhöht und die StabilitĂ€t verbessert.
- Eine experimentelle Umsetzung eines rollenbasierten Zugriffskontrollsystems (RBAC) wurde hinzugefĂŒgt. Es wurde auch die Möglichkeit geschaffen, Zugriffsrechte fĂŒr die Operationen ANALYZE, USE, SET GLOBAL und SHOW PROCESSLIST festzulegen.
- Es wurde die Möglichkeit hinzugefĂŒgt, SQL-AusdrĂŒcke zur Auswahl aus dem Protokoll langsamer Abfragen zu verwenden.
- Ein Mechanismus zur schnellen Wiederherstellung gelöschter Tabellen wurde implementiert, der die Wiederherstellung versehentlich gelöschter Daten ermöglicht.
- Das Format der protokollierten Logs wurde vereinheitlicht.
- Die UnterstĂŒtzung fĂŒr den pessimistischen Sperrmodus wurde hinzugefĂŒgt, der die Verarbeitung von Transaktionen nĂ€her an MySQL heranfĂŒhrt.
- UnterstĂŒtzung fĂŒr Fensterfunktionen (window functions oder analytische Funktionen), die mit MySQL 8.0 kompatibel sind, hinzugefĂŒgt. Fensterfunktionen ermöglichen es, fĂŒr jede Zeile einer Abfrage Berechnungen unter Verwendung anderer Zeilen durchzufĂŒhren. Im Gegensatz zu Aggregatfunktionen, die eine gruppierte Menge von Zeilen in eine Zeile zusammenfassen, aggregieren Fensterfunktionen auf Grundlage des Inhalts eines âFenstersâ, das eine oder mehrere Zeilen aus dem Ergebnissatz umfasst. Zu den implementierten Fensterfunktionen gehören:
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK und ROW_NUMBER; - Experimentelle UnterstĂŒtzung fĂŒr Ansichten (VIEW) hinzugefĂŒgt;
- Das Partitionssystem (Partitionierung) wurde verbessert, und die Möglichkeit hinzugefĂŒgt, Daten basierend auf Wertebereichen oder Hashes auf Partitionen zu verteilen;
- Ein Framework zur Entwicklung von Plugins wurde hinzugefĂŒgt, beispielsweise sind bereits Plugins fĂŒr die Verwendung von IP-Whitelists oder zur Protokollierung von Audits vorbereitet;
- Experimentelle UnterstĂŒtzung fĂŒr die Funktion âEXPLAIN ANALYZEâ zur Erstellung eines AusfĂŒhrungsplans fĂŒr SQL-Abfragen (SQL Plan Management) bereitgestellt;
- Der Befehl next_row_id wurde hinzugefĂŒgt, um die ID der nĂ€chsten Zeile abzurufen;
- Neue integrierte Funktionen JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE und NAME_CONST hinzugefĂŒgt.
Quelle: opennet.ru
