Modelowanie małych jednostek odnośników
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
.
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.
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”
.
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.
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.