Ich muss Binärdatendateien in einer PostgreSQL-Datenbank speichern, die auf einem Ubuntu-Server ausgeführt wird. Zunächst werden einige Dutzend Dateien mit einer Größe von jeweils ca. 250 KB vorhanden sein. Die Anzahl der Dateien nimmt jedoch mit der Zeit zu. Manchmal muss ich möglicherweise Daten aus den Dateien für andere nachgelagerte Analysen extrahieren.
Ich habe einige Nachforschungen über die uralte Frage der Speicherung von Binärdaten als BLOBs oder Referenzen angestellt. Beide haben offensichtlich ihre Vor- und Nachteile. Gibt es spezielle Probleme im Zusammenhang mit PostgreSQL, die ich beachten sollte? Ist die eine oder andere Methode vorzuziehen, wenn ich Daten aus den Dateien extrahieren möchte, entweder über eine PostgreSQL-Funktion oder über ein externes Python-Programm?
Wenn ich die Datendateien direkt in der Datenbank speichern würde, wäre es besser, sie in einer separaten Tabelle mit einem Fremdschlüssel zu speichern, der auf die "Haupt" -Tabelle verweist, als in der Tabelle, die alle anderen Felder enthält?
Ich habe die Frage und die Antworten hier gelesen . Ein Kommentar dort deutet darauf hin, dass das Speichern von Binärdateien als Referenz (im Dateisystem) unter Linux besser ist. Meine Fragen hier beziehen sich speziell auf PostgreSQL und auf das Extrahieren von Daten aus den Dateien für verschiedene Analysen.
Update: Ähnliche Frage .
quelle
Antworten:
Ich denke, Sie sollten die Daten in der Datenbank als normale
bytea
Spalte speichern . Auf diese Weise erhalten Sie alle Vorteile einer Datenbank und können die Daten mithilfe von Datenbankfunktionen (und sogar PL / Python, wenn Sie dies wünschen) verarbeiten. Größere Datenelemente werden automatisch außerhalb der Zeile gespeichert, sodass Sie keinen Grund haben, eine weitere Referenz-Indirektion einzuführen.Die Hauptgründe für das Speichern großer binärer Objekte außerhalb der Datenbank sind, wenn sie zu groß sind, um sie in einer zufriedenstellenden Zeit speichern und abrufen zu können, wenn sie die Datenbank über die Praktikabilität hinaus aufblähen oder wenn Sie als Dateien auf die Dateien zugreifen müssen eine separate Anwendung. Nichts davon trifft dort zu, soweit ich das beurteilen kann.
quelle