Index-Datenbank: Daten zu einer URL immer in einem Blob

Ideen und Vorschläge sind willkommen.

Index-Datenbank: Daten zu einer URL immer in einem Blob

Beitragvon PCA42 » So Mai 29, 2011 7:30 am

Ich hoffe das Thema beschreibt es schon halbwegs: alle RWIs zu einer URL sollen sich immer in einem Blob befinden. Die URL-Tabelle wird damit direkt an den Blob gekoppelt.

Was soll damit erreicht werden?
- bei einer Mehrwortsuche kann jedes Blob für sich behandelt werden > mögliche Performance-Steigerung bei großen Datenbanken
- es lassen sich gezielt Daten aus einer Webseite als ungültig markieren > Index wird aktueller
- damit verbunden kann bei einer Neu-Indizierung einer Web-Seite die alte Version verworfen werden > Index wird akueller
- es sollte damit auch möglich sein, nicht mehr benötige URLs einfach zu identifizieren und zu löschen > Speicherverbrauch reduzieren

Wie soll das funktionieren?
Aufgabe 1 - Hinzufügen von Daten aus DHT-Transfer
Die RAM-Speicher wird zunächst auf die Festplatte geschrieben (RWI-Blob + URL-Tabelle). Dann werden alle URLs und die damit verbundenen bereits vorhandenen RWI aus den bereits vorhandenen Blobs in eine zweite Datei geschrieben. Anschließend werden die URLs in den alten Blobs als ungültig markiert. Abschließend erfolgt der Merge der Tabellen aus dem RAM-Speicher und dem Extrakt aus den bereits vorhandenen Blobs.

Aufgabe 2 - Hinzufügen von neuen Web-Seiten aus einer lokalen Indizierung
Es kann direkt die neue Struktur gespeichert werden. Anschließend werden bei den vorher vorhandenen Blobs die URLs, die dort bereits vorhanden waren, als ungültig markiert.

Aufgabe 3 - Merge von zwei Blobs
Hier können direkt die RWI und URLs extra gemergt werden. Dabei sollte bei jedem RWIs in den Blobs eine Prüfung erfolgen, ob die URLs noch gültig ist. Damit können alte unnütze Daten entfernt werden.

Aufgabe 4 - Suchen
Der Suchablauf wandelt sich dahin, dass hier in jedem Blob getrennt gesucht wird und zum Schluss die Teilergebnisse zusammengefügt werden.

Aufgabe 5 - Falsche Suchergebnisse nach Verify
Da das Verify einer neuen Indizierung entspricht, werden alte Daten in jedem Fall - unzutreffendes wie aber auch zutreffendes Suchergebnis - durch aktuelle Daten ersetzt (siehe Aufgabe 2).

Nachteile dieser Konstrukts
Es wird beim Erstellen von neuen Blobs definitiv mehr Zeit benötigt, da Daten aus den bereits vorhandenen Blobs extrahiert werden müssen. Dies kann jedoch m.E. vernachlässig werden, da dieser Teil grundsätzlich nicht zeitkritisch ist.#

Was noch wichtig ist
Ich bin bei meinen Überlegungen nur auf die Suchdatenbank eingegangen. Da die verwendeten Datenstrukturen jedoch auch z.B. mit dem Crawler ineinander greifen, sollte vorab geprüft werden, wie sich die Daten voneinander trennen lassen.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Index-Datenbank: Daten zu einer URL immer in einem Blob

Beitragvon Orbiter » Mo Mai 30, 2011 5:06 pm

Hallo René
soweit so gut das ist in-sich funktionierend. Bis auf 2 Ausnahmen:

zu 1) das Rüberkopieren von alten Metadaten in die neuen geht zwar auch wenn es grenzwertig ist wegen möglich hoher IO. Aber was passiert mit den RWI-Referenzen aus dem alten Indexfile? Das zeigt ja dann nicht mehr auf die Metadaten die dem Index File beiliegt.. Man müsste genau diesen einen Index dann auch rüberkopieren und das hätte zur Folge dass man auch alle Referenzen beachten muss. Mit anderen Worten: löscht man nur ein einziges Metadatenfeld aus einem BLOB, dann muss man gleich den ganzen Index mergen. Das trifft dann leider für alle anderen Fälle für alle Indexdateien zu, so dass man logisch gesehen alles in einen Index mergen muss, und das ist ja nicht Sinn der Sache

weiterhin ("Aufgabe 6") was passiert bei einem Re-Indexing? Wir haben einen ähnlichen Fall wie oben: man indexiert etwas das schon in einem anderen Metadatenfile drin steht. Das müsste man dann von dort entfernen und aber alle RWI-Referenzen auch mitschleppen, mit dem Ergebnis dass man gleich komplett joinen muss.

beide Themen dampfen ein wenn man sich einen Spezialfall ausdenkt: man macht genau eine Index+Metadaten - Datei für eine bestimmte Menge von URLs. Die würden dann sozusagen 'unter sich' bleiben. Das läuft auf eine partition-by-document Datenstruktur im eigenen Index hinaus. Man kann dann vorpartitionieren und sagt: ok, wir machen sagen wir mal 4096 Partitionen. Für jede der Partion würde das gelten was du schreibst, aber nicht auf File-Ebene sondern nur für das 'Paket' der Partition.
Orbiter
 
Beiträge: 5798
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Index-Datenbank: Daten zu einer URL immer in einem Blob

Beitragvon PCA42 » Mo Mai 30, 2011 5:27 pm

Gut, ich habe mir das wohl zu einfach vorgestellt. Man müsste dann also noch zu jeder URL noch eine Referenz aller RWI mitschleifen. Das wird dann aber sehr aufwendig, was den Speicher angeht.

Ich schau mir dann doch lieber mal CouchDB in Ruhe an. Ich bin gerade dabei, mich in Javascript einzulesen. Damit will ich dann mal ein paar Testroutinen für CouchDB basteln, die YaCy-typische Abläufe simulieren.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home


Zurück zu Wunschliste

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron