Modelování malých vyhledávacích entit
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.
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
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ů.
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”.
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.
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.