Modelowanie małych jednostek odnośników

Ukończone

Nasz model danych obejmuje dwie małe jednostki danych referencyjnych ProductCategory i ProductTag. Te jednostki są używane na potrzeby wartości referencyjnych i są powiązane z innymi jednostkami, choć 1:Many relationship.

Diagram przedstawiający relację kategorii produktów, produktu, tagów produktów i tabel tagów produktów.

W tej lekcji modelujemy ProductCategory jednostki i ProductTag w naszym modelu dokumentów.

Kategorie produktów modelu

Najpierw w przypadku kategorii modelujemy dane z kolumnami identyfikatora i nazwy jako jedyne właściwości i umieścimy je w nowym kontenerze o nazwie ProductCategory.

Następnie musimy wybrać klucz partycji. Przyjrzyjmy się operacjom, które musimy wykonać na tych danych.

Utworzymy nową kategorię produktów, zmodyfikujemy kategorię produktu, a następnie wyświetlimy listę wszystkich kategorii produktów. Tworzenie i edytowanie kategorii produktów nie jest często wykonywanymi operacjami. Nasza aplikacja do handlu elektronicznego często wyświetla listę wszystkich kategorii produktów, gdy klienci odwiedzają witrynę internetową. Dlatego ostatnia operacja jest operacją, która będzie uruchamiana najwięcej.

Zapytanie dotyczące tej ostatniej operacji będzie wyglądać następująco: SELECT * FROM c. Przy użyciu identyfikatora jako wybranego klucza partycji to zapytanie będzie teraz podzielone na partycje, mimo że chcemy podjąć próbę zoptymalizowania tych operacji z dużą liczbą operacji odczytu, użyj tylko jednej partycji, jeśli jest to możliwe. Wiemy również, że dane kategorii produktów nigdy nie będą rosnąć w pobliżu 20 GB rozmiaru, więc w jaki sposób te informacje pomogą nam w modelowaniu danych w sposób, który spowoduje utworzenie pojedynczej kwerendy partycji podczas wyświetlania listy wszystkich kategorii produktów.

Diagram przedstawiający zapytanie obejmujące wiele partycji dotyczące wyświetlania listy wszystkich kategorii produktów.

Aby wykorzystać tę niewielką ilość danych z powrotem do pojedynczej partycji, możemy dodać do naszego schematu właściwość dyskryminującą jednostkę i użyć jej jako klucza partycji dla tego kontenera. Przypisując tę właściwość stałą wartość dla wszystkich dokumentów tego typu w kontenerze, zapewniamy, że mamy teraz jedno zapytanie partycji. W tym przypadku wywołamy właściwość type i nadamy stałą wartość category. Nasze zapytanie będzie teraz wyglądać następująco: SELECT * FROM c WHERE c.type = ”category”.

Diagram przedstawiający kategorię produktu modelowaną z kluczem partycji jako typem i wartością jako kategorią.

Modelowanie tagów produktów

Następna ProductTag wartość to jednostka. Ta jednostka jest prawie identyczna w funkcji do ProductCategory jednostki omówionej w poprzedniej sekcji. Przyjrzyjmy się temu samemu podejściu i zamodelujmy dokument, aby zawierał właściwości identyfikatora i nazwy oraz utworzyć właściwość dyskryminującą jednostki o nazwie type, w tym przypadku ze stałą wartością tag. Utwórzmy nowy kontener o nazwie ProductTag i utwórzmy type nowy klucz partycji.

Diagram przedstawiający modelowany kontener tagów produktu z kluczem partycji jako typem i wartością jako tagiem.

Niektórzy ludzie uważają, że ta technika modelowania małych tabel odnośników jest dziwna. Jednak modelowanie danych w ten sposób daje nam możliwość dalszej optymalizacji w następnym module.