rilascio di un DBMS distribuito , sviluppato sotto l'influenza delle tecnologie di Google e . TiDB appartiene alla categoria dei sistemi ibridi HTAP (Hybrid Transactional/Analytical Processing), in grado di eseguire transazioni in tempo reale (OLTP) e di gestire l'elaborazione di query analitiche. Il progetto è scritto in Go e sotto licenza Apache 2.0.
Caratteristiche di TiDB:
- Supporto per SQL e fornitura di un'interfaccia client compatibile con il protocollo MySQL, che semplifica l'adattamento delle applicazioni esistenti per TiDB scritte per MySQL, permettendo anche di utilizzare le librerie client più comuni. Oltre al protocollo MySQL, è possibile utilizzare un API basata su JSON e un connettore per Spark per accedere al DBMS.
- Tra le funzionalità SQL supportate ci sono indici, funzioni aggregate, espressioni GROUP BY, ORDER BY, DISTINCT, unioni (LEFT JOIN / RIGHT JOIN / CROSS JOIN), viste, funzioni di finestra e sottoquery. Le funzionalità offerte sono sufficienti per gestire applicazioni web come PhpMyAdmin con TiDB, e WordPress;
- Possibilità di scalabilità orizzontale e di garantire la tolleranza ai guasti: la capacità di archiviazione e la potenza di calcolo possono essere ampliate semplicemente aggiungendo nuovi nodi. I dati sono distribuiti tra i nodi con ridondanza, permettendo il proseguimento delle operazioni in caso di guasto di nodi singoli. I guasti vengono gestiti automaticamente.
- Il sistema garantisce la coerenza e si presenta al software client come un unico grande DBMS, anche se per eseguire la transazione vengono coinvolti dati da molti nodi.
- Per l'archiviazione fisica dei dati sui nodi possono essere utilizzati diversi backend, ad esempio i motori di archiviazione locali GoLevelDB e BoltDB oppure i propri motori di archiviazione distribuiti e TiFlash. TiKV memorizza i dati in base alle righe in formato chiave/valore ed è più ottimizzato per i compiti di elaborazione delle transazioni (OLTP). TiFlash memorizza i dati legati alle colonne e consente di ottenere prestazioni più elevate nella risoluzione di compiti analitici (OLAP).
- Possibilità di modifica asincrona dello schema di archiviazione, che consente di aggiungere colonne e indici al volo senza fermare l'elaborazione delle operazioni correnti.
Nel nuovo rilascio:
- Di default è attivato il garbage collector distribuito Green GC, che consente di aumentare significativamente la velocità di raccolta dei rifiuti in grandi cluster e di migliorare la stabilità operativa;
- Aggiunta la supporto per grandi transazioni, il cui dimensione è limitato praticamente alla dimensione della memoria fisica. Il limite per una singola transazione è stato aumentato da 100 MB a 10 GB;
- Aggiunto il supporto per i comandi BACKUP e RESTORE per il backup;
- Aggiunta la possibilità di impostare un blocco sulle tabelle;
- Aggiunto un meccanismo di isolamento delle transazioni compatibile con MySQL a livello di lettura (READ COMMITTED);
- Nel comando «ADMIN SHOW DDL JOBS» è stata aggiunta la supporto per le espressioni LIKE e WHERE;
- Aggiunto il parametro oom-use-tmp-storage, che consente di utilizzare file temporanei per la memorizzazione nella cache dei risultati intermedi in caso di esaurimento della memoria operativa;
- Aggiunta la parola chiave Random per l'assegnazione di valori casuali agli attributi;
- Nel comando LOAD DATA è disponibile la possibilità di utilizzare espressioni esadecimali e binarie;
- Aggiunti 15 parametri per gestire il comportamento dell'ottimizzatore;
- Aggiunti strumenti per diagnosticare le prestazioni delle query SQL. Aggiunto il log delle query lente, accessibile attraverso le tabelle di sistema SLOW_QUERY / CLUSTER_SLOW_QUERY;
- Aggiunto il supporto per funzioni per gestire le sequenze;
- Aggiunta la possibilità di modificare dinamicamente i parametri di configurazione letti da PD (Placement Driver, server di gestione del cluster). Aggiunta la possibilità di utilizzare l'espressione «SET CONFIG» per modificare le impostazioni dei nodi PD/TiKV.
- Aggiunta l'impostazione max-server-connections per limitare il numero massimo di connessioni simultanee al server (di default 4096);
- Migliorate le prestazioni nelle situazioni in cui le colonne richieste sono completamente coperte dagli indici;
- Aggiunta l'ottimizzazione delle query basata sulla fusione degli indici;
- Aumentata la produttività delle operazioni con intervalli di valori;
- Ridotto il carico sulla CPU grazie alla memorizzazione nella cache dei risultati delle interrogazioni agli indici e all'eliminazione dei duplicati;
- Aggiunta la compatibilità con un nuovo formato di memorizzazione delle stringhe che consente di aumentare le prestazioni delle tabelle con un elevato numero di colonne;
- La funzione GROUP_CONCAT ora supporta l'espressione «ORDER BY»;
- Aggiunta la possibilità di estrarre dati dal log di TiFlash tramite SQL;
- Nel comando «RECOVER TABLE» è stata implementata la compatibilità per il recupero delle tabelle troncate;
- Aggiunta la tabella di sistema DDLJobs per interrogare i dettagli sull'esecuzione delle operazioni DDL;
- Aggiunta la possibilità di utilizzare il comando SHOW CONFIG per mostrare le impostazioni di PD e TiKV;
- memoria cache coprocessore per impostazione predefinita;
- Il numero di goroutine nella fase di riprova del commit può ora essere controllato tramite l'impostazione committer-concurrency;
- Aggiunta la possibilità di visualizzare le regioni delle partizioni delle tabelle;
- Nel tidb-server è stata aggiunta la possibilità di limitare la dimensione dello storage temporaneo;
- Aggiunta la compatibilità con le operazioni «insert into tbl_name partition(partition_name_list)» e «replace into tbl_name partition(partition_name_list)»;
- Nel sistema di hashing utilizzato per il partizionamento è stata aggiunta la compatibilità per la filtrazione in base alla condizione «is null»;
- Per le tabelle partizionate è stata aggiunta la compatibilità per le operazioni di verifica, pulizia e recupero degli indici.
Fonte: opennet.ru
