Am 2006-05-26 12:02:29, schrieb Jan Kesten: > Hmm, was Du da haben willst ist einfach eine Liste aller URLs die noch > nicht in $LISTE sind, aber in $DATEI stehen? Wo ist da das Problem? Wenn > ich mich in den Postings richtig erinnere, programmierst Du und nutzt > auch PostgreSQL.
Also bis jetzt überprüfe ich jeden URL ob er in der PostgreSQL bereits ist, was aber immense Resourcen benötigt... Die Kiste ist ein Opteron 150 mit 4 GByte Speicher... läuft aber derzeit noch unter i386 weil ich mit ein paar programmen probleme unter amd64 habe... > Lösungsvorschlag a) > > Anstelle einer Liste mit den URLs als Expression einfach eine weitere > Liste, sort + diff = fertig. Ein zweimailiges 'sort -u' mit nachfolgendem 'diff' dauerte über 30 minuten. > Lösungsvorschlag b) > > Kurzes (Python|Perl|Java|whatecer)-Skript geschrieben, die $DATEI mit > den URLs komplett einlesen und alle Einträge anhand der $LISTE daraus > entfernen. Machste dann ein Array aus den URLs? Ich hatte das mit perl ein bischen versucht, nur bin ich dann in Speicher schwierigkeiten geraten wobei die 4 GByte nicht genug waren... > Lösungsvorschlag c) > > PostgreSQL nehmen, zwei Tabellen für die beiden Listen erstellen, alle > URLs hineinschreiben. Okay, dafür sind Datenbanken sicher nicht gedacht, > aber möglich wäre es (vorallem wenn man noch zusätzliche Informationen > verwalten kann/will). Dann einen Query in der Form: > > select url from url1 except select url from url2; Fast... Die URL's sind ja bereits drin, nur teste ich derzeit jeden eingehenden URL gegen die Liste... was bei über 200 URLs pro Sekunde ne nette Last gibt... Geht allerdings über GigaBit Netzwerk. Der Rechner selber ist nur für die Analyse zuständig... > Lösungsvorschalg d) > > 'Richtiges' Programm mit 'guter' Datenstrukturschreiben wenns noch > halbwegs schnell sein soll. > > >Die Frage ist nun, wie würdet ihr das am besten lösen? > > NICHT in Umgebungsvariablen der Shell. Sonst mit kurzem Nachdenken, 5 > Minuten Arbeit und etwas Warten. > > >$DATEI ist übrigends eine Liste von URLS die ich überwachen, bzw., > >runterladen will und $LISTE mein localer Cache. > > Soviel Überwachung lässt mich an gewissen "Three-Letter-Agencies" denken... PMC :-) Ich betreibe seit ende 1999 dataretention... (lucratives nebengeschäft) Naja, ich habe auch ein paar URLs des FBI und der CIA im Cache. Man muß ja bischen auf dem laufenden sein... > Ich behaupte das geht noch wesentlich schneller und eleganter (will > vorallem meinen etwas weniger speicherlastig), wenn die Listen beide Das Speicherproblem hatte ich auch. Alle größeren Tests sind am Speicher gescheitert. > sortiert vorliegen, wenn sie nicht mehr ins RAM passen. Da braucht es > dann aber mehr als die zehn Minuten, die ich mir genommen hab :-) ;-) Dachte mir auch, das ich alles in den Speicher lade und von dort aus arbeite und das Ergebnis in die PostgreSQL zurück schiebe. Sollte eigentlich effectiver sin, als jeden einzelnen URL per query in der Datenbank zu überprüfen... (geht alles von einem BaSH script aus) > Cheers, > Jan Greetings Michelle Konzack -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ ##################### Debian GNU/Linux Consultant ##################### Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/6/61925193 67100 Strasbourg/France IRC #Debian (irc.icq.com) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)