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:
- Hozzon létre egy fürtöt az Azure Portalon.
- 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.