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.
W tym przykładzie użyjemy tabel rozproszonych usługi Azure Cosmos DB for PostgreSQL do przechowywania i wykonywania zapytań dotyczących zdarzeń zarejestrowanych przez współautorów typu open source w usłudze GitHub.
Wymagania wstępne
Aby wykonać czynności opisane w tym szybkim przewodniku, najpierw musisz:
- Utwórz klaster w witrynie Azure Portal.
- Połącz się z klastrem za pomocą narzędzia psql, aby uruchomić polecenia SQL.
Utwórz tabele
Po nawiązaniu połączenia za pośrednictwem narzędzia psql utwórzmy naszą tabelę. Skopiuj i wklej następujące polecenia w oknie terminalu programu psql i naciśnij Enter, aby uruchomić:
CREATE TABLE github_users
(
user_id bigint,
url text,
login text,
avatar_url text,
gravatar_id text,
display_login text
);
CREATE TABLE github_events
(
event_id bigint,
event_type text,
event_public boolean,
repo_id bigint,
payload jsonb,
repo jsonb,
user_id bigint,
org jsonb,
created_at timestamp
);
CREATE INDEX event_type_index ON github_events (event_type);
CREATE INDEX payload_index ON github_events USING GIN (payload jsonb_path_ops);
Zwróć uwagę na indeks GIN na payload w github_events. Indeks umożliwia szybkie wykonywanie zapytań w kolumnie JSONB. Ponieważ Citus jest rozszerzeniem PostgreSQL, usługa Azure Cosmos DB for PostgreSQL obsługuje zaawansowane funkcje postgreSQL, takie jak typ danych JSONB do przechowywania danych częściowo ustrukturyzowanych.
Dystrybuowanie tabel
create_distributed_table() to magiczna funkcja, którą usługa Azure Cosmos DB for PostgreSQL udostępnia w celu dystrybuowania tabel i używania zasobów na wielu komputerach. Funkcja rozkłada tabele na fragmenty, które można rozłożyć między węzły w celu zwiększenia wydajności magazynu i obliczeń.
Uwaga
W rzeczywistych aplikacjach, gdy obciążenie mieści się w 64 rdzeniach wirtualnych, 256 GB pamięci RAM i 2 TB magazynu, można użyć klastra z jednym węzłem. W takim przypadku dystrybucja tabel jest opcjonalna. Później możesz dystrybuować tabele zgodnie z potrzebami przy użyciu create_distributed_table_concurrently.
Rozłóżmy tabele:
SELECT create_distributed_table('github_users', 'user_id');
SELECT create_distributed_table('github_events', 'user_id');
Ważne
Rozpowszechnianie tabel lub używanie fragmentowania opartego na schemacie jest niezbędne do korzystania z funkcji wydajności usługi Azure Cosmos DB for PostgreSQL. Jeśli nie dystrybuujesz tabel ani schematów, węzły procesu roboczego nie mogą pomóc w uruchamianiu zapytań dotyczących ich danych.
Ładowanie danych do tabel rozproszonych
Jesteśmy gotowi wypełnić tabele przykładowymi danymi. W tej instrukcji szybkiego startu skorzystamy z zestawu danych uzyskanego wcześniej z API GitHub.
Użyjemy rozszerzenia pg_azure_storage, aby załadować dane bezpośrednio z kontenera publicznego w usłudze Azure Blob Storage. Najpierw musimy utworzyć rozszerzenie w naszej bazie danych:
SELECT * FROM create_extension('azure_storage');
Uruchom następujące polecenia, aby baza danych pobierała przykładowe pliki CSV i ładowała je do tabel bazy danych.
-- download users and store in table
COPY github_users FROM 'https://pgquickstart.blob.core.windows.net/github/users.csv.gz';
-- download events and store in table
COPY github_events FROM 'https://pgquickstart.blob.core.windows.net/github/events.csv.gz';
Zwróć uwagę, że rozszerzenie rozpoznało, iż adresy URL podane w poleceniu kopiowania pochodzą z usługi Azure Blob Storage, a wskazane przez nas pliki były skompresowane za pomocą narzędzia gzip, co również zostało automatycznie dla nas obsłużone.
Możemy przejrzeć szczegóły naszych tabel rozproszonych, w tym ich rozmiary, za pomocą widoku citus_tables.
SELECT * FROM citus_tables;
table_name | citus_table_type | distribution_column | colocation_id | table_size | shard_count | table_owner | access_method
---------------+------------------+---------------------+---------------+------------+-------------+-------------+---------------
github_events | distributed | user_id | 1 | 388 MB | 32 | citus | heap
github_users | distributed | user_id | 1 | 39 MB | 32 | citus | heap
(2 rows)
Następne kroki
Teraz mamy tabele rozproszone i załadowaliśmy je danymi. Następnie spróbujemy uruchomić zapytania w tabelach rozproszonych.