Cruz: Dateien in DB verschlüsselt ablegen und wieder abrufen

Beitrag lesen

Hallo Andreas,

erst einmal danke für Dein Antwort.

Immer gerne.

Und du meinst auch sicherlich dass du von Außen auf diese Weise die Daten auf deinen Rechner übertragen willst und nicht nur lokal...

Nein, lokal reicht mir da aus.

Dann kann ich allerdings deine Entscheidung für das HTML Formular nicht nachvollziehen. Vielleicht hast du noch nicht alles erzählt, was du mit dieser File-Datenbank machen möchtest. Ein HTML Frontend eignet sich dann besonders gut, wenn du die Absicht hast die Software aus dem Internet oder zumindest aus einem LAN zu nutzen. Für eine Einzelstationsanwendung eignet sich HTML in MHO nicht besonders gut, da man z.B. die ganzen Schwächen des stateless HTTP Protokolls bekämpfen muss.

Schon alleine der Upload ist ein Umweg von hinten durch die Nase ins Auge. Die Datei muss über ein Klartextprotokoll codiert werden und wird auch noch mit Zeug drum herum eingepackt (Header und so ein Kram) nur um dann später wieder ausgepackt, decodiert und in die Datenbank geschrieben zu werden. Der direkte Weg ohne HTTP dazwischen ist kürzer und einfacher.

Gut, wenn du nun mal hauptsächlich die Internet Technologie mit HTML und PHP beherrschst, dann kann ich es verstehen, aber du hast doch was von Servlets und JSP gesagt. Also wenn du Java kannst, warum schreibst du dir nicht lieber ein Java Programm von mir aus mit einem Swing oder AWT Frontend. Oder wenn du Visual Basic oder sowas kannst, kannst du damit am schnellsten für Windows eine Anwendung basteln (obwohl ich persönlich den Kram niemals anfassen würde).

Die Geschwindigkeit ist mir da nicht so wichtig. Außerdem suche ich dann später in erster Linie in den varchar Spalten, welche die Metaangaben beinhalten und nicht in den großen BLOBs.

Ich kann leider keine qualifizierte Aussage dazu treffen, wie genau sich die Datenmenge in der Blob Spalte auf die Performance der Datenbank auswirkt, es ist nur ein Gefühl von mir, dass dann in der Datenbank hauptsächlich Daten stehen, die da nichts verloren haben und das wird sicherlich irgendwelche negativen Effekte mit sich bringen.

Und bei dem Ablegen der Dateien im Dateisystem stellt sich wieder die Frage nach der Transaktionssicherheit. Ist in diesem Fall jedoch nicht so relevant.

Hm Transaktionssicherheit? Ok was bedeutet das eigentlich genau? Meines Wissens nach ist eine Art alles oder nichts Verhalten, also mehrere zusammenhängende Datensätze werden nur in ihrer Gesamtheit geschrieben bzw. gelöscht, die Datenbank macht keine halben sachen.
Und du kannst einen Rollback machen. Solange du nur eine Tabelle hast, kannst du mit Transaktionssicherheit nichts anfangen.

Außerdem bin ich mir nicht sicher, ob die aktuelle MySQL Version überhaupt Transaktionen unterstützt. Ich weiß das stand mal auf deren Todo Liste, kann aber nicht sagen ob die das schon umgesetzt haben. Ach...du wolltest doch MySQL nehmen gell?

Und vielleicht noch als Schlußbemerkung:

Wenn du die Files in die Datenbank schreibst, dann sind sie auch von der Datenbank abhängig, denn du kommst nicht an die Dateien dran ohne die Datenbank zu konsultieren. Was ist wenn das gerade mal aus irgendwelchen Gründen nicht geht, aber du willst schnell mal an eine Datei ran? Oder bedenke wie es ausschaut, wenn du die Datenbank administrierst und z.B. über einen Dump die Daten verschieben willst. Dann stehen die ganzen verschlüsselten Files in einer riesigen Textdatei, das ist doch irgendwie krumm. Oder wie realisierst du einen Backup? Sind die verschlü. Files im Filesystem, stehen dir alle Backuptechnologien der Welt zur Verfügung. Sind die Files in der Datenbank, musst du sie entweder erst dumpen und dann sind wir wieder bei der schrägen Textdatei, oder du musst halt die ganze Datenbank auf Filesystemebene backupen und verschwendest damit Platz.

So jetzt habe ich also ganz klar die Position "Files ins Filesystem" bezogen und ein paar Argumente gebracht, würde aber allerdings gerne auch Argumente für die Gegenseite hören. Auch wenn das jetzt keine mission critical Anwendung werden soll, macht es doch Spaß sich die Pros und Kontras zu überlegen. Ich will dich auch nicht beim brechen und biegen davon abbringen die Files in die DB zu schreiben, ich bin eher an der Diskussion interessiert. :)

Gruß,
Cruz