janhebnes / startlist.club

Flight Log for flight clubs - created for handling flight log operations for soaring flight clubs in northern Europe.
https://startlist.club/about
MIT License
13 stars 10 forks source link

Implementer Cache (write-thru) #171

Open plaursen opened 3 years ago

plaursen commented 3 years ago

Vores SQL brug er ret dyr p.t.

Vi kan formodentlig spare en del (kr og responstid) ved at implementere en write-thru cache.

Første tanke er (for at minimere omfanget af ændringer): 1: Implementer en 'wrapper' med samme interface som DbContext (eller den del vi bruger) : CachedDbContext 2: Definer et interface ISoilable (eller noget andet vittigt) som har en property Dirty. 3: Implementer en 'wrapper' med samme interface som DbSet (eller den del vi bruger) : CachedDbSet, hvor T implements ISoilable 4: Reimplementer FlightContext som en CachedDbContext, som indeni bruger CachedDbSet 5: Alle typer som bruges i CachedDbSet skal have property setters som markerer objektet som dirty. 6: Brug CachedDbContext i stedet for DbContext Der er sikkert nogle ting omkring opstart og migrering, som jeg ikke har opdaget kompleksiteten af endnu :)

Der er nok en anelse omfattende, men et par dage med regnvejr burde kunne give en ide om hvor slemt det er.

Og: check lige om noget lignende allerede findes :)

plaursen commented 3 years ago

https://github.com/moozzyk/EFCache ?

plaursen commented 3 years ago

Hvis det fungerer som der står på dåsen, så burde det være en oneliner:

image

plaursen commented 3 years ago

...ellers kan vi måske starte med at se på vores brug af FlightContext.

En DbContext cacher åbenbart selv så længe den eksisterer, så vi skal nok se lidt på hvordan vi opretter dem.