Moin.
wenn man teile von html seiten speichern möchte, ist es besser diese in ne DB zu schreiben oder in ein file ? mit "besser" meine ich, was schneller ist:
db abfrage mit suche nach der ID und ausgabe des inhalts
ODER
suche nach file mit ID als name und ausgabe des inhalts.
File-cache vs DB-cache
Kommt drauf an. Herrliche Antwort, nicht wahr!?
Es gibt Dateisysteme wo bei vielen Dateien in einem Verzeichnis die Suche nach einem Dateinamen langsam ist, und solche wo sie schnell ist.
Es gibt Dateisysteme wo bei vielen Dateien in einem Verzeichnis die Suche nach einem Dateinamen langsam ist, und solche wo sie schnell ist.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo debian75!debian75 hat geschrieben:wieviele dateien das werden kann ich noch nicht sagen...vielleicht so ca. 1000
Bei bis zu 1000 Dateien ein einem Ordner würde ich mir noch keine Sorgen machen. Wenn du vorsorgen möchtest, dann kannst du die Dateien auf mehrere Ordner verteilen. Wenn du nur anhand des Dateinamen entscheiden kannst, welche Datei zu öffnen ist, dann ist eine Textdatei in einem Dateisystem so ziemlich das Schnellste was es gibt. Warum? Weil du die Datei direkt einlesen kannst. Auch wenn du viele Dateien in einem Ordner hast und dadurch ein Dateisystem langsamer werden kann, wird das **schnelle** Einlesen der Datei das wieder ausgleichen.
Anders würde die Sache aussehen, wenn du viele kleine Informationen speichern müsstest. Aber du schreibst ja, dass es sich um XML handelt. Wenn du erst anhand des Inhalts entscheiden kannst, ob die Datei die richtige für dich ist, dann bist du mit einer Datenbank oder einer geteilten Lösung besser beraten.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Das Dateisystem ist die Frage. `fat32` ist ungeeignet, bei `ext2` und `ext3` weiss ich grad' nicht aus dem Kopf wie Verzeichnisse organisiert werden und `ReiserFS` wäre geeignet. Da werden Verzeichnisse als Suchbaum mit Hashwerten der Dateinamen als Schlüssel organisiert.
Am besten schreibst Du die Schnittstelle zum Holen eines HTML-Fragments über eine ID so, dass man sich aussuchen kann ob die Speicherung im Dateisystem oder in einer Datenbank geschieht. Dann verwendest Du als Datenbanken SQLite und `shelve` und misst die Laufzeiten von allen drei Varianten.
Am besten schreibst Du die Schnittstelle zum Holen eines HTML-Fragments über eine ID so, dass man sich aussuchen kann ob die Speicherung im Dateisystem oder in einer Datenbank geschieht. Dann verwendest Du als Datenbanken SQLite und `shelve` und misst die Laufzeiten von allen drei Varianten.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Das stimmt so nicht. Daten am Dateisystem erzeugen viel IO. Eine Datenbank kann selbsttätig optimieren und häufig gebrauchte Dinge im Speicher lassen.gerold hat geschrieben:Wenn du nur anhand des Dateinamen entscheiden kannst, welche Datei zu öffnen ist, dann ist eine Textdatei in einem Dateisystem so ziemlich das Schnellste was es gibt. Warum? Weil du die Datei direkt einlesen kannst. Auch wenn du viele Dateien in einem Ordner hast und dadurch ein Dateisystem langsamer werden kann, wird das **schnelle** Einlesen der Datei das wieder ausgleichen.
TUFKAB – the user formerly known as blackbird
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
ext2 scheint eine normale Tabelle zu nutzen, was wohl eher wenig geeignet ist, ext3 mit der Option dir_index unterstützt H-Bäume. Soll wesentlich schneller sein.BlackJack hat geschrieben:bei `ext2` und `ext3` weiss ich grad' nicht aus dem Kopf wie Verzeichnisse organisiert werden
Jetzt frage ich mich grad, was mein ext3 eingestellt hat
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 18
- Registriert: Mittwoch 15. Februar 2006, 23:20
- Wohnort: Linz.at
- Kontaktdaten:
Die DB optimiert und behält häufig genutzte Tabellen im Hauptspeicher. Die HDD hat hingegen nur einen Cache, der aber vom restlichen System gebraucht wird. Dafür hat jeder Rechner eine HDD, aber es gibt meist nur einen zentralen DB-Server, daher kann es bei der DB öfters zu Performance Probleme kommen...
Alternativ kannst du dir auch noch "memcached" anschauen. Der cached zwar nur im RAM, kennt aber sehr ausgereifte Algorithmen zur bestimmung was eingelagert wird und wann was wieder hinausgeworfen wird. Optimiert daher noch besser als eine DB und ist wesentlich schneller, ist aber natürlich von der Speichergröße beschränkt.
Alternativ kannst du dir auch noch "memcached" anschauen. Der cached zwar nur im RAM, kennt aber sehr ausgereifte Algorithmen zur bestimmung was eingelagert wird und wann was wieder hinausgeworfen wird. Optimiert daher noch besser als eine DB und ist wesentlich schneller, ist aber natürlich von der Speichergröße beschränkt.
[url]http://www.ubuntuusers.de[/url]
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Lasst euch das bitte noch einmal durch den Kopf gehen.
Der OP spricht von 1000 Texten im HTML-Format. Text der nicht durchsucht, sondern nur gespeichert werden soll. Anhand eines Schlüssels soll so ein Text wieder aufgerufen werden können.
Was soll hier eine Datenbank groß optimieren können. Während mir eine Datenbank einen Text zurück liefert, kann ich wahrscheinlich drei einfache Textdateien öffnen und auslesen.
Die einfache Lösung (mit Textdateien) ist wahrscheinlich auch die schnellere Lösung. Und wenn man die Textdateien zum schnelleren Auffinden auch noch auf mehrere Ordner verteilt, dann sehe ich erst recht nichts was für eine Datenbank sprechen soll.
Als wahrscheinliche Dateisysteme kommen sowiso nur ReiserFS und Ext3 in Frage. Und für beide Dateisysteme sind 1000 Dateien in einem Ordner keine Herausforderung. Zumindest nichts was sich spürbar hervortun könnte.
Scheiß Tag! Ich glaube, ich schalte den Computer lieber aus.
mfg
Gerold
Lasst euch das bitte noch einmal durch den Kopf gehen.
Der OP spricht von 1000 Texten im HTML-Format. Text der nicht durchsucht, sondern nur gespeichert werden soll. Anhand eines Schlüssels soll so ein Text wieder aufgerufen werden können.
Was soll hier eine Datenbank groß optimieren können. Während mir eine Datenbank einen Text zurück liefert, kann ich wahrscheinlich drei einfache Textdateien öffnen und auslesen.
Die einfache Lösung (mit Textdateien) ist wahrscheinlich auch die schnellere Lösung. Und wenn man die Textdateien zum schnelleren Auffinden auch noch auf mehrere Ordner verteilt, dann sehe ich erst recht nichts was für eine Datenbank sprechen soll.
Als wahrscheinliche Dateisysteme kommen sowiso nur ReiserFS und Ext3 in Frage. Und für beide Dateisysteme sind 1000 Dateien in einem Ordner keine Herausforderung. Zumindest nichts was sich spürbar hervortun könnte.
Scheiß Tag! Ich glaube, ich schalte den Computer lieber aus.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Bei 1000 HTML-Dateien könnte man sich, einen ständig laufenden Prozess vorausgesetzt, sogar überlegen, die einmal am Anfang einfach alle zu laden.
Weißt du, der Kernel allokiert den Disk-Buffer nicht nur mal so zum Spaßmitsuhiko hat geschrieben:Das stimmt so nicht. Daten am Dateisystem erzeugen viel IO. Eine Datenbank kann selbsttätig optimieren und häufig gebrauchte Dinge im Speicher lassen.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Auch wenn der Thread schon was älter ist... Ich darf mal zitieren:
von: http://ikhaya.ubuntuusers.de/2008/07/22 ... n-KulissenFür die Anwender eher unsichtbar hat sich an der Technik, die hinter dem Wiki steht einiges getan. Die von MoinMoin bekannte Speicherung von Artikeln im Dateisystem wich einer Datenbank. Dies soll insbesondere in Zeiten mit vielen Anfragen die Performance verbessern, indem die vielen Zugriffe auf das Dateisystem entfallen, die in der Vergangenheit insbesondere nach neuen Ubuntu-Veröffentlichungen für überlastete Server, genervte Anwender und jammernde Administratoren sorgten.