Vytvoření syntetického klíče oddílu

PLATÍ PRO: NoSQL

Osvědčeným postupem je mít klíč oddílu s mnoha jedinečnými hodnotami, například stovky nebo tisíce. Cílem je rovnoměrně distribuovat data a úlohy mezi položky přidružené k těmto hodnotám klíče oddílu. Pokud taková vlastnost v datech neexistuje, můžete vytvořit syntetický klíč oddílu. Tento dokument popisuje několik základních technik generování syntetického klíče oddílu pro kontejner Azure Cosmos DB.

Zřetězení více vlastností položky

Klíč oddílu můžete vytvořit zřetězením více hodnot vlastností do jedné umělé partitionKey vlastnosti. Tyto klíče se označují jako syntetické klíče. Podívejte se například na následující ukázkový dokument:

{
"deviceId": "abc-123",
"date": 2018
}

U předchozího dokumentu je jednou z možností nastavit jako klíč oddílu /deviceId nebo /date. Tuto možnost použijte, pokud chcete kontejner rozdělit na základě ID zařízení nebo data. Další možností je zřetězení těchto dvou hodnot do syntetické partitionKey vlastnosti, která se používá jako klíč oddílu.

{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}

Ve scénářích v reálném čase můžete mít v databázi tisíce položek. Místo ručního přidávání syntetického klíče definujte logiku na straně klienta pro zřetězení hodnot a vložte syntetický klíč do položek v kontejnerech služby Azure Cosmos DB.

Použití klíče oddílu s náhodnou příponou

Další možnou strategií, jak distribuovat úlohy rovnoměrněji, je připojit náhodné číslo na konec hodnoty klíče oddílu. Při distribuci položek tímto způsobem můžete provádět paralelní operace zápisu napříč oddíly.

Příkladem je, když klíč oddílu představuje datum. Můžete zvolit náhodné číslo mezi 1 a 400 a zřetězením ho jako příponu k datu. Výsledkem této metody jsou hodnoty klíče oddílu, jako jsou 2018-08-09.1,2018-08-09.2 a tak dále, až do 2018-08-09.400. Vzhledem k tomu, že klíč oddílu náhodně rozdělíte, jsou operace zápisu v kontejneru každý den rozloženy rovnoměrně napříč několika oddíly. Tato metoda má za následek lepší paralelismus a celkově vyšší propustnost.

Použití klíče oddílu s předem počítanými příponami

Strategie náhodných přípon může výrazně zlepšit propustnost zápisu, ale je obtížné přečíst konkrétní položku. Neznáte hodnotu přípony, která byla použita při psaní položky. Pokud chcete usnadnit čtení jednotlivých položek, použijte předem vypočítanou strategii přípon. Místo použití náhodného čísla k rozdělení položek mezi oddíly použijte číslo, které se vypočítá na základě něčeho, na co se chcete dotazovat.

Podívejte se na předchozí příklad, kdy kontejner jako klíč oddílu používá datum. Teď předpokládejme, že každá položka má Vehicle-Identification-Number atribut (VIN), ke kterému chceme získat přístup. Dále předpokládejme, že často spouštíte dotazy, abyste kromě data našli položky podle VIN. Než aplikace zapíše položku do kontejneru, může vypočítat příponu hash na základě VIN a připojit ji k datu klíče oddílu. Výpočet může vygenerovat číslo mezi 1 a 400, které je rovnoměrně rozdělené. Tento výsledek je podobný výsledkům vytvořeným metodou strategie náhodných přípon. Hodnota klíče oddílu je pak datum zřetězené s počítaným výsledkem.

Díky této strategii jsou zápisy rovnoměrně rozložené mezi hodnoty klíče oddílu a mezi oddíly. Můžete snadno přečíst konkrétní položku a datum, protože můžete vypočítat hodnotu klíče oddílu pro konkrétní Vehicle-Identification-Number. Výhodou této metody je, že se můžete vyhnout vytvoření jednoho klíče horkého oddílu, tj. klíče oddílu, který přijímá všechny úlohy.

Další kroky

Další informace o konceptu dělení najdete v následujících článcích: