Wersja rozproszonego DBMS TiDB 3.0

Do dyspozycji rozproszone wydanie DBMS TiDB 3.0opracowany pod wpływem technologii Google Klucz do nakrętek и F1. TiDB należy do kategorii hybrydowych systemów HTAP (Hybrid Transactional/Analytical Processing) zdolnych zarówno do dostarczania transakcji w czasie rzeczywistym (OLTP), jak i przetwarzania zapytań analitycznych. Projekt jest napisany w Go i dystrybuowane przez na licencji Apache 2.0.

Funkcje TiDB:

  • Wsparcie dla SQL oraz udostępnienie interfejsu klienckiego zgodnego z protokołem MySQL, co ułatwia adaptację istniejących aplikacji napisanych pod MySQL do TiDB, a także umożliwia korzystanie ze wspólnych bibliotek klienckich. Oprócz protokołu MySQL możesz użyć API opartego na JSON i konektora dla Spark, aby uzyskać dostęp do DBMS.
  • Spośród funkcji SQL obsługiwane są indeksy, funkcje agregujące, wyrażenia GROUP BY, ORDER BY, DISTINCT, scalanie (LEFT JOIN / RIGHT JOIN / CROSS JOIN), widoki, funkcje okien i podzapytania. Zapewnione możliwości są wystarczające do zorganizowania pracy z TiDB takich aplikacji webowych jak PhpMyAdmin, Gogs i WordPressa;
  • Skalowalność i odporność: moc pamięci masowej i mocy obliczeniowej można skalować w górę, po prostu dodając nowe węzły. Dane są rozdzielane na węzły z redundancją, aby umożliwić kontynuację operacji w przypadku awarii poszczególnych węzłów. Awarie są obsługiwane automatycznie.
  • System gwarantuje spójność i wygląda dla oprogramowania klienckiego jak jeden wielki DBMS, mimo że do realizacji transakcji wykorzystywane są dane z wielu węzłów.
  • Do fizycznego przechowywania danych w węzłach można zastosować różne backendy, na przykład lokalne silniki pamięci masowej GoLevelDB i BoltDB lub nasz własny silnik rozproszonej pamięci masowej TiKV.
  • Możliwość asynchronicznej zmiany schematu przechowywania, umożliwiająca dodawanie kolumn i indeksów w locie bez zatrzymywania przetwarzania trwających operacji.

Głównym innowacje:

  • Prowadzono prace mające na celu zwiększenie produktywności. W teście Sysbench wersja 3.0 jest 2.1 razy szybsza niż gałąź 1.5 podczas wykonywania operacji wyboru i aktualizacji, a w teście TPC-C 4.5 razy. Optymalizacje wpłynęły na różne typy zapytań, w tym podzapytania IN, DO i NOT EXISTS, operacje łączenia tabel (JOIN), użycie indeksów i wiele więcej;
    Wersja rozproszonego DBMS TiDB 3.0Wersja rozproszonego DBMS TiDB 3.0

  • Dodano nowy silnik przechowywania TiFlash, który pozwala na wyższą wydajność w rozwiązywaniu problemów analitycznych (OLAP) dzięki magazynowaniu kolumnowemu. TiFlash uzupełnia wcześniej oferowaną pamięć TiKV, która przechowuje dane w wierszach w formacie klucz/wartość i jest bardziej idealna do zadań przetwarzania transakcji (OLTP). TiFlash współpracuje z TiKV, a dane są nadal replikowane do TiKV, tak jak przed użyciem 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. Takie podejście pozwala na lepsze współdzielenie zasobów pomiędzy zadaniami OLTP i OLAP, a także sprawia, że ​​dane transakcyjne są natychmiast dostępne na potrzeby zapytań analitycznych;

    Wersja rozproszonego DBMS TiDB 3.0

  • Zaimplementowano rozproszony moduł zbierający śmieci, który może znacznie zwiększyć prędkość usuwania śmieci w dużych klastrach i poprawić stabilność;
  • Dodano eksperymentalną implementację kontroli dostępu opartej na rolach (RBAC). Możliwe jest także ustawienie praw dostępu dla operacji ANALYZE, USE, SET GLOBAL i SHOW PROCESSLIST;
  • Dodano możliwość użycia wyrażeń SQL do wyodrębnienia powolnych zapytań z dziennika;
  • Zaimplementowano mechanizm szybkiego przywracania usuniętych tabel, pozwalający na przywrócenie przypadkowo usuniętych danych;
  • Ujednolicono format rejestrowanych logów;
  • Dodano obsługę pesymistycznego trybu blokowania, który upodabnia przetwarzanie transakcji do MySQL;
  • Dodano obsługę funkcji okienkowych (funkcji okiennych lub funkcji analitycznych) kompatybilnych z MySQL 8.0. Funkcje okna umożliwiają wykonanie obliczeń dla każdego wiersza zapytania przy użyciu innych wierszy. W przeciwieństwie do funkcji agregujących, które zwijają zgrupowany zestaw wierszy w jeden wiersz, funkcje okna agregują na podstawie zawartości „okna”, które zawiera jeden lub więcej wierszy ze zbioru wyników. Wśród zaimplementowanych funkcji okna:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK i ROW_NUMBER;

  • Dodano eksperymentalną obsługę widoków (VIEW);
  • Poprawiono system partycjonowania, dodano możliwość podziału danych na sekcje w oparciu o zakres wartości lub skrótów;
  • Dodano framework do tworzenia wtyczek, np. przygotowano już wtyczki do korzystania z białej listy adresów IP lub prowadzenia dziennika audytu;
  • Zapewniono eksperymentalne wsparcie dla funkcji „WYJAŚNIJ ANALIZĘ” służącej do konstruowania planu wykonania zapytania SQL (Zarządzanie planem SQL);
  • Dodano polecenie next_row_id, aby uzyskać identyfikator 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

Dodaj komentarz