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: