Modelování malých vyhledávacích entit

Dokončeno

Náš datový model obsahuje dvě malé referenční datové entity ProductCategory a ProductTag. Tyto entity jsou používány pro referenční hodnoty a souvisejí s jinými entitami prostřednictvím 1:Many relationship.

Diagram znázorňující relaci kategorie produktů, produktů, značek produktů a tabulek značek produktů

V této jednotce budeme modelovat entity ProductCategory a ProductTag v našem modelu dokumentů.

Modelové kategorie produktů

Za prvé, pro kategorie, budeme modelovat data s jeho sloupci id a jméno jako jedinými vlastnostmi a umístíme je do nového kontejneru zvaného .

Dále musíme zvolit klíč oddílu. Pojďme prozkoumat operace, které musíme s daty provádět.

Vytvoříme novou kategorii produktu, upravíme kategorii produktu a pak vypíšeme všechny kategorie produktů. Vytváření a úpravy kategorií produktů neprobíhají často. Naše e-commerce aplikace bude často zobrazovat všechny kategorie produktů při návštěvě webu zákazníky. Poslední operace je tedy ta, kterou budeme spouštět nejvíce.

Dotaz na tuto poslední operaci bude vypadat takto: SELECT * FROM c. Když je ID zvoleno jako klíč oddílu, tento dotaz bude nyní napříč oddíly. I když se chceme pokusit tyto operace náročné na čtení optimalizovat, je-li to možné, měl by být použit pouze jeden oddíl. Víme také, že data pro kategorii produktů se nikdy nezvětší o velikosti 20 GB, takže jak by nám tyto informace pomohly při modelování dat způsobem, který bude mít za následek dotaz na jeden oddíl, když vypíšeme všechny kategorie produktů.

Diagram znázorňující dotaz napříč oddíly pro výpis všech kategorií produktů

Abychom mohli tento malý objem dat převést zpět do jednoho oddílu, můžeme do schématu přidat nediskriminační vlastnost entity a použít ji jako klíč oddílu pro tento kontejner. Přiřazením této vlastnosti konstantní hodnotu pro všechny dokumenty tohoto typu v kontejneru zajistíme, že teď máme jediný dotaz na partition. V tomto případě zavoláme vlastnost type a poskytneme konstantní hodnotu category. Náš dotaz by teď vypadal takto: SELECT * FROM c WHERE c.type = ”category”.

Diagram znázorňující kategorii produktu modelovanou pomocí klíče oddílu jako typu a hodnoty jako kategorie

Produktové štítky modelu

V dalším kroku je entita ProductTag . Tato entita je téměř identická ve funkci s ProductCategory entitou, o které jsme mluvili v předchozí části. Pojďme sem použít stejný přístup a modelovat dokument tak, aby obsahoval vlastnosti ID a název a vytvořil entitu diskriminující vlastnost s názvem type, v tomto případě s konstantní hodnotou tag. Pojďme vytvořit nový kontejner s názvem ProductTag a vytvořit type nový klíč oddílu.

Diagram znázorňující kontejner značek modelovaných produktů s klíčem oddílu jako typem a hodnotou jako značkou

Někteří lidé najdou tuto techniku modelování malých vyhledávacích tabulek podivné. Modelování našich dat tímto způsobem nám ale dává příležitost provést další optimalizaci v dalším modulu.