Rilascio DBMS distribuito TiDB 3.0

A disposizione rilascio di un DBMS distribuito TiDB 3.0, sviluppato sotto l'influenza delle tecnologie di Google chiave и F1. TiDB appartiene alla categoria dei sistemi ibridi HTAP (Hybrid Transactional/Analytical Processing), in grado sia di fornire transazioni in tempo reale (OLTP) sia di elaborare query analitiche. Il progetto è scritto in Go and distribuito da concesso in licenza con Apache 2.0.

Caratteristiche di TiDB:

  • Supporto SQL e fornitura di un'interfaccia client compatibile con il protocollo MySQL, che semplifica l'adattamento delle applicazioni esistenti scritte per MySQL a TiDB e consente inoltre l'utilizzo di librerie client comuni. Oltre al protocollo MySQL, puoi utilizzare un'API basata su JSON e un connettore per Spark per accedere al DBMS.
  • Le funzionalità SQL supportano indici, funzioni aggregate, espressioni GROUP BY, ORDER BY, DISTINCT, fusioni (LEFT JOIN / RIGHT JOIN / CROSS JOIN), visualizzazioni, funzioni finestra e sottoquery. Le funzionalità fornite sono sufficienti per organizzare il lavoro con TiDB per applicazioni web come PhpMyAdmin, Gogs e WordPress;
  • Scalabilità orizzontale e tolleranza agli errori: le dimensioni dello storage e la potenza di elaborazione possono essere aumentate semplicemente collegando nuovi nodi. I dati vengono distribuiti tra i nodi con ridondanza, consentendo il proseguimento delle operazioni in caso di guasto dei singoli nodi. Gli errori vengono gestiti automaticamente.
  • Il sistema garantisce coerenza e per il software client sembra un grande DBMS, nonostante in realtà vengano attratti dati da molti nodi per completare la transazione.
  • Per archiviare fisicamente i dati sui nodi, è possibile utilizzare diversi backend, ad esempio i motori di archiviazione locali GoLevelDB e BoltDB o il nostro motore di archiviazione distribuito TiKV.
  • La possibilità di modificare in modo asincrono lo schema di archiviazione, consentendo di aggiungere colonne e indici al volo senza interrompere l'elaborazione delle operazioni in corso.

Il principale innovazioni:

  • Sono stati effettuati lavori per aumentare la produttività. Nel test Sysbench, la versione 3.0 è 2.1 volte più veloce del ramo 1.5 durante l'esecuzione delle operazioni di selezione e aggiornamento, e nel test TPC-C di 4.5 volte. Le ottimizzazioni hanno interessato vari tipi di query, comprese le sottoquery IN, DO e NOT EXISTS, le operazioni di fusione di tabelle (JOIN), l'uso di indici e molto altro;
    Rilascio DBMS distribuito TiDB 3.0Rilascio DBMS distribuito TiDB 3.0

  • Aggiunto un nuovo motore di storage TiFlash che consente prestazioni più elevate nella risoluzione di problemi analitici (OLAP) grazie allo storage colonnare. TiFlash integra lo storage TiKV precedentemente offerto, che archivia i dati per riga in un formato chiave/valore ed è più ideale per le attività di elaborazione delle transazioni (OLTP). TiFlash funziona fianco a fianco con TiKV e i dati continuano a essere replicati su TiKV come prima utilizzando il protocollo Raft per determinare il consenso, ma per ciascun gruppo di repliche Raft viene creata una replica aggiuntiva che viene utilizzata in TiFlash. Questo approccio consente una migliore condivisione delle risorse tra attività OLTP e OLAP e rende inoltre immediatamente disponibili i dati delle transazioni per le query analitiche;

    Rilascio DBMS distribuito TiDB 3.0

  • È stato implementato un garbage collector distribuito, che può aumentare significativamente la velocità di garbage collection in cluster di grandi dimensioni e migliorare la stabilità;
  • È stata aggiunta un'implementazione sperimentale del controllo degli accessi basato sui ruoli (RBAC). È inoltre possibile impostare i diritti di accesso per le operazioni ANALYZE, USE, SET GLOBAL e SHOW PROCESSLIST;
  • Aggiunta la possibilità di utilizzare espressioni SQL per estrarre query lente dal log;
  • È stato implementato un meccanismo di ripristino rapido delle tabelle cancellate che consente di ripristinare i dati cancellati accidentalmente;
  • Il formato dei log registrati è stato unificato;
  • Aggiunto il supporto per la modalità di blocco pessimistico, che rende l'elaborazione delle transazioni più simile a MySQL;
  • Aggiunto il supporto per le funzioni finestra (funzioni finestra o funzioni analitiche) compatibili con MySQL 8.0. Le funzioni della finestra consentono di eseguire calcoli per ciascuna riga della query utilizzando altre righe. A differenza delle funzioni di aggregazione, che comprimono un insieme raggruppato di righe in un'unica riga, le funzioni di finestra si aggregano in base al contenuto di una "finestra", che include una o più righe del set di risultati. Tra le funzioni della finestra implementate:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK e ROW_NUMBER;

  • Aggiunto supporto sperimentale per le visualizzazioni (VIEW);
  • È stato migliorato il sistema di partizionamento, è stata aggiunta la possibilità di distribuire i dati in sezioni in base a un range di valori o hash;
  • È stato aggiunto un framework per lo sviluppo di plugin, ad esempio sono già stati preparati plugin per l'utilizzo di una whitelist IP o per il mantenimento di un registro di controllo;
  • È stato fornito supporto sperimentale alla funzione “EXPLAIN ANALYZE” per la costruzione di un piano di esecuzione di una query SQL (SQL Plan Management);
  • Aggiunto il comando next_row_id per ottenere l'ID della riga successiva;
  • Aggiunte nuove funzioni integrate JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE e NAME_CONST.

Fonte: opennet.ru

Aggiungi un commento