Modelování malých vyhledávacích entit
Náš datový model zahrnuje dvě malé referenční datové entity ProductCategory
a ProductTag
. Tyto entity se používají pro referenční hodnoty a souvisejí s jinými entitami prostřednictvím 1:Many relationship
.
V této lekci budeme modelovat ProductCategory
entity a ProductTag
v našem modelu dokumentu.
Kategorie produktů modelu
Nejprve u kategorií namodelujeme data se sloupci ID a name jako jediné vlastnosti a umístíme je do nového kontejneru s názvem ProductCategory
.
Dále musíme zvolit klíč oddílu. Pojďme se podívat na operace, které musíme s daty provést.
Vytvoříme novou kategorii produktů, upravíme kategorii produktů a pak vypíšeme všechny kategorie produktů. Vytváření a úpravy kategorií produktů nejsou často spouštěné operace. Naše aplikace elektronického obchodování často zobrazí seznam všech kategorií produktů, když zákazníci navštíví web. Takže poslední operace je ta, která se spustí nejvíce.
Dotaz pro tuto poslední operaci bude vypadat takto: SELECT * FROM c
.
S ID jako vybraným klíčem oddílu teď bude tento dotaz křížový, i když se chceme pokusit optimalizovat tyto operace náročné na čtení, pokud je to možné, používají pouze jeden oddíl. Víme také, že data pro produktovou kategorii se nikdy nebudou blížit velikosti 20 GB, takže jak by nám tyto informace pomohly při modelování dat způsobem, který povede k dotazu na jeden oddíl, když vypíšeme všechny kategorie produktů.
Abychom mohli převést toto malé množství dat zpět do jednoho oddílu, můžeme do schématu přidat entitu diskriminující vlastnost a použít ji jako klíč oddílu pro tento kontejner. Přiřazením konstantní hodnoty této vlastnosti pro všechny dokumenty tohoto typu v kontejneru zajistíme, že teď máme dotaz na jeden oddíl. 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”
.
Model značek produktů
Další je entita ProductTag
. Tato entita je ve funkci téměř identická s ProductCategory
entitou, o které jsme se bavili v předchozí části. V tomto případě použijeme stejný postup a namodelujme dokument tak, aby obsahoval vlastnosti ID a názvu, a vytvořte entitu 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ěkterým lidem připadá tato technika modelování malých vyhledávacích tabulek divná. Modelování dat tímto způsobem nám ale dává příležitost provést další optimalizaci v dalším modulu.