wydanie rozproszonej bazy danych , rozwijanej pod wpływem technologii Google i . TiDB należy do kategorii hybrydowych systemów HTAP (Hybrid Transactional/Analytical Processing), które są w stanie zapewnić realizację transakcji w czasie rzeczywistym (OLTP) oraz przetwarzać zapytania analityczne. Projekt napisany jest w języku Go i na licencji Apache 2.0.
Cechy TiDB:
- Wsparcie SQL oraz dostarczenie interfejsu klienckiego zgodnego z protokołem MySQL, co ułatwia adaptację dla TiDB istniejących aplikacji napisanych dla MySQL oraz umożliwia użycie powszechnie stosowanych bibliotek klienckich. Oprócz protokołu MySQL można używać API opartego na JSON oraz konektora dla Sparka do komunikacji z bazą danych.
- Z możliwości SQL wspierane są indeksy, funkcje agregujące, wyrażenia GROUP BY, ORDER BY, DISTINCT, złączenia (LEFT JOIN / RIGHT JOIN / CROSS JOIN), widoki, funkcje okna oraz podzapytania. Udostępnione możliwości są wystarczające do organizacji pracy z TiDB w takich aplikacjach webowych jak PhpMyAdmin, i WordPress;
- Możliwość poziomego skalowania oraz zapewnienia odporności na awarie: rozmiar przechowywania i moc obliczeniowa mogą być zwiększane poprzez proste podłączenie nowych węzłów. Dane są rozdzielane po węzłach z redundancją, co pozwala na kontynuowanie działania w przypadku awarii pojedynczych węzłów. Awarie są obsługiwane automatycznie.
- System zapewnia spójność i dla oprogramowania klienckiego wygląda jak jedna duża baza danych, mimo że faktycznie do realizacji transakcji wykorzystywane są dane z wielu węzłów.
- Dla fizycznego przechowywania danych na węzłach można stosować różne backendy, takie jak lokalne silniki przechowywania GoLevelDB i BoltDB lub własne silniki rozproszonego magazynu. TiFlash. TiKV przechowuje dane w postaci wierszy w formacie klucz/wartość i jest bardziej optymalny do zadań przetwarzania transakcji (OLTP). TiFlash przechowuje dane w powiązaniu z kolumnami i pozwala osiągnąć wyższą wydajność w rozwiązaniach analitycznych (OLAP).
- Możliwość asynchronicznej zmiany schematu przechowywania, umożliwiająca dodawanie kolumn i indeksów w locie bez zatrzymywania przetwarzania bieżących operacji.
W nowym wydaniu:
- Domyślnie włączony jest rozproszony zbieracz śmieci Green GC, który znacznie zwiększa szybkość zbierania śmieci w dużych klastrach i zwiększa stabilność działania.
- Dodano wsparcie dla dużych transakcji, których rozmiar ogranicza się właściwie do rozmiaru pamięci fizycznej. Ograniczenie rozmiaru jednej transakcji zwiększono z 100 MB do 10 GB.
- Dodano wsparcie dla poleceń BACKUP i RESTORE do tworzenia kopii zapasowych.
- Dodano możliwość ustawiania blokad na tabelach.
- Dodano zgodny z MySQL mechanizm izolacji transakcji na poziomie odczytu (READ COMMITTED).
- Do polecenia «ADMIN SHOW DDL JOBS» dodano wsparcie dla wyrażeń LIKE i WHERE.
- Dodano parametr oom-use-tmp-storage, umożliwiający użycie plików tymczasowych do cache'owania pośrednich wyników w warunkach niedoboru pamięci RAM.
- Dodano słowo kluczowe Random do przypisywania atrybutom losowych wartości.
- W komendzie LOAD DATA pojawiła się możliwość użycia wyrażeń szesnastkowych i binarnych.
- Dodano 15 parametrów do zarządzania zachowaniem optymalizatora.
- Dodano narzędzia do diagnozowania wydajności zapytań SQL. Dodano log wolnych zapytań, dostępny przez tabele systemowe SLOW_QUERY / CLUSTER_SLOW_QUERY.
- Dodano wsparcie dla funkcji do pracy z sekwencjami.
- Dodano możliwość dynamicznej zmiany parametrów konfiguracji, odczytywanych z PD (Placement Driver, serwer zarządzania klastrem). Dodano możliwość użycia wyrażenia «SET CONFIG» do zmiany ustawień węzłów PD/TiKV.
- Dodano ustawienie max-server-connections do ograniczenia maksymalnej liczby jednoczesnych połączeń z serwerem (domyślnie 4096).
- Zwiększono wydajność w sytuacjach, gdy żądane kolumny są w pełni pokrywane indeksami.
- Dodano optymalizację zapytań opartą na łączeniu indeksów.
- Zwiększona wydajność operacji na zakresach wartości;
- Zmniejszone obciążenie CPU dzięki buforowaniu wyników zapytań do indeksów i eliminacji duplikatów;
- Dodano wsparcie dla nowego formatu przechowywania ciągów, co pozwala na zwiększenie wydajności tabel z dużą liczbą kolumn;
- Funkcja GROUP_CONCAT zyskała wsparcie dla wyrażenia „ORDER BY”;
- Dodano możliwość wydobywania danych z logu TiFlash za pomocą SQL;
- W komendzie „RECOVER TABLE” dodano wsparcie dla przywracania przyciętych tabel;
- Dodano tabelę systemową DDLJobs do zapytania o szczegóły dotyczące wykonania prac DDL;
- Dodano możliwość użycia komendy SHOW CONFIG do wyświetlania ustawień PD i TiKV;
- domyślnie buforowanie współprocesora;
- Liczba współprogramów (goroutine) w fazie prób ponownej próby zatwierdzenia może być teraz kontrolowana za pomocą ustawienia committer-concurrency;
- Dodano możliwość wyświetlania regionów podziału tabel (table partition);
- W serwerze tidb-server dodano możliwość ograniczenia rozmiaru tymczasowego magazynu;
- Dodano wsparcie dla operacji „insert into tbl_name partition(partition_name_list)” oraz „replace into tbl_name partition(partition_name_list)”;
- W używanym do partycjonowania hashu dodano wsparcie dla filtrowania według kryterium „is null”;
- Dla tabel partycjonowanych dodano wsparcie dla operacji sprawdzania, czyszczenia i przywracania indeksów.
Źródło: opennet.ru
