• User Attivo

    Tecniche di compressione per un motore di ricerca

    Sono arrivato ad indicizzare poco più di un milione di siti e MySql comincia a incrostarsi. Praticamente il database occupa circa 9gb tutti compressi con le zlib, però facendosi due conti fra qualche milione di sito dovrò comprare dei dischi nuovi e visto il costo non mi va 😄

    Allora io mi chiedo: che tecniche di compressione utilizzano i motori di ricerca? Salvano l'html intero zippato oppure soltanto il testo dopo aver parsato la pagina? Qualcuno conosce algoritmi a riguardo?


  • Community Manager

    Ciao uMoR,

    ma non hai usato più database per informazioni diverse? Quando hai pensato a spiderizzare tutto, come mai non hai diviso in "sezioni" il codice?

    Troppo lento poi ad estrapolare i dati?


  • Super User

    In regia mi dicono che MySql per un db da 9 GB non è la scelta migliore del mondo ....

    Comunque, per farti un'idea della differenza tra 1 pc + Mysql e l'architettura di un motore di ricerca:

    Sull'hardware di Google
    http://www.rankforsales.com/n-ag/259-seo-oct-08-03.html

    Panoramica sulla piattaforma Google:
    http://en.wikipedia.org/wiki/Google_platform (non mi piace citare Wikipedia, ma questa pagina è strutturata davvero bene)

    Sulla compressione:
    http://www.websiteoptimization.com/speed/tweak/compress/

    Cordialmente,
    Stuart


  • User Attivo

    non si usa un solo pc ma un cluster.
    non esistono dischi fisici ma virtuali hot swap su storage network (SAN e NAS), hanno dei server LIBRARY che viaggiano in fibra ottica e di solito si usa un sistema di compressione ad-hoc secondo un principio matematico che ora non ricordo.


  • Super User

    @Stealth said:

    non si usa un solo pc ma un cluster.
    non esistono dischi fisici ma virtuali hot swap su storage network (SAN e NAS), hanno dei server LIBRARY che viaggiano in fibra ottica e di solito si usa un sistema di compressione ad-hoc secondo un principio matematico che ora non ricordo.
    credo che Umor in questo momento non possa far altro che comprimere i dati e leggere i link proposti da Stuarte 😄

    è vero che MySql non è il massimo per questa mole di dati ma dove trovi oggi un bel Oracle :sbav: a prezzi ragionevoli ?

    p.s.:Umor allora sei tu che stai attaccato al mio sito () linguaggio utilizzato ?


  • User Attivo

    Sul fatto che usassero i cluster ok, però sai Google ha un pò più di fondi 😄

    Mi interessa sapere la loro architettura per prendere spunto, per cercare soluzioni a basso costo visto che non posso permettermi stanze da x server.

    Anche per MySql, so bene che non è proprio adatto però.. è free!
    Ma ad essere sincero tunandolo bene con tanta ram va che è una scheggia (almeno per ora).

    Per un comune mortale comprare sistemi di storage in fibra ottica o cose di questo tipo sono un suicidio, tanto quanto comprare 50pc farci un cluster e pagare la bolletta della corrente, figurati poi le bestemmie se salta la luce..

    linguaggio utilizzato ?
    Premettendo che lo spider non sta attaccato a nessun sito, massimo prendo 2-3 pagine a dominio, ho fatto tutto in c e perl.

    Riguardo all'architettura avevo idea di come fosse impostata però non avete risposto ad una domanda:
    Salvano l'html intero zippato oppure soltanto il testo dopo aver parsato la pagina?
    e aggiungo: sostituiscono le parole con numeri per risparmiare spazio?

    ma non hai usato più database per informazioni diverse? Quando hai pensato a spiderizzare tutto, come mai non hai diviso in "sezioni" il codice? Troppo lento poi ad estrapolare i dati?

    Si ho più database, questo che ho citato è soltanto quello relativo al salvataggio delle pagine web, poi tutti i vari calcoli li faccio altrove.
    Quando cominci ad affrontare un problema non ti rendi bene conta di cosa hai di fronte, almeno nel caso del web. Ho dovuto ricostruire la struttura del db almeno 5 volte perchè più spiderizzavo più trovavo bachi o cose da migliorare, attualmente il codice non è diviso e l'unica distinzione che faccio poi è title e resto del documento.
    Per quanto riguarda l'estrapolazione dei dati, con qualche gb di ram e dei dischi veloci sinceramente non ho nulla da invidiare a macchine più costose ma mal sfruttate.. anche se il db pesa molto va che è una scheggia!


  • User Attivo

    Una nota sulla compressione:
    ho letto l'articolo postato da Stuart ed è quello che sto utilizzando io, le zlib. Io chiedevo se esistono altri sistemi che occupino poca cpu ma che comprimano maggiormente. Sostanzialmente io ho usato il metodo che utilizzava G agli inizi, non so poi se sia cambiato..


  • User Attivo

    uMoR sicuramente se indicizzi il tutto senza l'html ma solo il testo risparmi un sacco di spazio, però questa è una considerazione che devi fare tu in base al tuo Ranker.
    Mi spiego meglio, togliendo tutti i tag non sai nemmeno quali sono link e quali no, amenoche tu non faccia una cosa del tipo:

    Prendi la pagina
    la analizzi e prendi quello che ti serve
    La salvi senza TAG, ma a questo punto a cosa ti serve salvarla?

    Ovviamente quando a google chiedi la cache lui ti restituisce la pagina completa, ma io non tenterei di paragonarmi a google perchè purtroppo le idee un pò tutti ce le abbiamo, ma i soldi??? Quello è il problema !!
    L' HW costa!!

    CMQ per la tua richiesta, hai mai provato a comparare le zlib che attualmente usi con le bzip?

    www.bzip.org

    Prova magari e facci sapere!! 🙂


  • User Attivo

    dimenticavo, hai dato uno sguardo sempre per prendere spunto dal progetto UIMA dell'IBM:

    http://www.alphaworks.ibm.com/tech/uima

    Unstructured information management (UIM) applications are software systems that analyze unstructured information (text, audio, video, images, etc.) to discover, organize, and deliver relevant knowledge to the user. In analyzing unstructured information, UIM applications make use of a variety of analysis technologies, including statistical and rule-based Natural Language Processing (NLP), Information Retrieval (IR), machine learning, and ontologies.


  • User Attivo

    Ci darò un occhio. Comunque io non utilizzo i tag html per calcolare il ranking, faccio altri tipi di considerazioni.. quindi in teoria l'html non mi serve però se qualcuno mi chiede la copia cache che gli faccio vedere ?? 😄


  • Super User

    @uMoR said:

    Premettendo che lo spider non sta attaccato a nessun sito, massimo prendo 2-3 pagine a dominio
    Che user-agent usa il tuo spider?

    quindi in teoria l'html non mi serve però se qualcuno mi chiede la copia cache che gli faccio vedere ?? 😄
    Gli fai vedere la pagina originale in un iframe e fai finta che sia una copia cache. 😄


  • User Attivo

    Everfluxx: bell'idea quella dell'iframe 😄

    Il mio spider usa lo user agent di ie..


  • Super User

    @uMoR said:

    Il mio spider usa lo user agent di ie..
    ()


  • User Attivo

    rinzi almeno un cluster lo devi avere, non ti dico la San ma almeno un doppio sistema.
    inoltre ti consiglio di usare un cluster di mysql, molto più fattibile....cerca in rete e trovarai varie info.


  • User Attivo

    Secondo te non le ho provate ste cose?
    Fidati che non conviene..

    A quel punto conviene usare i ramdisk, perchè la struttura a cluster di MySql non è chissachè, ma qui parliamo di cose tecniche che non rientrano nel titolo del thread.

    Io chiedevo solo metodi di compressione, non come impostare la mia potenza di calcolo.


  • Super User

    Io non ho chiaro che cosa va compresso.

    Va compresso un indice o va compresso del testo?

    Nel caso in cui si trattasse di un indice, che tipo di informazioni contiene, che struttura ha?

    Non esiste un algoritmo di compressione ottimale per tutte le occasioni. Dati diversi e formati diversi richiedono algoritmi di compressione diversi.


  • User Attivo

    Già dacci qualche dettaglio tecnico in più per capire meglio che tipo di compressione usare.

    (Che bugiardo che sono la realtà è che sono curioso e vorrei apprendere queste cose come funzionano!!!) :mmm:


  • User Attivo

    Io sto chiedendo come comprimere le pagine html che spiderizzo. Attualmente con le zlib comprime in maniera veloce e abbastanza efficace, ma il db si fa grosso..


  • Super User

    @uMoR said:

    Io sto chiedendo come comprimere le pagine html che spiderizzo. Attualmente con le zlib comprime in maniera veloce e abbastanza efficace, ma il db si fa grosso..

    Questo sito è un buon inizio: compara le prestazioni di diversi software/algoritmi di compressione: http://www.maximumcompression.com/

    Tuttavia, come ti dicevo, le prestazioni variano molto a seconda di cosa bisogna comprimere. Le pagine HTML sono un orrendo mix di struttura e contenuto. Già separando infile diversi la struttura (tag HTML) ed il contenuti (testi), otterresti a mio parere risultati migliori. Sopratutto perché potresti usare algoritmi di compressione diversi per informazioni diverse.


  • User Attivo

    Un buon sistema potrebbe essere usare sql2005 standard e salvare in modalità read only il db storico su una partizione ntfs compressa.

    Se ti procuri sql ti "metti comodo" e risolvi il problema per i futuri sviluppi del tuo lavoro.

    Inoltre se il tutto diventa mastodondico con sql standard puoi salire di cpu e via dicendo.

    Cerca su ebay, spesso pacchetti originali da 5k dollari li trovi ad un centesimo del prezzo... misteri di internet!