Arxitektonikh gia DB search engine ???

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
silo
Δημοσιεύσεις: 66
Εγγραφή: 22 Οκτ 2006 14:20

Arxitektonikh gia DB search engine ???

Δημοσίευση από silo » 25 Δεκ 2007 12:25

Kalhmera kai xronia polla,

8a h8ela thn boh8eia sas. Ftiaxnw mia search engine h opoia 8elw na ginei megalh, dld panw apo 1.000.000 records.
TI prepei na kanw etsi wste na exw ena grhgoro search ? xwis na kanoun 10aiwnes ta apotelesmata ? An gia paradeigma ftiaksw ena bot, mpainei sto forum tou freestuff kai phgainei sta topics pernei ton titlo, to url thn hmeromhnia pou egine auto kai ta apo8hkeuei se mia db, pws 8a eprepe na einai auth ? ID, title, url, date ? toso aplo ?

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από cherouvim » 25 Δεκ 2007 12:57

Πιθανός να πρέπει να παίξεις με τη full text search δυνατότητα της βάσης σου. [MySQL]
Αλλιώς να χρησιμοποιήσεις το lucene για index και search ανεξαρτήτου datastore.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από lakritidis » 30 Δεκ 2007 15:00

Μια textual search engine ψάχνει σε documents. Θα πρέπει ο crawler σου να κατεβάζει ολόκληρα τα documents τα οποία επισκεπτεται και να τα αποθηκευει τοπικά σε ένα repository.

Το πού θα αποθηκεύονται αυτά είναι ένα θέμα. Όλες οι relational databases (mysql, mssql Κλπ) εισάγουν ένα overhead στην όλη διαδικασία που είναι απαγορευτικό για μεγάλο αριθμό documents.

Επιπλέον θα πρέπει να ορίσεις ένα full-text index στο πεδίο του περιεχομένου του document (το οποίο είναι συνήθως πολύ μεγάλο). Οι διαδικασίες insert/update θα είναι απελπιστικά αργές ακόμα και σε myISAM πίνακες διότι κάθε φορά θα πρέπει να γίνεται update και o index.

1 εκατομμύριο documents πάντως μπορούν οριακά να το υποστηρίξουν.

Τα (free) storage engines Berkeley DB και Berkeley DB XML της Oracle (sleepycat) αποφεύγουν αυτά τα θέματα
http://www.oracle.com/database/berkeley-db.html

Σε διαφορετική περίπτωση (την ιδανική) θα πρέπει να σώσεις τα documents σε flat αρχεία τα οποία θα δεικτοδοτήσεις μόνος σου (χτίζοντας έναν inverted index). Λεπτομέρειες περιγράφονται πλήρως εδώ:

http://www.cs.mu.oz.au/mg/

Στην τελευταία περίπτωση χρειάζεται μπόλικο διάβασμα και μεγάλες γνώσεις και σε compression algorithms.

Σε όλες τις περιπτώσεις πάντως η ταχύτητα εξαρτάται από το πλήθος των αποτελεσμάτων που θα σηκώσεις από το sotrage σου. 40000 documents σε 1 δευτερόλεπτο δε θα σηκώσεις ποτε με ένα μηχανημα και ένα δίσκο, και αυτό οφείλεται ατους χαμηλούς χρόνους random seek των δίσκων.

Λύσεις το caching στην κύρια μνήμη και το data partitioning (stripping). Στην τελευταία περίπτωση το πράγμα ξεφεύγει προς distributed σύστημα με σεβαστό disk array.

H Lucene που λέει ο cherouvim έχει μερικά από τα παραπάνω έτοιμα.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από cherouvim » 30 Δεκ 2007 15:07

lakritidis: Θα είχε προβλήματα το lucene για 1m documents; Έχω δουλέψει με indexes των 10k documents και παίζει πάρα πολύ γρήγορα ακόμα και σε πολύπλοκα queries (με fuzzy searches κτλ).

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από lakritidis » 30 Δεκ 2007 15:24

Η λέξη the είναι η πιο συχνά χρησιμοποιούμνη λέξη στην αγγλική. Είναι ένα stopword με άλλα λόγια. Πολύ πιθανόν να εμφανίζεται και στα 1m documents.

