Przejdź do głównej zawartości

Klastry

Klastry

Klastry to opcjonalna metoda przechowywania danych w tabeli. Klaster to grupa tabel, które współdzielą te same bloki danych, ponieważ mają wspólne kolumny i są często używane razem. Na przykład tabele employees i departments współdzielą kolumnę department_id. Podczas grupowania tabel employees i departments Oracle fizycznie przechowuje wszystkie wiersze dla każdego działu z tabel employees i departments w tych samych blokach danych. 

Tabele klastrowane vs nieklastrowane
Ponieważ klastry przechowują powiązane wiersze różnych tabel razem w tych samych blokach danych, właściwie używane klastry oferują następujące korzyści:

  • zmniejszenie dyskowych operacji we/wy w przypadku łączenia tabel klastrowych,
  • skrócenie czasu dostępu dla złączeń tabel klastrowych.

W klastrze, wartość klucza klastra jest wartością kolumn kluczy klastra dla określonego wiersza. Każda wartość klucza klastra jest przechowywana tylko raz w klastrze i indeksie klastra, bez względu na to, ile wierszy różnych tabel zawiera tę wartość. Dlatego do przechowywania powiązanych tabel i danych indeksowych w klastrze potrzeba mniej miejsca niż w przypadku tabeli nieklastrowanej. Na powyższym obrazie widać, że każdy klucz klastra (każdy department_id) jest przechowywany tylko raz dla wielu wierszy zawierających tę samą wartość w tabelach employees i departments.

Klastry typu hash

Klastry typu hash grupują dane w tabeli w sposób podobny do zwykłych klastrów indeksowych (klastry z kluczem indeksowanym, a nie funkcją hashującą). Wiersz jest przechowywany w klastrze typu hash na podstawie wyniku zastosowania funkcji hashującej na wartości klucza wiersza w klastrze. Wszystkie wiersze z tą samą wartością klucza są przechowywane razem na dysku.

Klastry typu hash są lepszym wyborem niż używanie indeksowanej tabeli lub indeksowanego klastra, gdy tabela jest często odpytywana za pomocą zapytań ze znakiem '=' w warunku (na przykład daj wszystkie wiersze dla department_id=10). W przypadku takich zapytań określona wartość klucza klastra jest zahaszowana. Wynikowa zahaszowana wartość klucza wskazuje bezpośrednio na obszar dysku, w którym są przechowywane wiersze.

Haszowanie to opcjonalny sposób przechowywania danych w tabeli w celu poprawy wydajności pobierania danych. Aby użyć funkcji hashującej, utwórz klaster typu hash i wczytaj tabele do klastra. Baza danych Oracle fizycznie przechowuje wiersze tabeli w klastrze typu hash i pobiera je zgodnie z wynikami funkcji hashującej. 

Posortowane klastry typu hash umożliwiają szybsze pobieranie danych przez aplikacje, w których dane są używane w kolejności, w jakiej zostały wczytane. 

Oracle używa funkcji hashującej do generowania rozkładu wartości liczbowych (hash values), które są oparte na określonych wartościach kluczy klastra. Klucz klastra typu hash, podobnie jak klucz indeksowanego klastra, może być kluczem jednokolumnowym lub złożonym (kluczem wielokolumnowym). Aby znaleźć lub zapisać wiersz w klastrze typu hash, Oracle stosuje funkcję hashującą na wartości klucza wiersza klastra. Wynikowa wartość hash odpowiada blokowi danych w klastrze, który baza danych następnie odczytuje lub zapisuje dla danego zapytania.

Klaster typu hash jest alternatywą dla indeksowanej tabeli nieklastrowanej lub indeksowanego klastra. W przypadku indeksowanej tabeli lub indeksowanego klastra Oracle lokalizuje wiersze w tabeli przy użyciu wartości kluczy przechowywanych przez bazę danych w osobnym indeksie. Aby znaleźć lub zapisać wiersz w indeksowanej tabeli lub klastrze, należy wykonać co najmniej dwa operacje we/wy:

  • jedną lub więcej operacji we/wy do znalezienia lub zapisania wartości klucza w indeksie,
  • kolejną operację we/wy do odczytu lub zapisu wiersza w tabeli lub klastrze.

Komentarze

Popularne posty z tego bloga

Oracle Apex, low-code na froncie

Co to jest APEX? Nazwa APEX to skrót dwóch słów określających ideę APEX- Application Express. Jest to rozwiązanie low-code, stworzone przez firmę Oracle w 2004 roku. Oparte jest o bazę danych i służy do budowania aplikacji webowych operujących na danych. APEX pozwala budować aplikacje łatwiej i szybciej, dzięki predefiniowanym komponentom i intuicyjnym funkcjonalnościom. Co to jest low-code? Low-code to technologia budowania aplikacji przez graficzny interfejs użytkownika, bez użycia standardowych 'ręcznych' metod kodowania i wiedzy programistycznej. Do budowania aplikacji metodą low-code służą platformy low-code, które wykorzystują gotowe i sprawdzone funkcjonalności. Jedną z z takich platform low-code jest Oracle APEX. Jak działa APEX? Oracle Apex wykorzystuje trójpoziomową architekturę, w której zapytania z przeglądarki są wysyłane przez serwer webowy do bazy danych. Całe przetwarzanie danych i logika biznesowa jest wykonywana po stronie bazy danych. Taka arch...

Architektura bazy Oracle

  Struktura W bazie danych Oracle występują trzy główne struktury: pamięci procesu danych Pod określeniem bazy danych należy rozumieć bazę danych oraz instancję bazy danych. Baza składa się zarówno ze struktur fizycznych, jak i struktur logicznych. Ponieważ są one od siebie oddzielone, możliwe jest przechowywanie danych w strukturach fizycznych bez wpływu na dostęp do logicznych struktur danych. W skład instancji wchodzą struktury pamięci i procesy tła powiązane z instancją. Za każdym razem kiedy instancja jest uruchamiana, alokowany jest obszar pamięci współdzielonej nazywany System Global Area (SGA) i uruchamiane są procesy w tle. Procesy są jobami, które wykonywane są w pamięci komputera. Proces jest definiowany jako wątek lub mechanizm w systemie operacyjnym, który może wykonywać sekwencję działań. Po uruchomieniu instancji bazy danych, oprogramowanie Oracle łączy instancję z konkretną fizyczną bazą danych. Określane jest to jako mapowanie bazy danych. Po tym kroku...