Sdílet prostřednictvím


Modelování analytických aplikací v reálném čase 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.

Umístěte velké tabulky na stejné místo pomocí klíče horizontálního dělení

Pokud chcete vybrat klíč úlomku pro aplikaci provozní analýzy v reálném čase, postupujte podle těchto pokynů:

  • Volba sloupce, který je u velkých tabulek společný
  • Zvolte sloupec, který je přirozeným rozměrem v datech, nebo centrální částí aplikace. Příklady:
    • Ve finančním světě by pravděpodobně používala security_idaplikace, která analyzuje trendy zabezpečení .
    • V úloze analýzy uživatelů, ve které chcete analyzovat metriky využití webu, user_id by byl dobrým distribučním sloupcem.

Přidělením velkých tabulek můžete odesílat dotazy SQL paralelně do pracovních uzlů. Posunování dotazů dolů brání přesouvání dat mezi uzly po síti. Operace, jako jsou JOINy, agregace, souhrny, filtry, LIMITy, lze efektivně provádět.

Pokud chcete vizualizovat paralelní distribuované dotazy u spolumístěných tabulek, podívejte se na tento diagram:

Diagram spojení probíhajících v pracovních uzlech

Tabulky users a events jsou obě horizontálně dělené podle user_id, takže řádky související se stejným ID uživatele jsou umístěny společně na stejném výpočetním uzlu. K SQL JOIN může dojít bez vyžádání informací mezi pracovníky.

Optimální datový model pro aplikace v reálném čase

Pojďme pokračovat v příkladu aplikace, která analyzuje návštěvy a metriky webu uživatelů. Existují dvě tabulky faktů – uživatelé a události – a další menší tabulky dimenzí.

Diagram uživatelů, událostí a různých tabulek

Pokud chcete použít super výkon distribuovaných tabulek ve službě Azure Cosmos DB for PostgreSQL, postupujte následovně:

  • Rozmístit velké tabulky faktů ve společném sloupci V našem případě jsou uživatelé a události distribuovány na user_id.
  • Označte tabulky malých dimenzí (device_typescountriesa "event_types") jako referenční tabulky.
  • Nezapomeňte zahrnout distribuční sloupec do omezení primárního, jedinečného a cizího klíče v distribuovaných tabulkách. Zahrnutí sloupce může vyžadovat, aby byly klíče složené. Pro referenční tabulky je potřeba aktualizovat klíče.
  • Nezapomeňte spojovat velké distribuované tabulky pomocí klíče pro dělení.
-- 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...

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.