Nejčastější dotazy k hierarchickým klíčům oddílů ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin Tabulka

Hierarchické klíče oddílu nebo dílčí části umožňují nakonfigurovat až tři úrovně hierarchie klíčů oddílů, aby bylo možné dále optimalizovat distribuci dat a povolit vyšší škálování. Tento článek odpovídá na nejčastější dotazy týkající se hierarchických klíčů oddílů služby Azure Cosmos DB.

Můžu do existujících kontejnerů přidat hierarchické klíče oddílů?

Přidání hierarchických klíčů oddílů do existujících kontejnerů se nepodporuje. Můžete ale vytvořit nový kontejner s požadovaným hierarchickým klíčem oddílu a spustit úlohu kopírování kontejneru pro kopírování dat z existujícího kontejneru do nového. Další informace o kopírování dat najdete v tématu úlohy kopírování kontejneru.

Je velikost logického klíče oddílu omezena na úložiště?

Ano. Stejně jako ve službě Azure Cosmos DB je velikost logického oddílu stále omezená na 20 GB. U hierarchických klíčů oddílů je teď logický oddíl celou cestou klíče oddílu. Pokud jste například rozdělili id tenanta –> UserId, byl by Contoso_Alicepříkladem logického oddílu . Použití dílčí části znamená, že můžete mít 20 GB dat, kde je Contoso_Alicehodnota klíče oddílu . Velikost úložiště povolená pro data ve společnosti Contoso je v podstatě 20 GB × počet jedinečných ID uživatele pro tenanta Contoso.

Došlo u fyzických oddílů k nějakým změnám limitů úložiště a RU/s?

Č. Stejně jako v Současné službě Azure Cosmos DB může fyzický oddíl obsahovat 50 GB úložiště a obsluhovat až 10 000 RU/s. Pokud jsou však data pro konkrétní předponu klíče oddílu ( například Id tenanta) v několika fyzických oddílech, znamená to, že celková hodnota RU/s dosažitelná pro jednu id tenanta může překročit 10 000 RU/s.

Co se stane, když zadám dotaz a zadám klíč oddílu doprostřed cesty?

Dotaz je dotaz napříč oddíly. Pokud například rozdělíte oddíl podle Id tenanta –> UserId a zadáte v dotazu pouze ID uživatele, tento dotaz bude fandí všem fyzickým oddílům.

Pokud chcete efektivně směrovat dotaz pomocí Id tenanta –> příklad UserId, máte dvě možnosti:

  • Zadejte ID tenanta. Dotazy přejdou na všechny fyzické oddíly obsahující data TenantId.
  • Zadejte ID tenanta i ID uživatele. Dotazy přejdou do jednoho fyzického oddílu, který obsahuje ID tenanta a konkrétní ID uživatele.

Musím v dokumentech vytvořit novou vlastnost, aby se tato funkce používala?

Č. Zadejte hierarchii cest klíče oddílu, které chcete použít při vytváření kontejneru. Pokud například rozdělíte oddíl podle Id tenanta –> UserId, nemusíte vytvářet novou vlastnost s těmito hodnotami zřetězenými. Ujistěte se, že každý dokument má vlastnost TenantId a Id vlastnosti UserId. Další informace najdete v příkladech kódu dílčích částí.

Vytvořil(a) jsem hierarchii klíčů, která nemá moc kardinality. Co mám dělat?

Možná jste ve scénáři, kdy vaše úloha dosáhne jenom několika fyzických oddílů ze všech oddílů. Tento scénář může znamenat, že jedna nebo více úrovní hierarchického klíče oddílu má nízkou kardinalitu. Při řešení potíží doporučujeme vždy znovu vytvořit hierarchický klíč oddílu a pomocí DTS můžete změnit klíč a zkopírovat data kontejneru do nového kontejneru. Pokud tento krok není možný, doporučujeme zajistit jednotnou distribuci dat dvěma alternativními řešeními.

  • Přístup 1:
  1. Můžete vytvořit kontejner s méně než 10 000 RU, abyste měli jistotu, že máte jenom jeden fyzický oddíl.
  2. Ingestuje přibližně 5 GB dat, aby se zajistilo, že nedojde k rozdělení oddílů.
  3. Vertikálně navyšte kapacitu na požadované jednotky RU, pokračujte v příjmu dat a Azure Cosmos DB zajišťuje rovnoměrné rozdělení fyzických oddílů.
  • Přístup 2:
  1. Celkovou nabídku můžete zvýšit na vyšší počet RU a ingestovat všechna vaše data.
  2. Potom proveďte sloučení oddílů, abyste zajistili, že oddíly úloh nejsou fragmentované a mají dokonce i distribuci.
  3. Po dokončení sloučení vertikálně navyšte kapacitu zpět na původní požadovaný počet RU.

Pokud chcete mít větší kontrolu nad propustností jednotlivých oddílů, můžete také použít redistribuci propustnosti, abyste zajistili, že oddíly, které vaše úlohy používají, mají dostatek RU pro vaše budoucí požadavky.

Další kroky