Das Unternehmen, für das ich arbeite, versucht, ein Produkt, das das Flatfile-Format verwendet, auf ein Datenbankformat umzustellen. Wir verarbeiten ziemlich große Datendateien (dh 25 GB / Datei) und sie werden sehr schnell aktualisiert. Wir müssen Abfragen ausführen, die zufällig und zusammenhängend auf die Daten zugreifen. Ich versuche, sie von den Vorteilen der Verwendung einer Datenbank zu überzeugen, aber einige meiner Kollegen scheinen dies nur ungern zu tun. Also habe ich mich gefragt, ob ihr mir hier mit einigen Gründen oder Links zu Beiträgen helfen könnt, warum wir Datenbanken verwenden sollten, oder zumindest klären, warum Flatfiles besser sind (wenn sie es sind).
77
Antworten:
quelle
Dies ist eine Antwort, die ich bereits vor einiger Zeit gegeben habe:
Wie Sie in einem Kommentar sagen, dass "das System" nur eine Reihe von Skripten ist, sollten Sie sich pgbash ansehen .
quelle
Baue es nicht, wenn du es kaufen kannst.
Ich habe dieses Zitat kürzlich gehört und es scheint wirklich als Richtlinie zu passen. Fragen Sie sich Folgendes: Wie viel Zeit wurde für die Dateiverwaltung Ihrer App aufgewendet? Ich vermute, dass ziemlich viel Zeit damit verbracht wurde, diesen Code für die Leistung zu optimieren. Wenn Sie die ganze Zeit über eine relationale Datenbank verwendet hätten, hätten Sie erheblich weniger Zeit für die Bearbeitung dieses Teils Ihrer Anwendung aufgewendet. Sie hätten mehr Zeit für den wahren "geschäftlichen" Aspekt Ihrer App gehabt.
quelle
Sie sind schneller; Wenn Sie nicht die gesamte Flatfile in den Speicher laden, ermöglicht eine Datenbank in fast allen Fällen einen schnelleren Zugriff.
Sie sind sicherer; Datenbanken sind einfacher sicher zu sichern; Sie verfügen über Mechanismen zur Überprüfung auf Dateibeschädigung, Flatfiles jedoch nicht. Sobald die Beschädigung Ihrer Flatfile auf Ihre Backups migriert ist, sind Sie fertig und wissen es möglicherweise noch nicht einmal.
Sie haben mehr Funktionen; Datenbanken können es vielen Benutzern ermöglichen, gleichzeitig zu lesen / schreiben.
Es ist viel weniger komplex, mit ihnen zu arbeiten, sobald sie eingerichtet sind.
quelle
Datenbanken den ganzen Weg.
Wenn Sie jedoch weiterhin Dateien speichern müssen, können Sie kein neues RDBMS (wie Oracle, SQLServer usw.) übernehmen, sondern sich mit XML befassen.
XML ist ein Strukturdateiformat, das Ihnen die Möglichkeit bietet, Dinge als Datei zu speichern, Ihnen jedoch die Möglichkeit gibt, die Datei und die darin enthaltenen Daten abzufragen. XML-Dateien sind einfacher zu lesen als flache Dateien und können mithilfe eines XSLT einfach transformiert werden, um die Lesbarkeit zu verbessern. XML ist auch eine großartige Möglichkeit, Daten zu transportieren, wenn Sie müssen.
Ich empfehle dringend eine Datenbank, aber wenn Sie diesen Weg nicht gehen können, ist XML eine gute Sekunde.
quelle
Was ist mit einer nicht relationalen (NoSQL) Datenbank wie Amazon SimpleDB, Tokio Cabinet usw.? Ich habe gehört, dass Google, Facebook und LinkedIn diese verwenden, um ihre riesigen Datensätze zu speichern.
Können Sie uns mitteilen, ob Ihre Daten strukturiert sind, ob Ihr Schema festgelegt ist, ob Sie eine einfache Replizierbarkeit benötigen, ob Zugriffszeiten wichtig sind usw.?
quelle
Welche Dateitypen nicht erwähnt werden. Wenn es sich um Mediendateien handelt, fahren Sie mit Flatfiles fort. Sie benötigen wahrscheinlich nur eine Datenbank für Tags und eine Möglichkeit, die "externen BLOBs" den Datensätzen in der Datenbank zuzuordnen. Wenn Sie jedoch eine Volltextsuche benötigen, können Sie nur auf eine vollständige Datenbank migrieren.
Eine andere Sache ist, dass Ihr Dateisystem möglicherweise die Obergrenze für die Anzahl der physischen Dateien festlegt.
quelle
SQL Ad-hoc-Abfragefähigkeiten sind für mich Grund genug. Mit einem guten Schema und einer guten Indizierung der Tabellen ist dies schnell und effektiv und bietet eine gute Leistung.
quelle
Verwenden Sie eine Datenbank, es sei denn, Sie laden die Dateien bei jedem Start in den Speicher. So einfach ist das.
Dies setzt voraus, dass Ihre Colleges bereits über das Programm verfügen, um Anfragen an die Dateien zu bearbeiten. Wenn nicht, verwenden Sie eine Datenbank.
quelle
Der Unterschied zwischen Datenbank- und Flatfiles ist unten angegeben:
Die Datenbank bietet mehr Flexibilität, während Flatfiles weniger Flexibilität bieten.
Das Datenbanksystem bietet Datenkonsistenz, während Flatfiles keine Datenkonsistenz bieten können.
Die Datenbank unterstützt DML und DDL, während Flatfiles diese nicht unterstützen können.
Weniger Datenredundanz in der Datenbank, während mehr Datenredundanz in Flatfiles.
quelle