Ich arbeite an einem Hobbyprojekt namens Menü- / Rezeptverwaltung.
So sehen meine Wesenheiten und ihre Beziehungen aus.
A Nutrient
hat Eigenschaften Code
undValue
An Ingredient
hat eine Sammlung vonNutrients
A Recipe
hat eine Sammlung von Ingredients
und kann gelegentlich eine Sammlung von anderen habenrecipes
A Meal
hat eine Sammlung von Recipes
undIngredients
A Menu
hat eine Sammlung vonMeals
Die Beziehungen können dargestellt werden als
Auf einer der Seiten muss ich für ein ausgewähltes Menü die Informationen zu den wirksamen Nährstoffen anzeigen, die anhand der Bestandteile (Mahlzeiten, Rezepte, Zutaten und die entsprechenden Nährstoffe) berechnet wurden.
Ab sofort verwende ich SQL Server zum Speichern der Daten und navigiere die Kette von meinem C # -Code aus, beginnend mit jeder Mahlzeit des Menüs und aggregiere dann die Nährstoffwerte.
Ich denke, dies ist kein effizienter Weg, da diese Berechnung jedes Mal durchgeführt wird, wenn die Seite angefordert wird und sich die Bestandteile gelegentlich ändern.
Ich habe darüber nachgedacht, einen Hintergrunddienst zu haben, der eine Tabelle mit dem Namen MenuNutrients ( {MenuId, NutrientId, Value}
) verwaltet und diese Tabelle mit den wirksamen Nährstoffen füllt / aktualisiert, wenn sich eine der Komponenten (Mahlzeit, Rezept, Zutat) ändert.
Ich bin der Meinung, dass eine GraphDB gut zu dieser Anforderung passt, aber meine Exposition gegenüber NoSQL ist begrenzt.
Ich möchte wissen, was die alternativen Lösungen / Ansätze für diese Anforderung sind, die Nährstoffe eines bestimmten Menüs anzuzeigen.
Hoffe, meine Beschreibung des Szenarios ist klar.