Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

SQL Server --> XML update

Pagina: 1
Acties:
  • 635 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Dit topic werd net door een modenator op slot gegooid omdat ik een script-request deed. Nu ben ik niet opzoek naar een script maar wil gewoon een discussie hebben over wat de beste oplossing is. Nog een poging...

Wie heeft er ervaring met het up-to-date houden van een XML pagina vanuit een SQL Server database. Het gaat om een website welke enorme pieken in de bezoekersaantallen heeft. Al deze bezoekers gaan willen informatie uit de database. Om de database enigsinds te ontlasten wil ik de informatie uit de tabellen doormiddel van XML (statisch) doorgeven aan de website. Dit lukt allemaal zonder problemen.

Zijn er mogelijkheden waarmee je XML files bijvoorbeeld om de 5 minuten kan genereren. De actuele databasegegevens moeten dan in deze XML bestanden worden weggeschreven waarna de database weer even kan rusten.

De database bevat ongeveer 25.000 records en dit staat in één tabel. De aantallen bezoekers liggen tussen de 17.000 en 20.000 en gaan vanaf één bepaald moment de website bestoken. Hypothetisch: Op maandag 1 oktober om 15u00 stormen de bezoekers binnen en gaan de gegevens uit de database opvragen.

Het betreffen uitslagen van een groot hardloop evenement. De records zijn in te delen in 8 categorien. De bezoekers zullen dus of deze categorieen één voor één openen en doorbladeren. Of zoeken op eigen naam / startnummer.

Wie heeft hier enige ervaring mee of heeft wat tips voor mij? Thanks!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:16

gorgi_19

Kruimeltjes zijn weer op :9

Waarom wil je die methodiek gebruiken?

Oplossingen hangen ook een beetje af van welke taal je gebruikt; ASP.Net kent bijvoorbeeld een OutputCache.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • soepkip
  • Registratie: Augustus 2000
  • Laatst online: 26-11 16:55

soepkip

Kratjes kunnen nu ook voorin

Je begrijpt natuurlijk wel dat een database bedoelt is voor het opslaan, en toegankelijk maken van data in grote aantallen en hoeveelheden, en hiervoor ook geoptimaliseerd is ?

Beste film ooit


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 25-11 23:28
Geen direct antwoord op je vraag, maar heb je al gekeken naar het optimaliseren van je SQL- en IIS-server? Het zou me niet verwonderen dat het efficiënter is dáárop te cachen, dan bestanden aan te gaan maken op je harde schijf (traagste component van je systeem).

Uiteraard slaat SQL uiteindelijk ook gegevens op de harde schijf op, maar gebruikt in principe caching om snel te werken, dus trager als een bestand op de harde schijf zal het niet werken.

Ik denk dan ook dat het verstandig is om eens goed naar je IIS configuratie te kijken, en kijken of je in de asp-pagina's geen caching kunt toevoegen? Bijvoorbeeld de outputbestanden cachen?

Zowel SQL als IIS zijn namelijk gemaakt om grote aantallen requests aan te kunnen.

(Vooruit, laat ik je ook helpen met je vraag: je kunt in SQL Server jobs aanmaken, en er zijn SQL-queries om naar xml te 'exporteren'. Ik zou zeggen: combineer die twee eens :) (maar goed, dat is waarschijnlijk niet de efficiëntste methode) )

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

Toch denk ik dat je in een verkeerde richting zit te zoeken.

- Kan je niet beter de database / code optimaliseren?
- Kan je webserver het aantal bezoekers wel aan?

Kortom: kijk eerst waar de echte bottleneck ligt.

Sinds kort heb ik me ook verdiept in het Cache object van .Net voor een vrij drukke applicatie/site met minimale hardware en ik moet zeggen dat de resultaten hiervan goed tot zeer goed te noemen zijn.
Verwijderd schreef op maandag 01 oktober 2007 @ 13:42:
ASP.Net caching is inderdaad ook wel een goede optie. Ik zal eens gaan zoeken daarna.
Mjah, in je andere gesloten topic had je het over ASP. Dus kan je beter misschien daar mee aan de slag gaan. Bijvoorbeeld met deze tips.

[ Voor 32% gewijzigd door TeeDee op 01-10-2007 13:45 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Jawel, dat begrijp ik. En daar werk ik ook al een aantal jaar mee. Daar heb ik ook mee geleerd dat als je dusdanige grote groepen gebruikers op een website die volledig database gestuurd is af laat gaan dit vertragend gaat werken.

ASP.Net caching is inderdaad ook wel een goede optie. Ik zal eens gaan zoeken daarna.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Om gewoon antwoord te geven op je vraag (simpelste oplossing): Maak een VBScriptje, open daarin je connectie, voer de query uit, save de recordset als XML (adPersistXML):
Visual Basic:
1
2
3
4
5
  Dim rsRes  'Je recordset
  '...open connectie hier
  '...haal recordset op
  Set rsRes = MyConnection.Execute("Select ... From ... Where ...")
  rsRes.Save "MyCacheFile.xml", 1  '1 = adPersistXML


... en schedule dat VBS bestand met de windows taakplanner om te laten hobbelen om x-tijd. (Als bonus kun je je schema's zo "complex" maken als je wil).

Vanuit je .asp open je het XML bestand:
Visual Basic:
1
2
3
4
5
6
7
8
Dim oDoc 'Tijdelijk XML document
Dim rsRes 'Je recordset

Set oDoc = CreateObject("MSXML.DomDocument")
If oDoc.Load("MyCacheFile.xml") Then
    Set rsRes = CreateObject("ADODB.RecordSet")
    rsRes.Open oDoc
end if

...et voila. Je hebt een 'cache' die iedere 5 minuten (of whatever) wordt ververst. Hierbij heb je aan 1 bestand voldoende dat om de x-tijd ververst wordt.

Uiteraard kan het ook zonder VBS en scheduled tasks; dan is het makkelijkste om een 'timestamp' in de bestandsnaam te verwerken; je .asp kan dan checken of die bestaat en zo ja, die openen en gebruiken (mits 'vers genoeg') en zo nee, een nieuw bestand aanleggen (zodat bij een volgende pageview de cache wel een 'hit' krijgt) en die gebruiken. Nadeel is dat je oude(re) cachefiles nog moet 'opruimen' (eventueel met een scheduled task, anders in je .asp of om de zoveel tijd met het handje de map leeg gooien). Maar dat zijn geen nadelen waar niet met een paar regels code een oplossing voor te maken is.

Maar again; dit is voor classic asp (en sowieso alleen voor de queries die lange(re) tijd nodig hebben) een leuke oplossing; .Net heeft hier mooiere oplossingen voor, buiten het feit dat je als eerste eens moet kijken waarom die query zo traag is. ;)

Wil je ook nog File I/O besparen dan kun je met een FreeThreadedDomDocument het document in je application object gooien en het van daaruit accessen. Elegant is anders, maar het werkt en is snel en simpel

( Lees trouwens dit even: Je topic is dicht en het is onterecht? Lees hier! ). Ik zou graag hebben gezien wat je zelf al bedacht had, of gezocht en evt. gevonden.

[ Voor 25% gewijzigd door RobIII op 01-10-2007 17:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1