[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

algoritmo per mysql e contatori



salve,
   vorrei un consiglio per affrontare un problema con un database mysql. Il mio 
problema è più complesso, ma l'esempio che darò mi sembra abbastanza 
significativo.

Io ho uno script in python che scarica degli url prelevati da una tabella 
mySql (chiamiamola tabella urlIn), quindi pensate di avere pr ogni url una 
coppia (id univoco, url).
Per ogni url scandisco il file html salvando tutti i link presenti nella pagina 
in una ulteriore tabella del database (chiamiamola tabella link)

Il risultato che devo ottenere è una tabella che contiene un elenco di tutti i 
link presenti nella tabella link con associato il numero di occorrenze del 
link nella tabella. 

Di per se l'algoritmo è banale: analizzo la pagina, estraggo i link e faccio 
una query riga per riga per vedere se il link è gia presente. Nel caso 
incremneto il contatore oppure aggiungo una riga con associato 1 al numero di 
presenze.
Solo che computazionalmente non è proponibile: i numeri in gioco sono troppo 
alti e i tempi di esecuzione sono troppo alti.

Una seconda soluzione è quella di fare una tabella estesa che contanga link 
multipli (cioè più righe anche per link uguali) e costruire il numero di 
occrrenze attraverso una query con "group by". 
Potrebbe essere una soluzione se non che un group by di una tabella immensa 
giocato su un campo di testo abbastanza lungo (potenzialmente un link capita 
super i 1024 caratteri) mi spaventa un po e nn so molto come gestirla: come 
devo definire il campo su cui faccio il group ? E poi ci devo mettere un indice 
?


Siccome credo sia un problema abbastanza classico mi chiedevo se esistono 
"alla Design Pattern" degli schemi di soluzione che a me sfuggono

ciao e grazie
  ste


Reply to: