Megosztás a következőn keresztül:


Táblák létrehozása és terjesztése az Azure Cosmos DB for PostgreSQL-ben

Fontos

Az Azure Cosmos DB for PostgreSQL már nem támogatott új projektek esetén. Ne használja ezt a szolgáltatást új projektekhez. Ehelyett használja az alábbi két szolgáltatás egyikét:

  • Az Azure Cosmos DB for NoSQL használata nagy léptékű forgatókönyvekhez tervezett elosztott adatbázis-megoldáshoz 99,999% rendelkezésre állási szolgáltatásiszint-szerződéssel (SLA), azonnali automatikus skálázással és automatikus feladatátvétellel több régióban.

  • Használja az Azure Database For PostgreSQL Rugalmas fürtök funkcióját a megosztott PostgreSQL-hez a nyílt forráskódú Citus-bővítmény használatával.

Ebben a példában az Azure Cosmos DB for PostgreSQL elosztott tábláit fogjuk használni a GitHub nyílt forráskód közreműködőitől rögzített események tárolására és lekérdezésére.

Előfeltételek

A rövid útmutató követéséhez először a következőket kell elvégeznie:

  1. Hozzon létre egy fürtöt az Azure Portalon.
  2. Az SQL-parancsok futtatásához csatlakozzon a fürthöz psql használatával.

Táblák létrehozása

Miután csatlakozott a psql-en keresztül, hozzuk létre a táblázatot. Másolja és illessze be a következő parancsokat a psql terminálablakba, és nyomja le az Enter billentyűt a futtatáshoz:

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);

Figyelje meg a GIN-indexet a payload elemnél a github_events helyen. Az index lehetővé teszi a gyors lekérdezést a JSONB oszlopban. Mivel a Citus egy PostgreSQL-bővítmény, az Azure Cosmos DB for PostgreSQL támogatja a speciális PostgreSQL-funkciókat, például a JSONB adattípust a félig strukturált adatok tárolásához.

Táblák elosztása

Az Azure Cosmos DB for PostgreSQL egy varázslatos funkciót biztosít, amely lehetővé teszi a táblák elosztását és az erőforrások több gép közötti felhasználását. A függvény szegmensekre bontja a táblákat, amelyek a nagyobb tárolási és számítási teljesítmény érdekében szétoszthatók a csomópontokon.

Feljegyzés

Valós alkalmazásokban, ha a számítási feladat 64 virtuális magban, 256 GB RAM-ban és 2 TB-tárterületben van, használhat egy egycsomópontos fürtöt. Ebben az esetben a táblák elosztása nem kötelező. Később szükség szerint eloszthatja a táblákat a create_distributed_table_concurrently használatával.

Osztjuk el a táblákat:

SELECT create_distributed_table('github_users', 'user_id');
SELECT create_distributed_table('github_events', 'user_id');

Fontos

Táblák elosztása vagy sémaalapú horizontális skálázás szükséges az Azure Cosmos DB for PostgreSQL teljesítményfunkcióinak kihasználásához. Ha nem terjeszt táblákat vagy sémákat, akkor a feldolgozó csomópontok nem tudnak az adataikkal kapcsolatos lekérdezéseket futtatni.

Adatok betöltése elosztott táblákba

Készen állunk a táblák mintaadatokkal való kitöltésére. Ebben a rövid útmutatóban a GitHub API-ból korábban rögzített adatkészletet fogjuk használni.

A pg_azure_storage bővítményt fogjuk használni, hogy közvetlenül egy nyilvános tárolóból töltjük be az adatokat az Azure Blob Storage-ban. Először létre kell hoznunk a bővítményt az adatbázisunkban:

SELECT * FROM create_extension('azure_storage');

Futtassa az alábbi parancsokat, hogy az adatbázis lekérje a példa CSV-fájlokat, és betöltse őket az adatbázistáblákba.

-- 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';

Figyelje meg, hogy a bővítmény felismerte, hogy a másolási parancshoz megadott URL-címek az Azure Blob Storage-ból származnak, az általunk mutatott fájlok gzip tömörítve voltak, és azokat is automatikusan kezeltük.

Az elosztott táblák részleteit, beleértve azok méretét is, a következő nézettel citus_tables tekinthetjük át:

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)

Következő lépések

Most már elosztottuk a táblákat, és betöltöttük őket adatokkal. Ezután próbálkozzunk a lekérdezések futtatásával az elosztott táblák között.