Mike Sherrill „Cat Recall” dał doskonałą odpowiedź . Dodam po prostu jeden przykład: Postgres .
Klaster = instalacja Postgres
Podczas instalowania Postgres na komputerze ta instalacja jest nazywana klastrem . Termin „klaster” nie jest tu rozumiany w sensie sprzętowym wielu komputerów pracujących razem. W Postgres klaster odnosi się do faktu, że możesz mieć wiele niepowiązanych baz danych, wszystkie działające przy użyciu tego samego silnika serwera Postgres.
Słowo klaster jest również definiowane przez standard SQL w taki sam sposób, jak w Postgres. Ściśle przestrzeganie standardu SQL jest głównym celem projektu Postgres.
Specyfikacja SQL-92 mówi:
Klaster to zbiór katalogów zdefiniowany w ramach implementacji.
i
Dokładnie jeden klaster jest powiązany z sesją SQL
To tępy sposób powiedzenia, że klaster to serwer bazy danych (każdy katalog to baza danych).
Klaster> Katalog> Schemat> Tabela> Kolumny i wiersze
Więc zarówno w Postgresie, jak iw standardzie SQL mamy następującą hierarchię zawierania:
- Komputer może mieć jeden klaster lub wiele.
- Serwer bazy danych to klaster .
- Klaster ma katalogi . (Katalog = baza danych)
- Katalogi mają schematy . (Schemat = przestrzeń nazw tabel i granica zabezpieczeń)
- Schematy mają tabele .
- Tabele mają rzędy .
- Wiersze mają wartości zdefiniowane przez kolumny .
Te wartości to dane biznesowe, na których zależy Twoim aplikacjom i użytkownikom, takie jak imię i nazwisko osoby, termin płatności faktury, cena produktu, wysoki wynik gracza. Kolumna definiuje typ danych wartości (tekst, data, liczba itd.).

Wiele klastrów
Ten diagram przedstawia pojedynczy klaster. W przypadku Postgres można mieć więcej niż jeden klaster na komputer hosta (lub wirtualny system operacyjny). Zwykle wykonuje się wiele klastrów w celu testowania i wdrażania nowych wersji Postgres (np .: 9.0 , 9.1 , 9.2 , 9.3 , 9.4 , 9.5 ).
Jeśli masz wiele klastrów, wyobraź sobie powielony diagram powyżej.
Różne numery portów umożliwiają współdziałanie wielu klastrów w tym samym czasie. Każdy klaster miałby przypisany własny numer portu. Zwykłe 5432jest tylko domyślne i możesz je ustawić samodzielnie. Każdy klaster nasłuchuje na swoim własnym przypisanym porcie dla przychodzących połączeń z bazą danych.
Przykładowy scenariusz
Na przykład firma może mieć dwa różne zespoły programistyczne. Jeden pisze oprogramowanie do zarządzania magazynami, podczas gdy drugi zespół tworzy oprogramowanie do zarządzania sprzedażą i marketingiem. Każdy zespół deweloperów ma własną bazę danych, błogo nieświadomą innych.
Ale zespół operacyjny IT podjął decyzję o uruchomieniu obu baz danych na jednym komputerze (Linux, Mac, cokolwiek). Więc na tym pudełku zainstalowali Postgres. Czyli jeden serwer bazy danych (klaster bazy danych). W tym klastrze tworzą dwa katalogi, katalog dla każdego zespołu programistów: jeden o nazwie „magazyn” i jeden o nazwie „sprzedaż”.
Każdy zespół programistów używa dziesiątek tabel o różnych celach i rolach dostępu. Dlatego każdy zespół programistów organizuje swoje tabele w schematy. Przypadkowo oba zespoły programistów śledzą dane księgowe, więc tak się składa, że każdy zespół ma schemat o nazwie „księgowość”. Używanie tej samej nazwy schematu nie stanowi problemu, ponieważ każdy katalog ma własną przestrzeń nazw, więc nie ma kolizji.
Ponadto każdy zespół ostatecznie tworzy tabelę do celów księgowych o nazwie „księga główna”. Ponownie, bez kolizji nazw.
Możesz myśleć o tym przykładzie jako o hierarchii…
- Komputer (skrzynka sprzętowa lub serwer zwirtualizowany)
Postgres 9.2 klaster (instalacja)
warehouse katalog (baza danych)
inventory schemat
accounting schemat
ledger stół
- [… Kilka innych tabel]
sales katalog (baza danych)
selling schemat
accounting schemat (przypadkowo taka sama nazwa jak powyżej)
ledger tabela (przypadkowo taka sama nazwa jak powyżej)
- [… Kilka innych tabel]
Postgres 9.3 grupa
- [… Inne schematy i tabele]
Oprogramowanie każdego zespołu deweloperskiego nawiązuje połączenie z klastrem. Robiąc to, muszą określić, który katalog (baza danych) jest ich. Postgres wymaga połączenia się z jednym katalogiem, ale nie jesteś ograniczony do tego katalogu. Ten początkowy katalog jest tylko domyślnym, używanym, gdy w instrukcjach SQL pomijana jest nazwa katalogu.
Więc jeśli zespół programistów kiedykolwiek będzie musiał uzyskać dostęp do tabel innego zespołu, może to zrobić, jeśli administrator bazy danych nadał im takie uprawnienia . Dostęp odbywa się z jawnym nazewnictwem we wzorcu: catalog.schema.table . Jeśli więc zespół „magazynu” musi zobaczyć księgę innego zespołu (zespołu „sprzedaży”), pisze instrukcje SQL za pomocą sales.accounting.ledger. Aby uzyskać dostęp do własnej księgi, po prostu piszą accounting.ledger. Jeżeli mają dostęp do obu ksiąg w tym samym kawałku kodu źródłowego, mogą wybrać, aby uniknąć nieporozumień przy tym własnego (opcjonalnie) nazwę katalogu, warehouse.accounting.ledgerw porównaniu sales.accounting.ledger.
Tak poza tym…
Możesz usłyszeć słowo schemat używane w bardziej ogólnym sensie, oznaczającym cały projekt struktury tabeli konkretnej bazy danych. Z kolei w standardzie SQL słowo to oznacza konkretnie określoną warstwę w Cluster > Catalog > Schema > Tablehierarchii.
Postgres używa zarówno bazy danych słów, jak i katalogu w różnych miejscach, takich jak komenda CREATE DATABASE .
Nie wszystkie systemy baz danych zapewniają tę pełną hierarchię plików Cluster > Catalog > Schema > Table. Niektóre mają tylko jeden katalog (bazę danych). Niektóre nie mają schematu, tylko jeden zestaw tabel. Postgres to wyjątkowo potężny produkt.
...Catalog > Schema..., czy ktoś może mi powiedzieć, dlaczego węzły „Catalog” i „Schema” w pgAdmin (UI PostgreSQL) są węzłami rodzeńskimi, a nie węzłem schematu jako węzłem podrzędnym katalogu?