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


Horizontális skálázási modellek

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

A horizontális skálázás az adatbázisrendszerekben és az elosztott számítástechnikában használt technika, amellyel több kiszolgáló vagy csomópont között horizontálisan particionálhatók az adatok. Ez magában foglalja egy nagy adatbázis vagy adatkészlet kisebb, kezelhetőbb részekre, úgynevezett szegmensekre való felosztását. A szegmensek az adatok egy részhalmazát tartalmazzák, és a szegmensek együttesen alkotják a teljes adathalmazt.

Az Azure Cosmos DB for PostgreSQL kétféle adathardingot kínál, azaz soralapú és sémaalapú skálázást. Mindegyik lehetőség saját horizontális horizontális felosztással rendelkezik, így kiválaszthatja az alkalmazás követelményeinek leginkább megfelelő megközelítést.

Soralapú horizontális skálázás

Az Azure Cosmos DB for PostgreSQL szegmenstábláinak hagyományos módja az önálló adatbázis, a megosztott sémamodell, más néven soralapú horizontális skálázás, a bérlők pedig egy táblán belüli sorokként működnek együtt. A bérlőt egy terjesztési oszlop definiálásával határozzuk meg, amely lehetővé teszi a táblák vízszintes felosztását.

A soralapú a horizontális skálázás leghatékonyabb hardveres módja. A bérlők sűrűn vannak csomagolva és elosztva a fürt csomópontjai között. Ehhez a megközelítéshez azonban gondoskodnia kell arról, hogy a séma összes táblája tartalmazza a terjesztési oszlopot, és hogy az alkalmazás összes lekérdezése szűrje azt. A soralapú horizontális skálázás az IoT-számítási feladatokban és a legjobb hardverhasználati árrést nyújtja.

Előnyök:

  • Legjobb teljesítmény
  • A legjobb bérlői sűrűség csomópontonként

Hátránya:

  • Sémamódosítást igényel
  • Alkalmazás lekérdezésének módosítására van szükség
  • Minden bérlőnek ugyanazzal a sémával kell rendelkeznie

Sémaalapú horizontális skálázás

A Citus 12.0-val elérhető az Azure Cosmos DB for PostgreSQL-ben, a sémaalapú horizontális skálázás a megosztott adatbázis, külön sémamodell, a séma az adatbázis logikai szegmensévé válik. A több-bérlős alkalmazások bérlőnként egy sémát használhatnak a bérlői dimenzió mentén történő könnyű szilánkoláshoz. A lekérdezési módosításokra nincs szükség, és az alkalmazásnak csak egy kis módosításra van szüksége a bérlőváltáskor a megfelelő search_path beállításához. A sémaalapú horizontális skálázás ideális megoldás mikroszolgáltatásokhoz, valamint olyan alkalmazásokat üzembe helyező ISV-k számára, amelyek nem tudják elvégezni a soralapú horizontális skálázáshoz szükséges módosításokat.

Előnyök:

  • A bérlők heterogén sémákkal rendelkezhetnek
  • Nincs szükség sémamódosításra
  • Nincs szükség alkalmazás-lekérdezés-módosításra
  • A sémaalapú horizontális skálázási SQL-kompatibilitás jobb a soralapú horizontális skálázáshoz képest

Hátránya:

  • Csomópontonként kevesebb bérlő a soralapú horizontális skálázáshoz képest

Horizontális skálázási kompromisszumok

Sémaalapú horizontális skálázás Soralapú horizontális skálázás
Több-bérlős modell Séma elkülönítése bérlőnként Megosztott táblák bérlőazonosító-oszlopokkal
Citus-verzió 12.0+ Az összes verzió
További lépések a Vanilla PostgreSQL-hez képest Nincs, csak a konfiguráció módosítása A create_distributed_table minden táblán a > bérlőazonosító alapján oszthatja el a táblákat
Bérlők száma 1-10k 1-1 M+
Adatmodellezési követelmény Nincs idegen kulcs az elosztott sémák között Minden táblában szerepelnie kell egy bérlőazonosító oszlopnak (egy terjesztési oszlopnak, más néven horizontális kulcsnak), valamint az elsődleges kulcsokban az idegen kulcsok
Sql-követelmény egycsomópontos lekérdezésekhez Egyetlen elosztott séma használata lekérdezésenként Az illesztéseknek és a WHERE záradékoknak tartalmazniuk kell tenant_id oszlopot
Párhuzamos bérlőközi lekérdezések Nem Igen
Egyéni tábladefiníciók bérlőnként Igen Nem
Hozzáférés-vezérlés Sémaengedélyek Sémaengedélyek
Bérlők közötti adatmegosztás Igen, hivatkozástáblák használata (külön sémában) Igen, referenciatáblák használatával
Bérlő és szegmens elkülönítése Minden bérlő saját szegmenscsoporttal rendelkezik definíció szerint Adott bérlői azonosítóknak saját szegmenscsoportot adhat a isolate_tenant_to_new_shard