Ich habe eine MySQL-Datenbank, die mit elektrischen Messungen arbeitet. Es hat auch eine Tabelle contracts
Verträge Parameter enthält, und eine Tabelle, die die documents
Blobs von Dokumenten entsprechend bestimmten Vertrag enthält:So speichern Sie Dokumente im Verzeichnis statt in der Datenbank
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| contract_id | bigint(20) unsigned | YES | | NULL | |
| name | varchar(512) | YES | | NULL | |
| document | longblob | YES | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
Dokumente hinzugefügt und abgerufen werden von den Benutzern aus dem Programm, das mit der Datenbank verbindet. Kürzlich ist die Datenbank zu groß geworden, und ich möchte ihre Größe auf Kosten von Dokumenten reduzieren. Ich nehme an, dass ein Feld document
eine Textreferenz für die Datei sein sollte. Wo sollte sich diese Referenz beziehen? Sollte es ein freigegebener Ordner sein? Wie könnte das Benutzerprogramm auf diesen Ort zugreifen? Ich frage, weil ich wissen möchte, was in diesem Fall die beste Praxis ist. Vielen Dank.
tun verwenden Sie jedes Scripting/Programmiersprache für die Dateneingabe? wie C, Perl, Ruby, Python, PHP usw.? – marmeladze
@ marmeladze Programm für Benutzer ist in Qt4/C++ geschrieben. –
na dann. Erstellen Sie einen Speicherordner und schreiben Sie Dateien dorthin. In einem guten Szenario wird das Benutzerprogramm hier nicht direkt zugreifen. Sie nehmen es, schreiben in einen temporären Ordner, dann liest der Server-Handler von tmp und schreibt zum endgültigen Ziel. Ich bin nicht gut in Qt, aber es gibt relevante Antworten hier - http://StackOverflow.com/Questions/37067014/qt-Uplod-Put-Afile http: // Stackoverflow.com/questions/16735595/Hochladen von Dateien-using-qt-qnetworkrequest – marmeladze