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


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

A KÖVETKEZŐKRE VONATKOZIK: Azure Cosmos DB for PostgreSQL (a Citus adatbázisbővítménye a PostgreSQL-re)

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, hogy a GIN-index be van kapcsolvapayload.github_events 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

create_distributed_table() Az Azure Cosmos DB for PostgreSQL által biztosított varázsfüggvény a táblák elosztásához és az erőforrások több gép közötti használatához. 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.