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"
}
V reálných scénářích 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 VIN
podle 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-Number
polož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:
- Další informace o logických oddílech
- Přečtěte si další informace o zřízení propustnosti pro kontejnery a databáze Azure Cosmos DB.
- Zjistěte, jak zřídit propustnost v kontejneru Azure Cosmos DB.
- Zjistěte, jak zřídit propustnost pro databázi Azure Cosmos DB.
- Pokoušíte se naplánovat kapacitu migrace do služby Azure Cosmos DB? Informace o stávajícím databázovém clusteru můžete použít k plánování kapacity.
- Pokud víte, že je počet virtuálních jader a serverů ve vašem existujícím databázovém clusteru, přečtěte si o odhadu jednotek žádostí pomocí virtuálních jader nebo virtuálních procesorů.
- Pokud znáte typické sazby požadavků pro vaši aktuální úlohu databáze, přečtěte si informace o odhadu jednotek žádostí pomocí plánovače kapacity služby Azure Cosmos DB.