Sdílet prostřednictvím


Modelování transakčních aplikací s vysokou propustností ve službě Azure Cosmos DB for PostgreSQL

Důležité

Azure Cosmos DB for PostgreSQL se už pro nové projekty nepodporuje. Tuto službu nepoužívejte pro nové projekty. Místo toho použijte jednu z těchto dvou služeb:

  • Azure Cosmos DB for NoSQL můžete použít pro distribuované databázové řešení navržené pro vysoce škálovatelné scénáře s 99,999% smlouvou o úrovni služeb (SLA), okamžitým automatickým škálováním a automatickým převzetím služeb při selhání napříč několika oblastmi.

  • Použijte funkci Elastic Clusters služby Azure Database for PostgreSQL pro horizontálně dělené PostgreSQL pomocí opensourcového rozšíření Citus.

Běžný filtr jako klíč rozdělení na části

Pokud chcete vybrat klíč shardu pro transakční aplikaci s vysokou propustností, postupujte podle těchto pokynů:

  • Zvolte sloupec, který se používá pro vyhledávání bodů a nachází se ve většině operací vytváření, čtení, aktualizace a odstraňování.
  • Zvolte sloupec, který je přirozeným rozměrem v datech, nebo centrální částí aplikace. Příklad:
    • V úloze na bázi IoT je device_id dobrý distribuční sloupec.

Volba dobrého klíče pro rozdělení databáze pomáhá optimalizovat síťové skoky a umožňuje maximální využití paměti a výpočetních prostředků k dosažení latence v milisekundách.

Optimální datový model pro aplikace s vysokou propustností

Níže je příklad ukázkového datového modelu pro aplikaci IoT, která zachycuje telemetrická data (data časových řad) ze zařízení. Pro zachytávání telemetrie existují dvě tabulky: devices a events. Mohou existovat i jiné tabulky, ale nejsou v tomto příkladu zahrnuty.

Diagram tabulek událostí a zařízení a oddílů událostí

Při vytváření aplikace s vysokou propustností mějte na paměti určitou optimalizaci.

  • Distribuce velkých tabulek do společného sloupce, který je centrální částí aplikace, a sloupce, na který se aplikace většinou dotazuje. Ve výše uvedeném příkladu IOT aplikace, device_id je ten sloupec, který soustředí tabulky událostí a zařízení.
  • Zbývající malé tabulky můžou být referenčními tabulkami.
  • Vzhledem k tomu, že aplikace IOT mají časovou dimenzi, rozdělte distribuované tabulky podle času. Můžete použít nativní funkce časových řad služby Azure Cosmos DB pro PostgreSQL k vytváření a údržbě oddílů.
    • Dělení pomáhá efektivně filtrovat data pro dotazy s časovými filtry.
    • Vypršení platnosti starých dat je také rychlé pomocí příkazu DROP vs DELETE.
    • Tabulka událostí v našem příkladu je rozdělená podle měsíců.
  • K ukládání částečně strukturovaných dat použijte datový typ JSONB. Telemetrická data zařízení obvykle nejsou strukturovaná, každé zařízení má vlastní metriky.
    • V našem příkladu má tabulka událostí sloupec detail, který je typu JSONB.
  • Pokud vaše aplikace IoT vyžaduje geoprostorové funkce, můžete použít rozšíření PostGIS, které Azure Cosmos DB for PostgreSQL nativně podporuje.

Další kroky

Teď jsme dokončili zkoumání modelování dat pro škálovatelné aplikace. Dalším krokem je připojení a dotazování databáze s použitím zvoleného programovacího jazyka.