Αν βάλεις λοιπόν το query "the" στη lucene θα πρέπει η μηχανή να σηκώσει και να ταξινομήσει 1m records.

Νομίζω ότι σε ένα υπολογιστή με ένα δίσκο, αυτό θα χρειαστεί τουλάχιστον 3 λεπτά.

Σου δίνω ένα ακραίο παράδειγμα για να υποστηρίξω ότι η ταχύτητα της μηχανής που στηρίζεται στην αρχιτεκτονική της lucene εξαρτάται από το recordset Που επιστρέφει ένα query.

πχ το query "the big black cat" πιθανώς να εκετελεστεί
σφαιρα.

silo
Δημοσιεύσεις: 66
Εγγραφή: 22 Οκτ 2006 14:20

Arxitektonikh gia DB search engine ???

Δημοσίευση από silo » 31 Δεκ 2007 13:18

Ligo skoura ta pragmata :(, me kapoio mysql cluster den mporeis na apofugeis problhma taxuthtas ?? :D

Άβαταρ μέλους
KGP
Honorary Member
Δημοσιεύσεις: 5857
Εγγραφή: 18 Ιούλ 2002 01:50
Τοποθεσία: Mr Wonderful

Arxitektonikh gia DB search engine ???

Δημοσίευση από KGP » 31 Δεκ 2007 14:08

apopsi mou gia teties periptoseis i kaliteri lisi einai i oracle genika i mysql mporei na einai kali -kai fisika tsampe- alla gia tetiou eidous "apaitiseis" sou "vazei" polous periorismous
*Στην Ελλάδα δεν χρειάζεται να σκέφτεσαι...χάνεις πολύτιμο χρόνο!
*"The power of accurate observation is frequently called cynicism by those who don't have it." -George Bernard Shaw (1856-1950)
*The purpose of argument should not be victory, but progress.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από cherouvim » 31 Δεκ 2007 14:26

KGP έγραψε:... gia tetiou eidous "apaitiseis" sou "vazei" polous periorismous
Όπως;

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από lakritidis » 31 Δεκ 2007 16:28

Άρε kgp... και για το πώς θα φτιαχτεί πυρηνικός αντιδραστήρας έχεις άποψη!!

Anyway, μερικά προβλήματα που συνάντησα εγώ είναι:

1. περιρισμός max_allowed_packet. Αν κάποιο πεδίο είναι μεγαλύτερο από 1MB θέλει ρύθμιση (εύκολο)
2. Αργά ranged select queries. (Μερικώς οφείλεται στην ταχύτητα του δίσκου και τον περιρισμό που λέγαμε)
3. Για queries με μεγάλα result sets πιθανό internal server error 500 (!!)

Το μεγάλο μειονέκτημα είναι ότι δε μπορείς να εφαρμόσεις compression στα documents και να τα ρίξεις συμπιεσμένα στα tables γιατί ο fulltext index που θα δημιουργηθεί θα είναι άλλα αντ' άλλων. Θα πρέπει λοιπόν να διαθέτεις τόσο χώρο στο δίσκο (ή δισκους) όσο είναι το μέγεθος όλων των documents (πρακτικά αδύνατο) σύν το χώρο που καταλαμβάνει ο fulltext index.

Αυτό το αποφεύγεις με custom storage όπου έχεις την ελευθερία να επιλέξεις αλγόριθμο συμπίεσης ανάλογα με τις απαιτήσεις που έχεις σε compression/decompression ταχύτητα ή σε βαθμό συμπίεσης.

Πχ στο παρακάτω paper των Brin - Page βλέπουμε ότι η Google χρησιμοποιεί τον bzip αλγόριθμο συμπίεσης (σελίδα 8, παρ. 4.2.2)

http://infolab.stanford.edu/pub/papers/google.pdf

Επίσης απο το ίδιο paper στη σελίδα 12, βλέπουμε ότι και αυτοί είχαν πρόβλημα στο retrieval μεγάλων result sets και περιόριζαν τη Google στα 40 χιλιάδες documents (πρίν αποκτήσουν το disk array με 20 χιλιάδες δίσκους).
Τελευταία επεξεργασία από το μέλος lakritidis την 31 Δεκ 2007 16:33, έχει επεξεργασθεί 1 φορά συνολικά.

id12586
στις καρδιές μας
Δημοσιεύσεις: 8387
Εγγραφή: 23 Ιουν 2003 23:28
Τοποθεσία: Far away
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από id12586 » 31 Δεκ 2007 16:33

Παρότι ο bzip δεν είναι και ο πιο γρήγορος αλγόριθμος συμπίεσης έτσι? (βλ. gzip)
Chris at your Services
ΕικόναSacame de Aqui

Άβαταρ μέλους
KGP
Honorary Member
Δημοσιεύσεις: 5857
Εγγραφή: 18 Ιούλ 2002 01:50
Τοποθεσία: Mr Wonderful

Arxitektonikh gia DB search engine ???

Δημοσίευση από KGP » 31 Δεκ 2007 16:33

fisika kai echo re lakritidi... -thelo na do pote tha fas tin google, tin ask, yahoo etc-

eides pou sinfoneis oti ontos ... echei periorismous??? ase pou eidika ston arithmo ton document/records/etc pou mporei na ipostiriksei einai periorismenos... diladi mporeis -metaforika milao- na stirikseis mia "google/ask/etc" me mysql...?
*Στην Ελλάδα δεν χρειάζεται να σκέφτεσαι...χάνεις πολύτιμο χρόνο!
*"The power of accurate observation is frequently called cynicism by those who don't have it." -George Bernard Shaw (1856-1950)
*The purpose of argument should not be victory, but progress.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από lakritidis » 31 Δεκ 2007 16:58

Όντως ο gzip είναι (πολύ) πιο γρήγορος, αλλά με τον bzip πετυχαίνεις καλύτερη συμπίεση.

Αυτό ισχύει σε πολλές περιπτώσεις. Γρήγορος αλγόριθμος, χαμηλός βαθμός συμπίεσης και το αντίστροφο.

Αυτό δεν είναι κανόνας. Ο rzip πετυχαίνει καλύτερη συμπίεση σε πολυ καλύτερο χρόνο (το μισό) από ότι ο bzip.

Να και ένα benchmark (δεν έχω τεστάρει την ακρίβειά του, το παραθέτω με επιφύλαξη)
http://jeremy.zawodny.com/blog/archives/001842.html

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από cherouvim » 31 Δεκ 2007 17:03

Ελπίζω κάποτε να δουλέψω σε project που η MySQL να μην μου φτάνει.
Δεδομένου οτι τα digg, slashdot και youtube ζούν με MySQL, θα έχει όντως τεράστιο ενδιαφέρον ;)

Άβαταρ μέλους
KGP
Honorary Member
Δημοσιεύσεις: 5857
Εγγραφή: 18 Ιούλ 2002 01:50
Τοποθεσία: Mr Wonderful

Arxitektonikh gia DB search engine ???

Δημοσίευση από KGP » 31 Δεκ 2007 17:06

tha me endiafere -emena prosopika pantos- na matho "pos ta katafernoun" ... an ksereis mporeis na mas enimeroseis? (ipopsin kai gia na min pareksigitho den to leo ipotimitika oute eironika... apla kai emena "ton mi techniko" tha mou itan chrisimo giati polles fores mou echei alaksei tin pisti to olo thema... "projectwise")
*Στην Ελλάδα δεν χρειάζεται να σκέφτεσαι...χάνεις πολύτιμο χρόνο!
*"The power of accurate observation is frequently called cynicism by those who don't have it." -George Bernard Shaw (1856-1950)
*The purpose of argument should not be victory, but progress.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Arxitektonikh gia DB search engine ???

Δημοσίευση από lakritidis » 31 Δεκ 2007 17:07

Ελπίζω να μη με παρεξήγησες. Με όλα όσα λέω ΔΕΝ υποστηρίζω ότι η mySQL δεν είναι ένα έξοχο project.

Το αντίθετο μάλιστα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες