Stellen wir uns eine Website vor, die ein Verzeichnis von Personen ist. Für jede Person kann es ein Profilfoto und eine Biografie geben.
Ich gebe zu, meine SQL- Abfragen könnten besser sein, aber im Allgemeinen was wäre schneller und würde weniger Rechenleistung verbrauchen.
Um zu überprüfen, ob eine Datei vorhanden ist, öffnen Sie sie oder
Überprüfen Sie anhand von MySQL, ob eine Biografie vorhanden ist, und zeigen Sie sie an.
Ich bin mir ziemlich sicher, dass im obigen Fall das Dateisystem die MySQL-Datenbank raucht.
Was ist, wenn ich die Datenbank zu einer schreibgeschützten txt-Datei mache?
Was ist in diesem Fall schneller?
Gibt es einen bestimmten Punkt, an dem es besser ist, MySql zu verwenden, wenn die txt-Datei zu viele Datensätze enthält?
quelle
Antworten:
Das Dateisystem ist nützlich, wenn Sie nach einer bestimmten Datei suchen, da Betriebssysteme eine Art Index verwalten. Der Inhalt einer txt-Datei wird jedoch nicht indiziert, was einer der Hauptvorteile einer Datenbank ist. Ein weiterer Grund ist das Verständnis des relationalen Modells, damit Daten nicht immer wieder wiederholt werden müssen. Ein anderer ist das Verstehen von Typen. Wenn Sie eine txt-Datei haben, müssen Sie Zahlen, Daten usw. analysieren.
Also - das Dateisystem funktioniert in einigen Fällen möglicherweise für Sie, aber sicherlich nicht für alle.
quelle
Es hängt wirklich davon ab, was Sie tun. Im Allgemeinen ist die Geschwindigkeit, mit der Sie eine Datei zum Lesen öffnen können, besser als die Geschwindigkeit, mit der Sie eine Netzwerkverbindung herstellen können. Für sehr einfache Operationen ist das Dateisystem also definitiv schneller. Dateisysteme werden wahrscheinlich auch ein RDBMS für den rohen Lesedurchsatz übertreffen, da weniger Overhead entsteht. Wenn Sie darüber nachdenken, kann die Datenbank in Bezug auf den Rohdurchsatz niemals schneller sein als das Dateisystem, auf dem sie sich befindet.
Bei sehr komplexen Vorgängen ist das Dateisystem wahrscheinlich sehr langsam. Zum Beispiel:
Lesen Sie 10 Zeilen aus dieser 1-Milliarden-Zeilendatei und suchen Sie dann in dieser anderen Datei nach passenden Zeilen. Ich habe Mitleid mit dir, wenn du das tun musst. Ein guter Datenbankserver hat jedoch Strategien, um dies schnell und gut zu tun, damit Sie das Rad nicht neu erfinden.
Außerdem müssen Sie wirklich herausfinden, was Sie tun. Welche Daten speichern Sie? Wie wirst du es transformieren? Wenn es sich um 100.000 Bilddateien handelt, sieht Ihre Lösung ganz anders aus als wenn es sich um ein Verzeichnis für 100.000 Personen handelt. (LDAP vielleicht? Oder eine SQL-Datenbank? Hängt vielleicht davon ab, was Sie tun.) Der Schlüssel hier ist, die Tools auszuwählen, die Ihren Aktivitäten entsprechen und die Ihnen Raum geben, mehr Verwendungen hinzuzufügen, anstatt das, was für manche am schnellsten erscheint eher abstrakter Anwendungsfall. Datenbanken sind wunderbare Werkzeuge, aber auf eine solche Frage kann man keine gute Antwort bekommen.
Schließlich ist vorzeitige Optimierung die Wurzel allen Übels. Wählen Sie jetzt nützliche Werkzeuge und finden Sie den Rest später heraus.
quelle
Das Dateisystem ist anfangs vielleicht schneller, aber ich bezweifle es. Mit zunehmender Datengröße müssen Sie jedoch wahrscheinlich Ihr Dateisystem umstrukturieren, um die Leistung aufrechtzuerhalten. Neben ihrer offensichtlichen Fähigkeit, mehrere Attribute zu indizieren, lassen sich Datenbanken tendenziell besser skalieren.
Web-Caches, die ähnlich funktionieren wie Sie, verwenden den Verzeichnisbaum, um die Leistung aufrechtzuerhalten. Sie haben auch eine relativ feste Größe, so dass sie sich nicht mit einer wachsenden Skala auseinandersetzen müssen.
Für diese Art von Anwendung würde ich mit einer Datenbank beginnen, da diese besser zu Ihren Anforderungen passt. Es wird auf lange Sicht viel besser skalieren. Im Vergleich zu den meisten Dateisystemen ist eine Datenbank auch platzsparender.
quelle
Ich liebe es immer, in diese Foren zu kommen und all die schweren Datenbank-Gurus zu lesen, die das Dateisystem nicht so schnell wie die Datenbank ausführen kann. Im Gegenteil, ein richtig angelegter Baum, gut gestaltete Hashtabellen und das Speichern als Objekt in einer Datei ergeben die gleichen Geschwindigkeiten wie eine Datenbank und meine Tests. Eine richtig gestaltete Hashtabelle und ein Verzeichnisbaum gewinnen jedes Mal. Viel weniger Aufwand. Vor kurzem habe ich mich aus Gründen der Einfachheit und Programmportabilität von der datenbankgesteuerten Programmierung und mehr vom Dateibaum entfernt. Keine Datenbank bedeutet einfaches Backup. Zippen Sie einfach Ihren Baum und los geht's. Es ist sehr schön und eine Empfehlung, auf diese Weise für einmalige Kunden mit kleinen Anwendungen zu programmieren. Schauen Sie sich das große Bild an. Habe ich die Zeit, mein eigenes zu entwerfen oder einfach das zu nutzen, was bereits da ist, wie die Datenbank? Ich persönlich mag es, meine Objekte in einer Datei zu speichern und später zu verwenden. Behalten Sie einfach die Größe Ihrer Tabellen im Auge und prüfen Sie die Verwendung einer RandomAccessFile, um sie schnell wie eine Datenbank anlegen und in Hashtabellenobjekte aufteilen zu können . Genießen. Denken Sie daran, welche Daten, die Sie in der Datei speichern, je nach Code manchmal doppelt so viel Speicherplatz beanspruchen. Die Hash-Tabelle selbst und normalerweise der Ort, an dem Sie sie zum Anzeigen verwenden.
quelle