Modelowanie małych jednostek odnośników

Ukończone

Nasz model danych zawiera dwie małe jednostki ProductCategory danych referencyjnych i ProductTag. Te jednostki są używane do 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 produktu.

W tej lekcji modelujemy ProductCategory jednostki i ProductTag w 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 umieszczamy 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 uruchamianymi operacjami. Nasza aplikacja do handlu elektronicznego często wyświetla listę wszystkich kategorii produktów, gdy klienci odwiedzają witrynę internetową. Więc ostatnia operacja jest tym, który będziemy uruchamiać 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 spróbować zoptymalizować te operacje z dużą liczbą operacji odczytu, użyj tylko jednej partycji, jeśli to możliwe. Wiemy również, że dane kategorii produktów nigdy nie będą rosnąć w pobliżu 20 GB rozmiaru, więc jak te informacje pomogą nam w modelowaniu danych w sposób, który spowoduje utworzenie pojedynczego zapytania partycji podczas wyświetlania listy wszystkich kategorii produktów.

Diagram przedstawiający zapytanie obejmujące wiele partycji dla listy wszystkich kategorii produktów.

Aby przenieść tę niewielką ilość danych z powrotem do pojedynczej partycji, możemy dodać właściwość dyskryminującą jednostki do naszego schematu 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 takim 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ą.

Tagi produktu modelu

Następna ProductTag wartość to jednostka. Ta jednostka jest prawie identyczna w funkcji do ProductCategory jednostki omówionej w poprzedniej sekcji. W tym miejscu zajmijmy się tym samym podejściem i zamodelujmy dokument, aby zawierał właściwości identyfikatora i nazwy oraz utworzyć właściwość dyskryminującą jednostkę 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ą tę technikę za modelowanie małych tabel odnośników dziwnie. Jednak modelowanie danych w ten sposób daje nam szansę na dalszą optymalizację w następnym module.