Pagina 2 din 3 PrimulPrimul 123 UltimulUltimul
Rezultate 11 la 20 din 29

Subiect: Optimizare baze de date foarte mari

  1. #11
    Avatarul lui serban
    serban este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    17th February 2006
    Locaţie
    Bucharest
    Posturi
    133
    Putere Rep
    34


    Implicit re

    mai intai upload si dupa aia indecsii, asa stiu ca este cel mai rapid.
    Serban Ghita - my website

  2. #12
    Avatarul lui Marius Mailat
    Marius Mailat este deconectat Membru SeoPedia
    Reputatie:
    38
    Data înscrierii
    16th November 2005
    Vârstă
    46
    Posturi
    1.818
    Putere Rep
    38


    Implicit

    Citat Postat în original de Netul Vezi Post
    Acum am instalat EMS. E f fain, pacat ca nu e gratis.
    E 30 days trial, poti sa iti faci treaba in timpul asta .
    Directory Submitter - soft de inscriere in 4500 de directoare straine si 1025 romanesti
    Anunturi - soft de inscriere in 500 de siteuri de anunturi

  3. #13
    Avatarul lui Netul
    Netul este deconectat Ambasador
    Reputatie:
    45
    Data înscrierii
    5th January 2006
    Locaţie
    Iasi
    Vârstă
    45
    Posturi
    1.065
    Putere Rep
    45


    Implicit

    Citat Postat în original de mmariusel Vezi Post
    E 30 days trial, poti sa iti faci treaba in timpul asta .
    Treaba asta trebuie facuta macar saptamanal, mereu , nu doar o luna.... Daca nu v-ati dat seama, face parte din proiectul motorului de cautare. Deja s-au adunat vreo 4 Giga de date. Mai multe detalii in cel mai scurt timp.

  4. #14
    Avatarul lui Marius Mailat
    Marius Mailat este deconectat Membru SeoPedia
    Reputatie:
    38
    Data înscrierii
    16th November 2005
    Vârstă
    46
    Posturi
    1.818
    Putere Rep
    38


    Implicit

    De ce faci backup/import? Ai crawler local?
    Directory Submitter - soft de inscriere in 4500 de directoare straine si 1025 romanesti
    Anunturi - soft de inscriere in 500 de siteuri de anunturi

  5. #15
    Avatarul lui add
    add
    add este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    27th November 2005
    Posturi
    265
    Putere Rep
    34


    Implicit

    pot sa intreb de ce-s tabelele asa mari? ai atatea milioane de inregistrari? mai tine mysql-ul?

  6. #16
    Avatarul lui Netul
    Netul este deconectat Ambasador
    Reputatie:
    45
    Data înscrierii
    5th January 2006
    Locaţie
    Iasi
    Vârstă
    45
    Posturi
    1.065
    Putere Rep
    45


    Implicit

    Citat Postat în original de mmariusel Vezi Post
    De ce faci backup/import? Ai crawler local?
    Da, am crawler local din mai multe motive.
    1. In primul rand cunsuma enorm de multe resurse si prefer sa tin serverul mai liber pentru cautari.
    2. Bazele de date intai le prelucrez si apoi le uploadez pe server.

    @add:
    Deocamdata am cam 80.000 url-uri indexate, baza de date are cam 3 Giga. Tocmai de aceea le-am impartit in tabele mai mici, de cateva sute de mega fiecare. Avand in vedere ca siteurile (re-indexarea lor) se actualizeaza destul de des, cred ca e mai bine sa impart baza de date in parti mai mici si sa le urc apoi pe server.
    Problema la care lucrez acum e alta. Cautarea se face extrem de rapid (sub o secunda, dar daca vreau rezultate cat mai relevante si pun cat mai multe conditii in query cautarera devine tot mai lenta).
    Sper sa rezolv si asta zilele astea, odata cu finalizarea noului algoritm de cautare, despre care o sa scriu in scurt timp.

    Deocamdata am facut asa:
    - am 3 tabele (link1, link2, link3) , fiecare de 1 Giga (o sa fie mai multe tabele in viitor dar acum dau exemplul cu 3).

    Varianta 1.
    Am incercat sa folosesc SELECT si UNION simple:
    query = "(SELECT ... from link1 WHERE ...) UNION (SELECT ... from link2 WHERE ...) UNION (SELECT ... from link3 WHERE...)"
    Avantaj: rezultate o gramada
    Relevanta: sczauta

    Varianta 2.
    Varianta cu SELECT, UNION, MATCH, AGAINST
    query = "(SELECT ... FROM link1 WHERE MATCH (...) AGAINST (...))
    UNION DISTINCT
    (SELECT ... FROM link2 WHERE MATCH (...) AGAINST (...))
    UNION DISTINCT
    (SELECT ... FROM link3 WHERE MATCH (...) AGAINST (...))"
    Aici rezultatele sunt cat de cat mai relevante, dar nu f multumitoare. Cautarea se face intr-un timp rezonabil.

    Varianta 3.
    Varianta cu SELECT, UNION, MATCH AGAINST, IN BOOLEAN MODE
    query = "(SELECT ... FROM link1 WHERE MATCH (...) AGAINST (... IN BOOLEAN MODE))
    UNION DISTINCT
    (SELECT ... FROM link2 WHERE MATCH (...) AGAINST (... IN BOOLEAN MODE))
    UNION DISTINCT
    (SELECT ... FROM link3 WHERE MATCH (...) AGAINST (... IN BOOLEAN MODE))"
    Aici rezultatele sunt f bune si relevante, insa la timpii de cautare... e jale. Am stat aproape 1 minut la o cautare dupa 2 cuvinte.

    Ma gandeam la alta varianta, sa folosesc un tabel temporar, unde sa bag temporar toate rezultatele, iar in acel tabel sa le prelucrez si sa le afisez dupa relevanta. Inca nu am testat, sa vad viteza cu care lucreaza metoda asta.

    Ceva idei?

  7. #17
    Avatarul lui add
    add
    add este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    27th November 2005
    Posturi
    265
    Putere Rep
    34


    Implicit

    deja tabelele sunt mari pentru Mysql, trebuie sa cauti alta solutie curand, apoi:

    - indecsi pe campul unde faci cautarea
    - merita incercat cu tabela temporara, timpul de cautare intr-o tabela e mult mai mic decat intr-un UNION
    - match against e o metoda buna dar nu face minuni.

  8. #18
    Avatarul lui Netul
    Netul este deconectat Ambasador
    Reputatie:
    45
    Data înscrierii
    5th January 2006
    Locaţie
    Iasi
    Vârstă
    45
    Posturi
    1.065
    Putere Rep
    45


    Implicit

    Citat Postat în original de add Vezi Post
    deja tabelele sunt mari pentru Mysql, trebuie sa cauti alta solutie curand, apoi:

    - indecsi pe campul unde faci cautarea
    - merita incercat cu tabela temporara, timpul de cautare intr-o tabela e mult mai mic decat intr-un UNION
    - match against e o metoda buna dar nu face minuni.
    Alta solutie in afara de MySQL nu am, nu am chef acum sa invat alte limbaje de programare. Trebuie sa ma descurc cu MySQL. Am auzit ca motorul Google se bazeaza pe limbajul C. Am facut destul C - Liceul de Informatica si Fac. de Automatica si Calculatoare daca e voie sa ma laud putin
    Sincer nu am suportat niciodata limbajul ala
    - indecsi am, nu asta e problema.
    - o sa incerc sa gasesc alti algoritmi de cautare relevanti.

  9. #19
    Avatarul lui serban
    serban este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    17th February 2006
    Locaţie
    Bucharest
    Posturi
    133
    Putere Rep
    34


    Implicit

    nu am folosit pana acum MATCH AGAINST in MySQL, dar pentru un crawler asemanator am folosit LIKE si REGEXP in combinatie cu niste functii de string prin care numar de cate ori apare cuvantul respectiv in text, si la sfarsit sortam dupa mai multe criterii de relevanta.
    faza e ca iti trebuie MySQL si baza de date ft bine optimizata, altfel in tabele de 2 giga poti avea timpi de raspuns de 2 minute la query-uri pe 2 sau 3 cuvinte

    metoda mea e urmatoarea:

    daca cauti 'php mysql' prima oara cauta dupa %php%, stocheaza rezultatele in temporar si din aceste rezultate mai caut si %mysql%. ca relevanta bazandu-ma pe numarul de aparitii in string si pe pozitia cuvantului in text. e o metoda ft buna pentru baze de date mici.

    eu m-am oprit cu crawlerul la 4 giga, pentru ca nu erau timpii de raspuns eficienti, si am incercat ft multe metode de cautare.
    Serban Ghita - my website

  10. #20
    Avatarul lui Netul
    Netul este deconectat Ambasador
    Reputatie:
    45
    Data înscrierii
    5th January 2006
    Locaţie
    Iasi
    Vârstă
    45
    Posturi
    1.065
    Putere Rep
    45


    Implicit

    Ce credeti ca ar fi mai rapid?
    - Un SELECT dintr-un singul tabel de 2 GB?
    sau
    - Un SELECT dintr-un UNION de 4 tabele fiecare de 500 MB?
    Deci ca dimensiune e acelasi lucru.
    Ma intereseaza ca timp de raspuns.

    Later edit:
    Ma gandesc sa combin toate tabelele in unul singur, chiar daca acesta va avea multi Giga.
    Oricum daca erau mai multe tabele, cautarea se facea in toate + ca trebuiau unite rezultatele din toate tabelele.
    Ma gandesc ca la o cautare, sa extrag toate rezultatele ce corespund si sa le pun intr-un tabel separat, si acolo sa prelucrez rezultatele si sa le afisez in ordinea relevantei. Problema e ca acel tabel temporar nu poate fi de tip Memory(Heap), trebuie sa fie neaparat MyISAM, altfel nu merg comenzi gen SELECT ... MATCH AGAINST
    Ce ziceti?
    Ultima modificare făcută de Netul; 2nd September 2007 la 11:00.

Pagina 2 din 3 PrimulPrimul 123 UltimulUltimul

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. [Caut] Baze de date ecommerce-uri
    De StarNET în forumul Bar, lobby...
    Răspunsuri: 2
    Ultimul Post: 19th March 2010, 11:51
  2. caut programator optimizare baza de date
    De RoManiac în forumul Server side
    Răspunsuri: 1
    Ultimul Post: 3rd December 2009, 16:43
  3. Răspunsuri: 2
    Ultimul Post: 25th August 2008, 10:49
  4. Unu care vinde baze de date
    De deadworldisee în forumul SPAM made in .RO
    Răspunsuri: 13
    Ultimul Post: 17th May 2008, 09:39
  5. Cumpar baze de date
    De danielbuca în forumul Continut web
    Răspunsuri: 8
    Ultimul Post: 11th September 2007, 15:49

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •