Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Usługa Azure Cosmos DB for PostgreSQL nie jest już obsługiwana w przypadku nowych projektów. Nie używaj tej usługi dla nowych projektów. Zamiast tego użyj jednej z tych dwóch usług:
Użyj usługi Azure Cosmos DB for NoSQL dla rozproszonego rozwiązania bazy danych przeznaczonego dla scenariuszy o dużej skali z umową dotyczącą poziomu usług dostępności 99,999% (SLA), natychmiastowym skalowaniem automatycznym i automatycznym przejściem w tryb failover w wielu regionach.
Użyj funkcji Elastic Clusters usługi Azure Database for PostgreSQL na potrzeby fragmentowanej bazy danych PostgreSQL przy użyciu rozszerzenia Citus typu open source.
Fragmentowanie jest techniką używaną w systemach baz danych i przetwarzaniem rozproszonym w celu partycjonowania danych w poziomie na wielu serwerach lub węzłach. Obejmuje to podzielenie dużej bazy danych lub zestawu danych na mniejsze, bardziej zarządzane części nazywane fragmentami. Fragment zawiera podzbiór danych, a razem fragmenty tworzą kompletny zestaw danych.
Usługa Azure Cosmos DB for PostgreSQL oferuje dwa typy fragmentowania danych, a mianowicie oparte na wierszach i oparte na schemacie. Każda opcja zawiera własne kompromisy fragmentowania, co pozwala wybrać podejście, które najlepiej odpowiada wymaganiom aplikacji.
Fragmentowanie oparte na wierszach
Tradycyjny sposób, w jaki tabele fragmentów usługi Azure Cosmos DB for PostgreSQL to pojedyncza baza danych, udostępniony model schematu znany również jako fragmentowanie oparte na wierszach, dzierżawcy współistnieją jako wiersze w tej samej tabeli. Dzierżawa jest określana przez zdefiniowanie kolumny dystrybucji, która umożliwia podzielenie tabeli w poziomie.
Oparte na wierszach to najbardziej wydajny sprzętowy sposób dzielenia na fragmenty. Dzierżawy są gęsto pakowane i dystrybuowane między węzłami w klastrze. Takie podejście wymaga jednak upewnienia się, że wszystkie tabele w schemacie mają kolumnę dystrybucji i wszystkie zapytania w filtrze aplikacji. Fragmentowanie oparte na wierszach sprawdza się w obciążeniach IoT i pozwala osiągnąć najlepszy możliwy zwrot z wykorzystania sprzętu.
Korzyści:
- Najlepsza wydajność
- Najlepsza gęstość dzierżawy na węzeł
Wady:
- Wymaga modyfikacji schematu
- Wymaga modyfikacji zapytań aplikacji
- Wszystkie dzierżawy muszą współużytkować ten sam schemat
Fragmentowanie oparte na schemacie
Dostępne w Citus 12.0 w usłudze Azure Cosmos DB for PostgreSQL, fragmentowanie oparte na schemacie stosuje model współdzielonej bazy danych z oddzielnymi schematami, gdzie schemat staje się logicznym fragmentem w bazie danych. Aplikacje wielodostępne mogą używać schematu dla każdego najemcy, aby łatwo rozdzielać dane według najemców. Zmiany zapytań nie są potrzebne, a aplikacja wymaga jedynie niewielkiej modyfikacji, aby ustawić odpowiedni search_path podczas przełączania najemców. Fragmentowanie oparte na schemacie to idealne rozwiązanie dla mikrousług, a dostawcy oprogramowania wdrażające aplikacje, które nie mogą przejść zmian wymaganych do dołączenia fragmentowania opartego na wierszach.
Korzyści:
- Najemcy mogą mieć heterogeniczne schematy
- Nie są wymagane żadne modyfikacje schematu
- Nie są wymagane żadne modyfikacje zapytań aplikacji
- Zgodność z fragmentowaniem SQL oparta na schemacie jest lepsza w porównaniu z fragmentowaniem opartym na wierszach
Wady:
- Mniejsza liczba najemców na węzeł w porównaniu z fragmentowaniem opartym na wierszach
Kompromisy fragmentowania
| Fragmentowanie oparte na schemacie | Fragmentowanie oparte na wierszach | |
|---|---|---|
| Model wielonajemczy | Oddzielny schemat dla najemcy | Udostępnione tabele z kolumnami ID dzierżawcy |
| Wersja Citus | 12.0+ | Wszystkie wersje |
| Dodatkowe kroki w porównaniu ze standardowym PostgreSQL | Brak, tylko zmiana konfiguracji | Użyj create_distributed_table dla każdej tabeli, aby dystrybuować i przyporządkować tabele według identyfikatora najemcy |
| Liczba dzierżaw | 1–10 tys. | 1–1 M+ |
| Wymaganie modelowania danych | Brak kluczy obcych w schematach rozproszonych | Należy uwzględnić kolumnę identyfikatora najemcy (kolumnę dystrybucji, znaną również jako klucz fragmentowania) w każdej tabeli oraz w kluczach podstawowych i obcych. |
| Wymaganie SQL dotyczące zapytań z jednym węzłem | Używanie pojedynczego schematu rozproszonego na zapytanie | Sprzężenia i klauzule WHERE powinny zawierać kolumnę tenant_id |
| Równoległe zapytania między dzierżawami | Nie. | Tak |
| Niestandardowe definicje tabel na dzierżawę | Tak | Nie. |
| Kontrola dostępu | Uprawnienia schematu | Uprawnienia schematu |
| Udostępnianie danych między dzierżawami | Tak, przy użyciu tabel odwołań (w osobnym schemacie) | Tak, przy użyciu tabel referencyjnych |
| Izolacja dzierżawy do fragmentowania | Każdy najemca ma własną grupę shardów według definicji | Może nadać określonym identyfikatorom dzierżawy własną grupę fragmentów za pośrednictwem isolate_tenant_to_new_shard |