Home arrow Notizie arrow Web arrow Database sottostanti ASP

logo

Database sottostanti ASP PDF Stampa E-mail

Per un'azienda realizzo vari tool web basati sulla tecnologia ASP e Access.

Non voglio entrare nel merito se sia meglio ASP o PHP (o altro), ma voglio concentrarmi sul sistema di database su web, ovvero su Microsoft Access.

 

 

L'azienda utilizza Access in quanto ha tutto un sistema di macro e query che prepara i tabelloni sottostanti alle pagine web.
Sebbene avessi io da subito domandato sistemi di database ottimizzati per il web, mi sono trovato costretto a lavorare utilizzando Access come base dati per le pagine ASP.
La scelta aziendale è dettata da riduzione dei costi di licenza e di personale specializzato in database, e dalla diffusa competenza nel fare query in Access per preparare i dati.

Il mio lavoro è stato da subito separare i file Access con query e macro da quelli letti dal web. I file di Access dove vengono elaborati dati in locale hanno delle macro di esportazione dei tabelloni finali in database puliti, che vengono letti da internet.
Con questo lavoro di ottimizzazione dei db sono andato tranquillamente avanti con tempi di risposta accettabili, anche su interrogazioni ASP di tabelle da 20.000 record, grazie al fatto che si tratta di pagine in Intranet.

 

Per un nuovo tool è arrivata la necessità di un'interrogazione web di una tabella da 185.000 record.
Tutto funziona in modo accettabile se le query di selezione lavorano sul primo migliaio di record in ordine di posizione. Se invece si va a lavorare su record con posizione elevata (ad esempio sugli ultimi 50.000 record), i tempi di risposta diventano molto lenti.
Così lenti che l'utilizzatore ha l'impressione che la pagina web non funzioni.
Banale soluzione è una bella paginetta intermedia con una bella clessidra e la scritta "... caricamento in corso ..."
Essendo 5.000 i potenziali utilizzatori contemporanei della pagina web di interrogazione del db, ecco che a tutti girano un po' le clessidre Cry

Proprio guardando la clessidra girare, ho pensato a quanto è bello il mondo libero, ovvero l'Internet, dove posso scegliere un provider che abbia le tecnologie web più avanzate, ma anche le più diffuse, quali ad esempio PHP e MySQL (tecnologia con cui è costruito il presente sito).

Visto che questa azienda mi ha messo a disposizione un server web (Microsoft Windows) su cui testare liberamente le pagine web, ho iniziato a pensare alla possibilità di installare MySQL.

Io utilizzo proficuamente da anni MySQL per tramite PhpMyAdmin, ma non mi sono mai posto il problema di come installarlo.

Dopo una ricerca su internet sono giunto all'articolo giusto. Non riuscivo però a connettermi via ASP al server MySQL, finché non ho capito che bisognava utilizzare il MySQL ODBC Driver-MyODBC per poter effettuare la connessione ASP come da questo esempio:

 

Dim sConnection, objConn , objRS

sConnection = "DRIVER={MySQL}; SERVER=localhost; DATABASE=database; UID=utente_mysql;PASSWORD=password; OPTION=3"

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open(sConnection)
Set objRS = objConn.Execute("SHOW DATABASES")
Response.Write "<b>Database presenti sul server MySQL:</b><br>"

Do While Not objRS.Eof
  Response.Write objRS("database") & "<br>"
  objRS.MoveNext
Loop

objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing

 

Infine, grazie a questo ODBC è possibile connettere le tabelle MySQL all'interno di Microsoft Access, salvando quindi macro e query fatte in Access.
Cronometro alla mano ho lanciato la medesima pagina ASP con base dati su Access e con base dati su MySQL.

La differenza è talmente elevata, che ho buttato la clessidra !
Alle prestazioni superiori si aggiunge l'occupazione di spazio su hard disk (il db MySQL occupa 1/1000 di quello Access !)

Fatta vedere in azienda la macroscopica differenza, mi è stato risposto "noi usiamo solo tecnologia Microsoft" (???)

Dopo un primo momento di sconforto, ho scoperto che esiste Microsoft SQL Server 2005 Express Edition ed è pure gratis.

Vedremo se riesce ad essere come MySQL

 
< Prec.   Pros. >