Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Než prošetříme kroky vytvoření nové aplikace, je užitečné se podívat na rychlý přehled hledaného výrazu a konceptů.
Přehled architektury
Azure Cosmos DB for PostgreSQL vám umožňuje distribuovat tabulky a/nebo schémata napříč několika počítači v clusteru a transparentně je dotazovat stejně jako v prostém PostgreSQL:
V architektuře Azure Cosmos DB for PostgreSQL existuje několik druhů uzlů:
- Koordinační uzel ukládá metadata distribuovaných tabulek a zodpovídá za distribuované plánování.
- Naproti tomu pracovní uzly ukládají skutečná data, metadata a výpočty.
- Koordinátor i pracovníci jsou prosté databáze PostgreSQL s načteným rozšířením
citus.
Pokud chcete distribuovat normální tabulku PostgreSQL, například campaigns v diagramu výše, spusťte příkaz s názvem create_distributed_table(). Po spuštění tohoto příkazu azure Cosmos DB for PostgreSQL transparentně vytvoří horizontální oddíly pro tabulku napříč pracovními uzly. V diagramu jsou fragmenty reprezentovány jako modré boxy.
Pokud chcete distribuovat normální schéma PostgreSQL, spusťte citus_schema_distribute() příkaz. Jakmile použijete tento příkaz, Azure Cosmos DB for PostgreSQL transparentně změní tabulky v těchto schématech na jednotně umístěné tabulky s jedním shardem, které lze přesunout jako celek mezi jednotlivými uzly clusteru.
Poznámka:
V clusteru bez pracovních uzlů jsou shardy distribuovaných tabulek na koordinačním uzlu.
Horizontální oddíly jsou prosté (ale speciálně pojmenované) tabulky PostgreSQL, které obsahují řezy vašich dat. V našem příkladu, protože jsme distribuovali campaigns pomocí company_id, shardy drží kampaně, kde jsou kampaně různých společností přiřazeny různým shardům.
Distribuční sloupec (označovaný také jako klíč rozdělení)
create_distributed_table() je magická funkce, kterou azure Cosmos DB for PostgreSQL poskytuje k distribuci tabulek a používání prostředků napříč několika počítači.
SELECT create_distributed_table(
'table_name',
'distribution_column');
Druhý argument výše vybere sloupec z tabulky jako distribuční sloupec. Může to být libovolný sloupec s nativním typem PostgreSQL (s celočíselným číslem a nejběžnějším textem). Hodnota distribučního sloupce určuje, které řádky se dostanou do kterých shardů, což je důvod, proč se distribuční sloupec také nazývá shardový klíč.
Azure Cosmos DB for PostgreSQL rozhoduje, jak spouštět dotazy na základě použití klíče pro shardování.
| Dotaz zahrnuje | Kde běží |
|---|---|
| pouze jeden shard klíč | na pracovním uzlu, který obsahuje fragment |
| více klíčů shardů | paralelizovaná napříč několika uzly |
Volba klíče pro shardování určuje výkon a škálovatelnost vašich aplikací.
- Nerovnoměrné rozložení dat v klíčích shardů (označované také jako šikmé rozložení dat) není pro výkon optimální. Například nevybírejte sloupec, pro který jedna hodnota představuje 50 % dat.
- Klíče dělení dat s nízkou kardinalitou mohou ovlivnit škálovatelnost. Můžete použít pouze tolik shardů, kolik je jedinečných klíčových hodnot. Vyberte klíč s kardinalitou ve stovkách až tisících.
- Spojení dvou velkých tabulek s rozdílnými shardovými klíči může být pomalé. Zvolte společný shard klíč napříč velkými tabulkami. Přečtěte si další informace o kolokaci.
Kolokace
Dalším konceptem úzce souvisejícím s klíčem pro rozdělení dat na fragmenty je kolokace. Tabulky rozdělené podle stejných hodnot v distribučním sloupci jsou umístěny společně – části takto umístěných tabulek jsou uloženy na stejných pracovních uzlech.
Níže jsou dvě tabulky horizontálně dělené stejným klíčem. site_id Jsou spoluumístěné.
Azure Cosmos DB for PostgreSQL zajišťuje, aby řádky s odpovídající site_id hodnotou v obou tabulkách byly uloženy na stejném pracovním uzlu. Vidíte, že v případě obou tabulek jsou řádky s site_id=1 uloženy na pracovníku 1. Podobně pro ostatní ID stránek.
Kolokace pomáhá optimalizovat operace JOIN napříč těmito tabulkami. Pokud propojíte obě tabulky na site_id, Azure Cosmos DB for PostgreSQL může spojení provést místně na pracovních uzlech bez přesunu dat mezi uzly.
Tabulky v rámci distribuovaného schématu jsou vždy umístěny společně.