Dostępny jest Apache Cassandra 4.0 DBMS

Fundacja Apache Software Foundation zaprezentowała wydanie rozproszonego systemu DBMS Apache Cassandra 4.0, który należy do klasy systemów noSQL i ma za zadanie tworzyć wysoce skalowalne i niezawodne przechowywanie ogromnych ilości danych przechowywanych w postaci tablicy asocjacyjnej (hash). Wersja Cassandra 4.0 jest uważana za gotową do wdrożenia produkcyjnego i została już przetestowana w infrastrukturach Amazon, Apple, DataStax, Instaclustr, iland i Netflix z klastrami liczącymi ponad 1000 węzłów. Kod projektu napisany jest w języku Java i rozpowszechniany jest na licencji Apache 2.0.

Cassandra DBMS został pierwotnie opracowany przez Facebooka, a w 2009 roku przekazany pod auspicjami Fundacji Apache. Rozwiązania przemysłowe oparte na Cassandrze zostały wdrożone do zasilania usług takich firm jak Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit i Twitter. Przykładowo wdrożona przez Apple infrastruktura pamięci masowej oparta na Apache Cassandra składa się z ponad tysiąca klastrów obejmujących 160 tysięcy węzłów i przechowujących ponad 100 petabajtów danych. Huawei korzysta z ponad 300 klastrów Apache Cassandra, obejmujących 30 tys. węzłów, a Netflix korzysta z ponad 100 klastrów, obejmujących 10 tys. węzłów i przetwarzających ponad bilion żądań dziennie.

Cassandra DBMS łączy w pełni rozproszony system mieszania Dynamo, który zapewnia niemal liniową skalowalność w miarę wzrostu ilości danych. Cassandra wykorzystuje model przechowywania danych oparty na rodzinie kolumn (ColumnFamily), który różni się od systemów takich jak memcachedb, które przechowują dane tylko w łańcuchu klucz/wartość, możliwością organizowania przechowywania skrótów z kilkoma poziomami zagnieżdżenia. Aby uprościć interakcję z bazą danych, obsługiwany jest ustrukturyzowany język zapytań CQL (Cassandra Query Language), który przypomina SQL, ale ma zmniejszoną funkcjonalność. Funkcje obejmują obsługę przestrzeni nazw i rodzin kolumn oraz tworzenie indeksów przy użyciu wyrażenia „CREATE INDEX”.

System DBMS pozwala na stworzenie odpornego na awarie magazynu: dane umieszczone w bazie danych są automatycznie replikowane do kilku węzłów sieci rozproszonej, która może obejmować różne centra danych. Kiedy węzeł ulegnie awarii, jego funkcje są na bieżąco przejmowane przez inne węzły. Dodawanie nowych węzłów do klastra i aktualizacja wersji Cassandry odbywa się na bieżąco, bez dodatkowej ręcznej interwencji czy rekonfiguracji innych węzłów. Sterowniki z obsługą CQL przygotowane są dla Pythona, Java (JDBC/DBAPI2), Ruby, PHP, C++ i JavaScript (Node.js).

