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


A skálázás alapvető fogalmai 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)

Mielőtt megvizsgálnánk egy új alkalmazás létrehozásának lépéseit, hasznos lehet gyorsan áttekinteni az érintett kifejezéseket és fogalmakat.

Architekturális áttekintés

Az Azure Cosmos DB for PostgreSQL segítségével táblákat és/vagy sémákat oszthat ki egy fürt több gépén, és transzparens módon lekérdezheti őket, ugyanúgy, mint az egyszerű PostgreSQL-et:

A koordinátor csomópontjának diagramja, amely egy táblát horizontálisan skáláz a feldolgozó csomópontokra.

Az Azure Cosmos DB for PostgreSQL architektúrában több csomóponttípus létezik:

  • A koordinátor csomópont tárolja az elosztott tábla metaadatait, és felelős az elosztott tervezésért.
  • Ezzel szemben a feldolgozó csomópontok tárolják a tényleges adatokat, metaadatokat, és elvégezik a számítást.
  • A koordinátor és a feldolgozók is egyszerű PostgreSQL-adatbázisok, a citus bővítmény betöltve.

Normál PostgreSQL-táblázat terjesztéséhez , például campaigns a fenti ábrán, futtasson egy úgynevezett create_distributed_table()parancsot. A parancs futtatása után az Azure Cosmos DB for PostgreSQL transzparens módon hoz létre szegmenseket a táblához a feldolgozó csomópontok között. A diagramban a szegmensek kék mezőkként jelennek meg.

Normál PostgreSQL-séma terjesztéséhez futtassa a citus_schema_distribute() parancsot. A parancs futtatása után az Azure Cosmos DB for PostgreSQL transzparensen egyetlen, a fürt csomópontjai közötti egységként áthelyezhető, szegmensekkel tagolt táblává alakítja az ilyen sémákban lévő táblákat.

Feljegyzés

Munkavégző csomópontok nélküli fürtökön az elosztott táblák szegmensei a koordinátor csomóponton találhatók.

A szegmensek egyszerű (de speciálisan elnevezett) PostgreSQL-táblák, amelyek az adatok szeleteit tartalmazzák. A példánkban, mivel a campaigns company_idszilánkok olyan kampányokat tárolnak, amelyekben a különböző vállalatok kampányai különböző szegmensekhez vannak rendelve.

Terjesztési oszlop (más néven szegmenskulcs)

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.

SELECT create_distributed_table(
	'table_name',
	'distribution_column');

A fenti második argumentum egy oszlopot választ ki a táblázatból terjesztési oszlopként. Bármely olyan oszlop lehet, amely natív PostgreSQL-típussal rendelkezik (az egész szám és a szöveg a leggyakoribb). A terjesztési oszlop értéke határozza meg, hogy mely sorok melyik szegmensekbe kerülnek, ezért a terjesztési oszlopot szegmenskulcsnak is nevezik.

Az Azure Cosmos DB for PostgreSQL a szegmenskulcs használata alapján dönti el, hogyan futtathat lekérdezéseket:

A lekérdezés magában foglalja A futtatás helye
csak egy szegmenskulcs a szegmenst tartalmazó feldolgozó csomóponton
több szegmenskulcs párhuzamosított több csomópont között

A szegmenskulcs kiválasztása határozza meg az alkalmazások teljesítményét és méretezhetőségét.

  • A szegmenskulcsonkénti egyenetlen adateloszlás (más néven adateltérés) nem optimális a teljesítmény szempontjából. Ne válasszon például olyan oszlopot, amelynek egyetlen értéke az adatok 50%-át képviseli.
  • Az alacsony számosságú szegmenskulcsok hatással lehetnek a méretezhetőségre. Csak annyi szegmenst használhat, amennyi különböző kulcsérték van. Válasszon egy több száztól több ezerig számosságú kulcsot.
  • Két nagy tábla különböző szegmenskulcsokkal való összekapcsolása lassú lehet. Válasszon egy közös szegmenskulcsot a nagy táblák között. További információ a közös elhelyezésről.

Közös elhelyezés

A szilánkkulcshoz szorosan kapcsolódó másik fogalom a közös elhelyezés. Az azonos terjesztési oszlopértékekkel szilánkolt táblák egymásba vannak helyezve – A megosztott táblák szegmensei ugyanazon a feldolgozón vannak tárolva.

Az alábbiakban két táblát szilánkos ugyanaz a kulcs, site_id. Áthelyezték őket.

A site_id által megosztott táblák http_request és http_request_1min diagramja.

Az Azure Cosmos DB for PostgreSQL biztosítja, hogy a két táblában egyező értékkel rendelkező site_id sorok ugyanazon a feldolgozó csomóponton legyenek tárolva. Láthatja, hogy mindkét tábla esetében a sorokat site_id=1 az 1. feldolgozó tárolja. Más webhelyazonosítókhoz hasonlóan.

A kolocation segít optimalizálni a JOIN-eket ezeken a táblákon. Ha csatlakozik a két táblához site_id, az Azure Cosmos DB for PostgreSQL helyileg is végrehajthatja az illesztést a munkavégző csomópontokon anélkül, hogy az adatokat a csomópontok között keveri.

Az elosztott sémán belüli táblák mindig egymással vannak együtt helyezve.

Következő lépések