Asp: Access -> save to xml -> asynkront kald til xml

Tags:    asp access vb iss cache

Hej.

Har lige brug for lidt hjælp angående caching fra en access database.

Et større offentligt site, benytter en access database til vigtige informationer til dets brugere.

Trafikken på siden der viser data fra access databasen, bliver i perioder totalt overbelastet, omkring 4000 aktive brugere - hvorfor den ved spidsbelastninger melder fejl grundet access' max 20 active connections.

Mit løsningsforslag er at hente data fra access til et fysisk lagret xml ark, hvorfra jeg asynkront vil hente fra xml filen til brugerne, frem for at lade brugerne hente direkte fra databasen. SEO er ikke et issue, robots er nægtet adgang.

Jeg har forestillet mig, da data helst skal være "live" i bedste forstand, at hvert minut hente data fra access databasen, lagre det som xml på serveren.

Mit spørgsmål er:
Hvad sker der hvis en bruger forsøger at hente xml arket, hvis min "tjeneste" er ved at skrive til xml arket. altså er kan der være io issues pga at min tjeneste er ved at skrive til xml arket mens en bruger henter det ?

Bedre løsningsforslag er velkomne.. Altså hvordan sikre jeg 100% at brugerne ikke får en access fejl, eller io fejl i asp. Havde jeg mulighed for en .net løsning ville jeg bare cache det i memory, men er det en option i vb?

På forhånd tak.
/J



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Du vil næsten altid have et problem med læse/skrive. Det er et hønen eller ægget problem. Jeg kender ikke hvilke muligheder du har indenfor caching. Men en mulig løsning kunne være at låse adgangen, når systemet skriver til filen. Hvis der ikke findes låse mekanismer i vb, kan du evt. lave en 0byte fil, som din "læse"-del af systemet checker for før den rent faktisk læser den store xml fil.



Indlæg senest redigeret d. 27.11.2011 14:39 af Bruger #10216
Du vil stadig have høne/æg problemet. Laver du en httphandler, kan du smide et while check på som tester om 0byte-fil findes og evt. lave en sleeptimer som for at holde io-checks i interval på sekunder. Så længe du søger semi-live data kan et delay på et sekund ikke skade.

Du skal alligevel sikre dig at du har et helt XML dokument at vise, det ville du i princippet også skulle gøre ved mem-caching. Selvom ramblokke er fandens hurtige til læse/skrive er det jo ikke sikkert at systemerne når at skrive færdig før de begynder at læse. Men det kan jo være at .NET normalt håndterer den slags.



Overvejede samtidigt blot at lave en mappe med disse xml filer, hvor min "tjeneste" oprettede et nyt ark hvert minut.

I stedet for at kalde xml arket direkte, så lave en form for httphandler i asp, der kan service det nyeste ark fra en given mappe, blot vha at skifte mimetype i .asp på respons - evt noget oprydning mht til diskplads.

Men vi taler max 20-30kb, formoder en access -> xml -> io tager en del under et sekundt.



Indlæg senest redigeret d. 27.11.2011 15:33 af Bruger #5789
Super tak.

Det kan være jeg bare ender ud i at delaye svaret gennem asp/ajax kaldet, hvis der er server fejl, lige lade den vente et par 100 ms, og forsøge igen.

Edit:
i .net ville jeg oprette en httphandler der havde cache sat til sql dependecy, altså .net håndtere selv at opdatere cache hvis der fortages ændringer i db vha en indbygget asynkron sql listener idets cache.

http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx



Indlæg senest redigeret d. 27.11.2011 16:03 af Bruger #5789
t