Główne innowacje:

  • Poprawiona wydajność i skalowalność. Poprawiono efektywność wymiany danych w formacie SSTable (Sorted Strings Table) pomiędzy węzłami. Protokół przesyłania wiadomości międzywęzłowych został zoptymalizowany. Szybkość przesyłania strumieni danych pomiędzy węzłami wzrosła aż pięciokrotnie (głównie dzięki zastosowaniu techniki Zero Copy i transferowi całych tablic SST), a przepustowość operacji odczytu i zapisu wzrosła do 5%. Zoptymalizowano proces odzyskiwania przyrostowego. Opóźnienia spowodowane wstrzymywaniem zbierania elementów bezużytecznych są zmniejszone do kilku milisekund.
  • Dodano obsługę dziennika audytu, który umożliwia śledzenie operacji uwierzytelniania użytkowników i wszystkich wykonanych zapytań CQL.
  • Dodano możliwość utrzymywania pełnego dziennika żądań binarnych, co pozwala na zapisywanie całego ruchu żądań i odpowiedzi. Do zarządzania proponowane są polecenia „nodetool Enablefullquerylog|disablefullquerylog|resetfullquerylog”, a do analizy dzienników dostarczane jest narzędzie fqltool. Dostępne są polecenia umożliwiające konwersję dziennika do postaci czytelnej (Zrzut), porównywanie wycinków aktywności (Porównaj) i ponowne wykonanie (Powtórz) w celu analizy odtwarzającej warunki właściwe rzeczywistemu obciążeniu.
  • Dodano obsługę wirtualnych tabel, które odzwierciedlają nie dane przechowywane w SSTables, ale informacje wyjściowe poprzez API (metryki wydajności, informacje o ustawieniach, zawartość pamięci podręcznej, informacje o podłączonych klientach itp.).
  • Poprawiono wydajność przechowywania skompresowanych danych, zmniejszając zużycie miejsca na dysku i poprawiając wydajność odczytu.
  • Dane związane z systemową przestrzenią kluczy (system.*) są teraz domyślnie umieszczane w pierwszym katalogu, zamiast być rozprowadzane po wszystkich katalogach danych, co pozwala węzłowi zachować funkcjonalność w przypadku awarii jednego z dodatkowych dysków.
  • Dodano eksperymentalną obsługę replikacji przejściowej i tanich kworów. Repliki tymczasowe nie przechowują wszystkich danych i korzystają z przywracania przyrostowego, aby zachować spójność z replikami pełnymi. W przypadku kworów lekkich wdrażana jest optymalizacja zapisu, w ramach której nie są wykonywane żadne zapisy w replikach tymczasowych, dopóki nie będzie dostępny wystarczający zestaw pełnych replik.
  • Dodano eksperymentalne wsparcie dla Java 11.
  • Dodano opcję eksperymentalną, aby porównać wszystkie drzewa Merkle. Na przykład włączenie tej opcji w klastrze z 3 węzłami, w którym dwie repliki są identyczne, a jedna jest nieaktualna, spowoduje aktualizację nieaktualnej repliki przy użyciu tylko jednej operacji kopiowania bieżącej repliki.
  • Dodano nowe funkcje currentTimestamp, currentDate, currentTime i currentTimeUUID.
  • Dodano obsługę operacji arytmetycznych w zapytaniach CQL.
  • Zapewniona jest możliwość wykonywania operacji arytmetycznych pomiędzy danymi typu „timestamp”/”date” i „duration”.
  • Dodano tryb podglądu strumieni danych wymaganych do odzyskania (naprawa Nodetool — podgląd) oraz możliwość sprawdzenia integralności przywracanych danych (naprawa Nodetool — sprawdzenie).
  • Zapytania SELECT mają teraz możliwość przetwarzania elementów Map i Set.
  • Dodano obsługę zrównoleglenia początkowego etapu konstrukcji widoków zmaterializowanych (cassandra.yaml:concurrent_materialized_view_builders).
  • W poleceniu „nodetool cfstats” dodano obsługę sortowania według określonych metryk i ograniczania liczby wyświetlanych wierszy.
  • Dostępne są ustawienia ograniczające połączenie użytkownika tylko z określonymi centrami danych.
  • Dodano możliwość ograniczenia intensywności (limitu szybkości) operacji tworzenia i czyszczenia migawek.
  • cqlsh i cqlshlib obsługują teraz Python 3 (Python 2.7 jest nadal obsługiwany).
  • Zakończono wsparcie dla platformy Windows. Do uruchomienia Cassandry na Windowsie zalecane jest wykorzystanie środowisk Linux stworzonych w oparciu o podsystem WSL2 (Windows Subsystem for Linux 2) lub systemy wirtualizacji.



Źródło: opennet.ru

Dodaj komentarz