rilascio di un database distribuito , sviluppato ispirandosi alle tecnologie di Google e . TiDB appartiene alla categoria dei sistemi ibridi HTAP (Hybrid Transactional/Analytical Processing), in grado di gestire sia transazioni in tempo reale (OLTP) che 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 facilita l'adattamento per le applicazioni esistenti scritte per MySQL e consente di utilizzare librerie client comuni. Oltre al protocollo MySQL, è possibile utilizzare un'API basata su JSON e un connettore per Spark per accedere al database.
- Tra le funzionalità supportate da SQL ci sono indici, funzioni di aggregazione, espressioni GROUP BY, ORDER BY, DISTINCT, join (LEFT JOIN / RIGHT JOIN / CROSS JOIN), viste, funzioni di finestra e subquery. Le funzionalità fornite sono sufficienti per l'organizzazione di web-app come PhpMyAdmin, e WordPress;
- Scalabilità orizzontale e tolleranza ai guasti: la dimensione dello storage e la potenza di calcolo possono essere aumentate semplicemente aggiungendo nuovi nodi. I dati vengono distribuiti tra i nodi con ridondanza, consentendo il proseguimento delle operazioni in caso di guasto di nodi singoli. I guasti vengono gestiti automaticamente.
- Il sistema garantisce coerenza e per il software client appare come un grande database, nonostante i dati necessari per eseguire le transazioni provengano da più nodi.
- Per lo storage fisico dei dati sui nodi possono essere utilizzati diversi backend, come i motori di storage locali GoLevelDB e BoltDB o i propri motori di storage distribuito e TiFlash. TiKV memorizza i dati in formato chiave/valore a livello di riga ed è più ottimizzato per le operazioni di elaborazione delle transazioni (OLTP). TiFlash memorizza i dati a livello di colonna e offre prestazioni più elevate per le attività analitiche (OLAP).
- Possibilità di modificare in modo asincrono lo schema di archiviazione, consentendo di aggiungere colonne e indici al volo senza interrompere l'elaborazione delle operazioni attuali.
Nel nuovo rilascio:
- Di default è attivo un garbage collector distribuito chiamato Green GC, che consente di aumentare notevolmente la velocità di raccolta dei rifiuti nei grandi cluster e migliora la stabilità operativa;
- È stata 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;
- È stata aggiunta la supporto per i comandi BACKUP e RESTORE per il backup dei dati;
- È stata aggiunta la possibilità di impostare lock sulle tabelle;
- È stato 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;
- È stato aggiunto il parametro oom-use-tmp-storage, che permette di utilizzare file temporanei per la memorizzazione nella cache dei risultati intermedi in caso di carenza di memoria;
- È stata aggiunta la parola chiave Random per assegnare valori casuali agli attributi;
- Nel comando LOAD DATA è stata aggiunta la possibilità di utilizzare espressioni esadecimali e binarie;
- Sono stati aggiunti 15 parametri per controllare il comportamento dell'ottimizzatore;
- Sono stati introdotti strumenti per la diagnostica delle prestazioni delle query SQL. È stata aggiunta un registro delle query lente, accessibile tramite le tabelle di sistema SLOW_QUERY / CLUSTER_SLOW_QUERY;
- È stata aggiunta la supporto per funzioni di lavoro con sequenze;
- È stata introdotta la possibilità di modificare dinamicamente i parametri di configurazione letti da PD (Placement Driver, server di gestione del cluster). È stata aggiunta la possibilità di utilizzare l'espressione «SET CONFIG» per modificare le impostazioni dei nodi PD/TiKV.
- È stata aggiunta l'impostazione max-server-connections per limitare il numero massimo di connessioni simultanee al server (di default 4096);
- È stata migliorata la prestazione in situazioni in cui le colonne richieste sono completamente coperte dagli indici;
- È stata aggiunta un'ottimizzazione delle query basata sulla fusione degli indici;
- Sono state migliorate le prestazioni delle operazioni su intervalli di valori;
- È stata ridotta la pressione sulla CPU grazie alla memorizzazione nella cache dei risultati delle query sugli indici e all'eliminazione dei duplicati;
- È stata aggiunta la supporto per un nuovo formato di memorizzazione delle righe, che consente di incrementare le prestazioni delle tabelle con un numero elevato di colonne;
- Nella funzione GROUP_CONCAT è stata aggiunta la supporto per l'espressione «ORDER BY»;
- È stata introdotta la possibilità di estrarre dati dai log di TiFlash tramite SQL;
- Nel comando «RECOVER TABLE» è stata implementata la supporto per il recupero delle tabelle troncate;
- È stata aggiunta una tabella di sistema DDLJobs per richiedere dettagli sull'esecuzione delle operazioni DDL;
- È stata introdotta la possibilità di utilizzare il comando SHOW CONFIG per visualizzare le impostazioni di PD e TiKV;
- di default la cache del coprocessore;
- Il numero di goroutines nella fase di tentativi di commit può ora essere controllato tramite l'impostazione committer-concurrency;
- È stata introdotta la possibilità di visualizzare le regioni delle partizioni delle tabelle;
- È stata aggiunta la possibilità di limitare la dimensione dello storage temporaneo nel tidb-server;
- È stata aggiunta la supporto per le operazioni «insert into tbl_name partition(partition_name_list)» e «replace into tbl_name partition(partition_name_list)»;
- Nel hash utilizzato per il partizionamento è stata aggiunta la supporto per il filtro sulla condizione «is null»;
- Per le tabelle partizionate è stata aggiunta la supporto per le operazioni di controllo, pulizia e recupero degli indici.
Fonte: opennet.ru
