Vlastní dělení ve službě Azure Synapse Link pro Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Gremlin

Vlastní dělení umožňuje rozdělit data analytického úložiště na pole, která se běžně používají jako filtry v analytických dotazech, což vede k lepšímu výkonu dotazů.

V tomto článku se dozvíte, jak rozdělit data do analytického úložiště Azure Cosmos DB pomocí klíčů, které jsou pro analytické úlohy důležité. Vysvětluje také, jak využít vylepšeného výkonu dotazů s vyřezáváním oddílů. Dozvíte se také, jak vlastní dělení zlepšuje výkon dotazů, když mají vaše úlohy velký počet aktualizací nebo odstranění.

Poznámka:

Účty a kontejnery Služby Azure Cosmos DB by měly mít povolenou službu Azure Synapse Link , aby bylo možné využívat vlastní dělení.

Jak to funguje?

Dělení analytického úložiště je nezávislé na dělení v transakčním úložišti. Ve výchozím nastavení není analytické úložiště dělené. Pokud chcete dotazovat analytické úložiště často na základě polí, jako je datum, čas, kategorie atd., můžete pomocí vlastního dělení vytvořit samostatné rozdělené úložiště založené na těchto klíčích. Jako klíč oddílu analytického úložiště můžete zvolit jedno pole nebo kombinaci polí z datové sady.

Dělení můžete aktivovat z poznámkového bloku Azure Synapse Spark pomocí Azure Synapse Linku. Můžete ji naplánovat tak, aby běžela jako úloha na pozadí, jednou nebo dvakrát denně, ale v případě potřeby se dá spustit častěji.

Poznámka:

Dělené úložiště odkazuje na primární účet úložiště ADLS Gen2, který je propojený s pracovním prostorem Azure Synapse.

Architecture of partitioned store in Azure Synapse Link for Azure Cosmos DB

Rozdělené úložiště obsahuje analytická data Azure Cosmos DB do posledního časového razítka, ve kterém jste spustili úlohu dělení. Když dotazujete analytická data pomocí filtrů klíče oddílu, Synapse Link automaticky sloučí data rozděleného úložiště s nejnovějšími změnami v analytickém úložišti. Díky tomu získáte nejnovější výsledky pro vaše dotazy. I když data před dotazováním slučuje, rozdíl se nezapisuje zpět do rozděleného úložiště. Vzhledem k tomu, že rozdíl mezi daty v analytickém úložišti a děleným úložištěm se rozšiřuje, může se doba dotazování na dělená data lišit. Aktivace úlohy dělení častěji snižuje tento rozdíl. Při každém spuštění úlohy oddílu se zpracovávají pouze přírůstkové změny v analytickém úložišti místo úplné sady dat.

Kdy použít?

Použití rozděleného úložiště je volitelné při dotazování analytických dat ve službě Azure Cosmos DB. Stejná data můžete dotazovat přímo pomocí Synapse Linku s existujícím analytickým úložištěm. Úložiště s oddíly můžete zapnout, pokud máte následující požadavky:

  • Běžné filtry analytických dotazů, které je možné použít jako sloupce oddílů
  • Sloupce oddílů s nízkou kardinalitou
  • Sloupec oddílu distribuuje data rovnoměrně mezi oddíly.
  • Velký objem operací aktualizace nebo odstranění
  • Pomalý příjem dat

Pokud dotazujete živá data pomocí filtrů dotazů, které se liší od klíčů oddílů, doporučujeme dotazovat se přímo do analytického úložiště.

Zaměstnanecké výhody

Omezené prohledávání dat z vyřezávání oddílů

Vzhledem k tomu, že data odpovídající každému jedinečnému klíči oddílu se společně přidělují v děleném úložišti, při použití klíče oddílu jako filtru dotazu může provádění dotazů vyřaizovat podkladová data a prohledávat pouze požadovaná data. Prohledáváním omezených dat vylepšuje vyřazení oddílů výkon analytického dotazu.

Flexibilita dělení analytických dat

Pro daný kontejner analytického úložiště můžete mít několik strategií dělení. Na základě požadavků na dotazy můžete použít složené nebo samostatné klíče oddílů.

Vylepšení výkonu dotazů

Kromě vylepšení dotazů z vyřazení oddílů má vlastní dělení také za následek vyšší výkon dotazů pro následující úlohy:

  • Aktualizace nebo odstranění náročných úloh – Místo toho, abyste sledovali více verzí záznamů v analytickém úložišti a načítali je během provádění jednotlivých dotazů, obsahuje dělené úložiště jenom nejnovější verzi dat. Tato funkce výrazně zlepšuje výkon dotazů, pokud máte úlohy náročné na aktualizaci nebo odstranění.

  • Pomalé úlohy příjmu dat – Dělení zkomprimuje analytická data, takže pokud má vaše úloha pomalý příjem dat, může toto komprimace vést k lepšímu výkonu dotazů.

Transakční záruka

Je důležité si uvědomit, že vlastní dělení zajišťuje úplnou transakční záruku. Cesta k dotazu není zablokovaná, zatímco probíhá provádění dělení. Každé spuštění dotazu načte dělená data z posledního úspěšného dělení. Čte nejnovější data z analytického úložiště, což zajišťuje, aby dotazy vždy vracely nejnovější data, která jsou k dispozici při použití rozděleného úložiště.

Zabezpečení

