Wydanie rozproszonej bazy danych TiDB 3.0

Dostępny wydanie rozproszonej bazy danych TiDB 3.0, rozwijanej pod wpływem technologii Google Spanner i F1. 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 rozpowszechniany 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, Gogs 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.
  • Do fizycznego przechowywania danych na węzłach mogą być stosowane różne backendy, takie jak lokalne silniki przechowywania GoLevelDB i BoltDB lub własny silnik rozproszonego przechowywania TiKV.
  • Możliwość asynchronicznej zmiany schematu przechowywania, umożliwiająca dodawanie kolumn i indeksów w locie bez zatrzymywania przetwarzania bieżących operacji.

Podstawowe nowości:

  • Przeprowadzono prace nad zwiększeniem wydajności. W teście Sysbench wersja 3.0 przewyższa gałąź 2.1 o 1,5 razy podczas realizacji operacji select i update, a w teście TPC-C o 4,5 razy. Optymalizacje obejmowały różne rodzaje zapytań, w tym podzapytania 'IN', 'DO' i 'NOT EXISTS', operacje złączenia tabel (JOIN), użycie indeksów i wiele innych;
    Wydanie rozproszonej bazy danych TiDB 3.0 Wydanie rozproszonej bazy danych TiDB 3.0
  • Dodano nowy silnik przechowywania TiFlash, który umożliwia uzyskanie wyższej wydajności w analizie danych (OLAP) dzięki przechowywaniu w oparciu o kolumny. TiFlash uzupełnia wcześniej oferowane przechowywanie TiKV, które przechowuje dane w wierszach w formacie klucz/wartość i jest bardziej optymalne dla zadań przetwarzania transakcji (OLTP). TiFlash działa obok TiKV, a dane są nadal replikowane w TiKV z wykorzystaniem protokołu Raft w celu ustalenia konsensusu, ale dla każdej grupy replik Raft tworzona jest dodatkowa replika, która jest używana w TiFlash. Taki podejście pozwala osiągnąć lepsze oddzielenie zasobów między zadaniami OLTP a OLAP, a także sprawia, że dane transakcji są natychmiast dostępne dla zapytań analitycznych;

    Wydanie rozproszonej bazy danych TiDB 3.0
  • Wprowadzono rozproszony mechanizm zbierania śmieci, który znacznie poprawia szybkość zbierania śmieci w dużych klastrach oraz stabilność pracy;
  • Dodano eksperymentalną realizację systemu kontroli dostępu na podstawie ról (RBAC). Zapewniło to możliwość definiowania praw dostępu do operacji ANALYZE, USE, SET GLOBAL oraz SHOW PROCESSLIST;
  • Dodano możliwość użycia wyrażeń SQL do wybierania z logu wolnych zapytań;
  • Wprowadzono mechanizm szybkiego przywracania usuniętych tabel, który umożliwia odzyskanie przypadkowo usuniętych danych;
  • Ujednolicony format logów zapisywanych;
  • Dodano wsparcie dla pesymistycznego trybu blokowania, co zbliża przetwarzanie transakcji do MySQL;
  • Dodano wsparcie dla funkcji okien (funkcje okienne lub funkcje analityczne) zgodnych z MySQL 8.0. Funkcje okienne umożliwiają wykonanie obliczeń dla każdego wiersza zapytania, wykorzystując inne wiersze. W przeciwieństwie do funkcji agregacyjnych, które łączą zgrupowany zestaw wierszy w jeden wiersz, funkcje okienne realizują agregację na podstawie zawartości „okna”, które zawiera jeden lub więcej wierszy z zbioru wynikowego. Wśród zrealizowanych funkcji okiennych znajdują się:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK oraz ROW_NUMBER;
  • Dodano eksperymentalne wsparcie dla widoków (VIEW);
  • Poprawiono system partycjonowania, dodano możliwość rozdzielania danych na sekcje na podstawie zakresu wartości lub haszów;
  • Dodano ramy do tworzenia wtyczek, na przykład już przygotowane wtyczki do korzystania z białej listy IP lub prowadzenia logu audytu;
  • Zastosowano eksperymentalne wsparcie dla funkcji „EXPLAIN ANALYZE” do budowy planu wykonania zapytania SQL (SQL Plan Management);
  • Dodano polecenie next_row_id do uzyskiwania identyfikatora następnego wiersza;
  • Dodano nowe wbudowane funkcje JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE i NAME_CONST.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster