Sdílet prostřednictvím


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

PLATÍ PRO: NoSQL

Osvědčeným postupem je mít klíč oddílu s mnoha různými hodnotami, jako jsou stovky nebo tisíce. Cílem je rovnoměrně distribuovat data a úlohy napříč položkami přidruženými 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 pro 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 tak, že zřetězením více hodnot vlastností do jedné umělé partitionKey vlastnosti. Tyto klíče se označují jako syntetické klíče. Představte si například následující ukázkový dokument:

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

U předchozího dokumentu je jednou z možností nastavit /deviceId nebo /date jako klíč oddílu. 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ání syntetického klíče definujte logiku na straně klienta, která zřetězí hodnoty, a vložte syntetický klíč do položek v kontejnerech Azure Cosmos DB.

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

Další možnou strategií distribuce úlohy je připojení náhodného čísla na konec hodnoty klíče oddílu. Když tímto způsobem distribuujete položky, můžete provádět paralelní operace zápisu napříč oddíly.

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

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

Strategie náhodné přípony může výrazně zlepšit propustnost zápisu, ale je obtížné přečíst konkrétní položku. Hodnotu přípony, kterou jste použili při psaní položky, neznáte. Pokud chcete usnadnit čtení jednotlivých položek, použijte strategii předpočítaných přípon. Místo použití náhodného čísla k distribuci položek mezi oddíly použijte číslo, které se počítá na základě něčeho, co chcete dotazovat.

Představte si předchozí příklad, kdy kontejner jako klíč oddílu používá datum. Předpokládejme, že každá položka má atribut Vehicle-Identification-Number (VIN), ke kterému chceme získat přístup. Dále předpokládejme, že kromě data často spouštíte dotazy, které vyhledá položky VINpodle data. Než aplikace zapíše položku do kontejneru, může vypočítat příponu hash na základě hodnoty 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é přípony. Hodnota klíče oddílu je pak datum zřetězené s počítaným výsledkem.

Díky této strategii se zápisy rovnoměrně rozdělí mezi hodnoty klíče oddílu a mezi oddíly. Konkrétní položku a datum můžete snadno přečíst, protože můžete vypočítat hodnotu klíče oddílu pro konkrétní Vehicle-Identification-Numberpoložku . 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řebírá všechny úlohy.

Další kroky

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