Pokud jste pro analytické úložiště nakonfigurovali spravované privátní koncové body , doporučujeme přidat i spravované privátní koncové body pro dělené úložiště. Dělené úložiště je primární účet úložiště přidružený k vašemu pracovnímu prostoru Synapse.

Podobně pokud jste nakonfigurovali klíče spravované zákazníkem v analytickém úložišti, musíte ho přímo povolit v primárním účtu úložiště pracovního prostoru Synapse, což je také dělené úložiště.

Strategie dělení

Pro analytická data můžete použít jeden nebo více klíčů oddílů. Pokud používáte více klíčů oddílů, tady je několik doporučení k rozdělení dat:

  • Použití složených klíčů:

    Řekněme, že chcete často dotazovat na základě klíče 1 a klíče2.

    Například Dotaz na všechny záznamy, kde ReadDate = '2021-10-08' a Location = 'Sydney'.

    V tomto případě je použití složených klíčů efektivnější k vyhledání všech záznamů, které odpovídají hodnotě ReadDate, a záznamů, které odpovídají umístění v rámci tohoto readDate.

    Ukázkové možnosti konfigurace:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Teď se můžete dotazovat na základě filtru Umístění:

    • Můžete chtít dotazovat analytické úložiště přímo. Rozdělené úložiště nejprve prohledá všechny záznamy podle readDate a pak podle umístění. Takže v závislosti na vaší úloze a kardinalitě analytických dat můžete dosáhnout lepších výsledků dotazováním analytického úložiště přímo.
    • Můžete také spustit jinou úlohu oddílu, která také rozdělí oddíl na základě umístění ve stejném děleném úložišti.
  • Použití více klíčů samostatně:

    Řekněme, že chcete často dotazovat na základě "ReadDate" a jindy na základě umístění.

    Příklad:

    • Dotaz na všechny záznamy, kde ReadDate = '2021-10-08'
    • Dotaz na všechny záznamy, kde location = 'Sydney'

    Pro tento scénář spusťte dvě úlohy oddílů s klíči oddílu, jak je definováno níže:

    Úloha 1:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Úloha 2:

    .option("spark.cosmos.asns.partition.keys", "Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Všimněte si, že teď není efektivní často dotazovat na základě filtrů ReadDate a Location společně s výše uvedenými oddíly. Složené klíče umožňují lepší výkon dotazů v takovém případě.

Omezení

  • Vlastní dělení je dostupné jenom pro Azure Synapse Spark. Vlastní dělení se v současné době nepodporuje pro bezserverové fondy SQL.

  • Aktuálně dělené úložiště může odkazovat pouze na primární účet úložiště přidružený k pracovnímu prostoru Synapse. V tuto chvíli není výběr vlastních účtů úložiště podporovaný.

  • Vlastní dělení je dostupné jenom pro rozhraní API for NoSQL ve službě Azure Cosmos DB. Rozhraní API pro MongoDB, Gremlin a Cassandra jsou v současnosti ve verzi Preview.

Ceny

Kromě cen služby Azure Synapse Link se vám při použití vlastního dělení účtují následující poplatky:

  • Při spouštění úloh dělení v analytickém úložišti se vám účtují fondy Synapse Apache Spark.

  • Dělená data se ukládají v primárním účtu Azure Data Lake Storage Gen2 přidruženém k vašemu pracovnímu prostoru Azure Synapse Analytics. Účtují se vám náklady spojené s používáním úložiště a transakcí ADLS Gen2. Tyto náklady jsou určeny úložištěm požadovaným dělenými analytickými daty a daty zpracovanými pro analytické dotazy v Synapse. Další informace o cenách najdete na stránce s cenami služby Azure Data Lake Storage.

Nejčastější dotazy

Jak často mám spustit vlastní úlohu dělení?

Existuje několik faktorů, jako jsou přírůstkové objemy dat, požadavky na latenci dotazů atd., které určují, jak často můžete spustit vlastní úlohu dělení. Může to být spuštěno jednou denně nebo jednou za několik hodin. Pokud je objem příchozích dat vysoký a očekávaná latence dotazů je nízká, možná budete chtít naplánovat úlohu dělení častěji. Abyste mohli oddíl vyřazovat, musíte nejprve shromáždit přírůstková data v analytickém úložišti, aby bylo možné provést vyřazování oddílů.

Obsahují výsledky dotazu nejnovější data během provádění úlohy dělení?

Ano, vlastní dělení poskytuje úplnou transakční záruku. Výsledky dotazu tedy v jakémkoli okamžiku zkombinují existující dělená data s koncovými daty vracející nejnovější datovou sadu analytického úložiště.

Může vlastní dělení využívat ověřování propojených služeb ve službě Azure Synapse Analytics?

Ano, pro dělení analytického úložiště je možné použít ověřování propojené služby.

Můžu změnit klíč oddílu pro daný kontejner v pozdějším časovém okamžiku?

Ano, klíč oddílu pro daný kontejner lze změnit a nová definice klíče oddílu vytvoří nové dělené úložiště.

Poznámka:

Definice klíče oddílu je součástí cesty k děleným úložišti.

Mohou různé klíče oddílů odkazovat na stejnou základní cestu?

Ano, ve stejném děleném úložišti můžete zadat více klíčů oddílů, jak je znázorněno níže:

.option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \

Další kroky

Další informace najdete v následujících dokumentech: