hallo
ich habe eine kleine frage bzgl. einer datenbankstruktur. ich möchte gerne eine kleine "suchmaschine" mit suchindex bauen. das ganze soll eine Produkt- bzw. Preisvergleichsuchmaschine werden. Maximal werden es denke ich 2 Mio Produkte werden. dazu verwende ich php und mysql. als datenbankstruktur habe ich mir folgendes zusammengebastelt:
Keywordtabelle: keyword_id | keyword
Indextabelle: keyword_id | produkt_id
Produkttabelle: produkt_id | description | img_url | etc.
wenn jetzt einer eine suchanfrage startet, mit z.b dem keyword "fernseher", dann wird fernser in der Keywordtabelle gesucht und die keyword_id ausgelsen. Danach liest er die produkt_id`s aus der Indextabelle, bei denen die keyword_id gleich der davor ausgelesenen ist. hat er nun die produkt_id´s, kann er in der produkttabelle die nötigen infos, wie beschreibung, bildurl etc. auslesen.
der vorteil an dieser struktur ist, dass die indextabelle nur aus integern besteht und somit relativ flott durchsucht werden kann. der nachteil, sie bekommt sehr viele datensätze.
wenn ich zb. 2 Mio produkte habe und ich im schnitt pro produkt 100 keywords zuordne, dann hat die indextabelle 2mio * 100 keywords = 200.000.000 datensätze. ok es sind nur integer und daher relativ schnell zu durchsuchen, aber packt sowas die mysql db?
das ganze läuft momentan noch auf nem Celeron 2.400 MHz mit 512 MB speicher.
nun die frage an die, die mit solchen großen datenmengen schon erfahrungen gesammelt haben. von der db struktur machen das ja auch die großen suchmaschienen soweit ich weiss. nur ich kann mir nicht vorstellen, dass der index mit 200 Mio datensätze noch schnell funktioniert. braucht man da einfach mehr rechenpower, oder wie könnte ich das ganze von der performance noch verbessern. habe mal irgendwo gehört, dass man die indextabelle auch eventuell aus der datenbank in ein file auslagern kann, da das schneller zu durchsuchen ist. bein leider kein informatiker
hat irgendjemand tips oder sowas schon mal selber gemacht? kennt ihr irgendwelche links zu weiteren infos speziell zu diesem thema. ich könnte das ganze natürlich ausprobieren, aber das würde sehr lange dauern, bis man dann den ganze index voll hat. würde es gerne daher schon vorher wissen, wie ich das am besten zusammenbaue.
schon mal vielen dank für eure antworten.
gruss
ich habe eine kleine frage bzgl. einer datenbankstruktur. ich möchte gerne eine kleine "suchmaschine" mit suchindex bauen. das ganze soll eine Produkt- bzw. Preisvergleichsuchmaschine werden. Maximal werden es denke ich 2 Mio Produkte werden. dazu verwende ich php und mysql. als datenbankstruktur habe ich mir folgendes zusammengebastelt:
Keywordtabelle: keyword_id | keyword
Indextabelle: keyword_id | produkt_id
Produkttabelle: produkt_id | description | img_url | etc.
wenn jetzt einer eine suchanfrage startet, mit z.b dem keyword "fernseher", dann wird fernser in der Keywordtabelle gesucht und die keyword_id ausgelsen. Danach liest er die produkt_id`s aus der Indextabelle, bei denen die keyword_id gleich der davor ausgelesenen ist. hat er nun die produkt_id´s, kann er in der produkttabelle die nötigen infos, wie beschreibung, bildurl etc. auslesen.
der vorteil an dieser struktur ist, dass die indextabelle nur aus integern besteht und somit relativ flott durchsucht werden kann. der nachteil, sie bekommt sehr viele datensätze.
wenn ich zb. 2 Mio produkte habe und ich im schnitt pro produkt 100 keywords zuordne, dann hat die indextabelle 2mio * 100 keywords = 200.000.000 datensätze. ok es sind nur integer und daher relativ schnell zu durchsuchen, aber packt sowas die mysql db?
das ganze läuft momentan noch auf nem Celeron 2.400 MHz mit 512 MB speicher.
nun die frage an die, die mit solchen großen datenmengen schon erfahrungen gesammelt haben. von der db struktur machen das ja auch die großen suchmaschienen soweit ich weiss. nur ich kann mir nicht vorstellen, dass der index mit 200 Mio datensätze noch schnell funktioniert. braucht man da einfach mehr rechenpower, oder wie könnte ich das ganze von der performance noch verbessern. habe mal irgendwo gehört, dass man die indextabelle auch eventuell aus der datenbank in ein file auslagern kann, da das schneller zu durchsuchen ist. bein leider kein informatiker
hat irgendjemand tips oder sowas schon mal selber gemacht? kennt ihr irgendwelche links zu weiteren infos speziell zu diesem thema. ich könnte das ganze natürlich ausprobieren, aber das würde sehr lange dauern, bis man dann den ganze index voll hat. würde es gerne daher schon vorher wissen, wie ich das am besten zusammenbaue.
schon mal vielen dank für eure antworten.
gruss
Kommentar