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


Valós idejű elemzési alkalmazások modellezése az Azure Cosmos DB for PostgreSQL-ben

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.

Nagyméretű táblák elhelyezése szilánkkulccsal

Ha egy valós idejű operatív elemzési alkalmazás szegmenskulcsát szeretné kiválasztani, kövesse az alábbi irányelveket:

  • Nagyméretű táblákon gyakran használt oszlop kiválasztása
  • Válasszon egy olyan oszlopot, amely az adatok természetes dimenziója, vagy az alkalmazás központi eleme. Néhány példa:
    • A pénzügyi világban a biztonsági trendeket elemző alkalmazás valószínűleg használna security_id.
    • A webhelyhasználati metrikák elemzésére szolgáló felhasználói analitika munkafolyamatában az user_id egy megfelelő elosztási oszlop lenne.

Nagy táblák áthelyezésével az SQL-lekérdezéseket leküldheti a munkavégző csomópontokra párhuzamosan. A lekérdezések leküldése elkerüli az adatok hálózati csomópontok közötti egyesítését. Az olyan műveletek, mint a JOIN-ek, az összesítések, a rollupok, a szűrők és a LIMIT-ek hatékonyan végrehajthatók.

Ha párhuzamos elosztott lekérdezéseket szeretne vizualizálni a megosztott táblákon, tekintse meg ezt a diagramot:

A munkavégző csomópontokon belüli illesztések diagramja.

A users táblák és events a táblák horizontálisan vannak skálázva user_id, így az ugyanahhoz a felhasználói azonosítóhoz tartozó kapcsolódó sorok ugyanazon a munkavégző csomóponton vannak elhelyezve. Az SQL JOIN-ek végrehajthatók anélkül, hogy információt vonna össze a munkafolyamatok között.

Optimális adatmodell valós idejű alkalmazásokhoz

Vizsgáljuk meg a felhasználói webhelylátogatások és metrikák elemzését végző alkalmazás példáját. Két "tény" tábla van - felhasználók és események -, és más kisebb "dimenzió" táblák.

Felhasználók, események és egyéb táblák diagramja.

Az elosztott táblák szuperhatékonyságának az Azure Cosmos DB for PostgreSQL-en való használatához kövesse az alábbi lépéseket:

  • Nagyméretű ténytáblák elosztása egy közös oszlopban. Esetünkben a felhasználók és események a következő helyen user_idvannak elosztva: .
  • Jelölje meg a kis-/dimenziótáblákat (device_types, countries és az `event_types`) referenciatáblákként.
  • Ügyeljen arra, hogy a terjesztési oszlopot az elosztott táblák elsődleges, egyedi és idegen kulcskorlátjai közé foglalja. Az oszlop hozzáadása szükségessé teheti a kulcsok összetetté tételét. Frissíteni kell a referenciatáblák kulcsait.
  • Amikor nagy elosztott táblákat csatol össze, mindenképpen a shard kulcs használatával végezze a csatolást.
-- Distribute the fact tables

SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');

-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node

SELECT create_reference_table('countries');
-- similarly for device_types and event_types...

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.