Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Bérlőazonosító szegmenskulcsként
A bérlőazonosító a számítási feladat gyökerének oszlopa, vagy az adatmodell hierarchiájának felső része. Ebben az SaaS e-kereskedelmi sémában például az áruház azonosítója:
Ez az adatmodell egy olyan üzletre jellemző, mint a Shopify. Több online áruház webhelyeit üzemelteti, ahol minden áruház a saját adataival kommunikál.
- Ez az adatmodell több táblát tartalmaz: áruházakat, termékeket, rendeléseket, sorelemeket és országokat.
- Az áruházak táblázata a hierarchia tetején található. A termékek, rendelések és sorelemek mind az áruházakhoz vannak társítva, így alacsonyabbak a hierarchiában.
- Az országtábla nem kapcsolódik az egyes üzletekhez, hanem a különböző üzletek között van.
Ebben a példában , store_idamely a hierarchia tetején található, a bérlő azonosítója. Ez a megfelelő töredékkulcs. A store_id szilánkkulcsként való kiválasztása lehetővé teszi az adatok összehangolását az összes táblában egyetlen áruházhoz egyetlen munkásnál.
A táblák tárolónkénti áthelyezésének előnyei:
- SQL-lefedettséget biztosít, például idegen kulcsokat, JOIN-eket. Az egyetlen bérlő tranzakciói egyetlen munkavégző csomóponton vannak honosítva, ahol az egyes bérlők léteznek.
- Egyjegyű ezredmásodperces teljesítményt ér el. Egy bérlő lekérdezései egyetlen csomópontra lesznek irányítva a párhuzamos feldolgozás helyett, ami segít optimalizálni a hálózati lépéseket, és skálázni a számítási és memória kapacitást.
- Skálázható. A bérlők számának növekedésével csomópontokat adhat hozzá, és újraegyensúlyozhatja a bérlőket az új csomópontokhoz, vagy akár elkülönítheti a nagy bérlőket a saját csomópontjaikhoz. A bérlői elkülönítés lehetővé teszi, hogy dedikált erőforrásokat biztosítson.
Optimális adatmodell több-bérlős alkalmazásokhoz
Ebben a példában az üzletspecifikus táblákat üzletazonosító szerint kell elosztanunk, és referenciatáblát kell készítenünk countries .
Fontos megjegyezni, hogy a bérlőspecifikus táblák rendelkeznek a bérlőazonosítóval, és elosztott formában vannak. Példánkban üzletek, termékek és sor tételek kerülnek elosztásra. A többi tábla referenciatáblák. A példánkban az Országok tábla egy referenciatábla.
-- Distribute large tables by the tenant ID
SELECT create_distributed_table('stores', 'store_id');
SELECT create_distributed_table('products', 'store_id', colocate_with => 'stores');
-- etc for the rest of the tenant tables...
-- Then, make "countries" a reference table, with a synchronized copy of the
-- table maintained on every worker node
SELECT create_reference_table('countries');
Minden nagy táblának rendelkeznie kell a bérlőazonosítóval.
- Ha egy meglévő több-bérlős alkalmazást migrál az Azure Cosmos DB for PostgreSQL-be, előfordulhat, hogy egy kicsit denormalizálnia kell a nagy táblákat, hozzá kell adnia a bérlő ID oszlopot, ha hiányzik, majd ki kell töltenie az oszlop hiányzó értékeit.
- Az Azure Cosmos DB for PostgreSQL-en futó új alkalmazások esetében győződjön meg arról, hogy a bérlőazonosító megtalálható az összes bérlőspecifikus táblában.
Győződjön meg arról, hogy a bérlőazonosítót az elosztott táblák elsődleges, egyedi és idegen kulcsra vonatkozó megkötéseihez összetett kulcs formájában kell megadni. Ha például egy táblának id az elsődleges kulcsa, alakítsa (tenant_id,id)-re mint összetett kulcs.
A referenciatáblák kulcsait nem kell módosítani.
Lekérdezési szempontok a legjobb teljesítmény érdekében
A bérlőazonosítóra szűrő elosztott lekérdezések a leghatékonyabban futnak több-bérlős alkalmazásokban. Győződjön meg arról, hogy a lekérdezések mindig egyetlen bérlőre terjednek ki.
SELECT *
FROM orders
WHERE order_id = 123
AND store_id = 42; -- ← tenant ID filter
A bérlőazonosító-szűrőt akkor is hozzá kell adni, ha az eredeti szűrőfeltételek egyértelműen azonosítják a kívánt sorokat. A bérlőazonosító-szűrő látszólag redundáns módon tájékoztatja az Azure Cosmos DB for PostgreSQL-et, hogyan irányíthatja a lekérdezést egyetlen feldolgozó csomópontra.
Hasonlóképpen, ha két elosztott táblához csatlakozik, győződjön meg arról, hogy mindkét tábla hatóköre egyetlen bérlőre terjed ki. A hatókör meghatározásához gondoskodjon arról, hogy az illesztés feltételei tartalmazzák a bérlőazonosítót.
SELECT sum(l.quantity)
FROM line_items l
INNER JOIN products p
ON l.product_id = p.product_id
AND l.store_id = p.store_id -- ← tenant ID in join
WHERE p.name='Awesome Wool Pants'
AND l.store_id='8c69aa0d-3f13-4440-86ca-443566c1fc75';
-- ↑ tenant ID filter
Számos népszerű alkalmazás-keretrendszer segédkódtárai megkönnyítik a bérlőazonosítók lekérdezésekbe való belefoglalását. Az alábbiakban a következő utasításokat találja:
Következő lépések
Most befejeztük a méretezhető alkalmazások adatmodellezésének feltárását. A következő lépés az adatbázis csatlakoztatása és lekérdezése a választott programozási nyelvvel.