2017-01-09 12 views
1

私は、電気的手段で動作するMySQLデータベースを持っています。データベースの代わりにディレクトリに文書を保存する方法

+-------------+---------------------+------+-----+---------+----------------+ 
| 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 |    | 
+-------------+---------------------+------+-----+---------+----------------+ 

ドキュメントがデータベースに接続プログラムからユーザにより加え、取得されます。また、契約パラメータを含むテーブルcontracts、及び特定の契約に対応する文書のBLOBを含むテーブルdocumentsを有しています。 最近、データベースが大きくなりすぎてしまいました。ドキュメントの期限に合わせてサイズを縮小したいと考えています。だから私はフィールドdocumentは、ファイルへのテキスト参照する必要がありますね。この参考文献はどこを参照するべきですか?それは共有フォルダですか?ユーザーのプログラムからこの場所にアクセスするにはどうすればよいですか?私はこのケースで何がベストプラクティスであるかを知りたいので尋ねます。ありがとう。

+0

は、データ入力のための任意のスクリプト/プログラミング言語を使用していますか? C、Perl、Ruby、Python、PHPなどのように? – marmeladze

+0

@marmeladzeユーザーのためのプログラムはQt4/C++で書かれています。 –

+1

となります。ストレージフォルダを作成し、そこにファイルを書き込みます。良いシナリオでは、ユーザーのプログラムはここに直接アクセスしません。それを受け取り、一時的なフォルダに書き込むと、サーバハンドラはtmpから読み込んで最終的な宛先に書き込みます。 Qtはうまくいかないが、関連する回答がある。http://stackoverflow.com/questions/37067014/qt-upload-put-a-file http:// stackoverflow。com/questions/16735595/uploading-files-using-qt-qnetworkrequest – marmeladze

答えて

0

多くのプログラマーは、ドキュメント(pdfs、画像、ドキュメント、スプレッドシートなど)を、dbmsではなくBLOBとしてファイルとして保存することをお勧めします。

あなたのサーバー環境を説明していないため、ストレージのディレクトリ構造を提案するのは難しいです。 の場合は、は複数のマシンを使用するため、これらのドキュメントを共有ファイルシステムに置く必要があります。すべてのマシンが共通の場所からそれらを読み取ることができます。

たとえば、あなたはこのようなあなたのドキュメントを保存するかもしれない。この下では

/mnt/electricowizard/docs 

でアプリケーションを実行しているすべてのマシン上でそれをマウントし、その後、いくつかのサーバー上の共有フォルダを作成することがあります:

/mnt/electricowizard/docs/cust_0001/2015/001.pdf 
/mnt/electricowizard/docs/cust_0001/2015/002.tif 
/mnt/electricowizard/docs/cust_0001/2015/contract003.docx 
/mnt/electricowizard/docs/cust_0001/2016/asbuilt001.jpg 
/mnt/electricowizard/docs/cust_0001/2016/asbuilt002.jpg 

階層を表示しますか?顧客/年/文書。これは一般に、マルチユーザーシステムでは優れた構造です。なぜなら、特定のユーザー用のものを分離することができるからです。また、指定されたファイルシステムディレクトリが多すぎる文書を保持する必要がなくなります。特にWindows上では、作業を行うと非効率的になることがあります。

データベーステーブルには、docpathなどの列があります。このような値が含まれています。

/cust_0001/2015/001.pdf 
/cust_0001/2015/002.tif 
/cust_0001/2015/contract003.docx 
/cust_0001/2016/asbuilt001.jpg 
/cust_0001/2016/asbuilt002.jpg 

ファイルシステム(/mnt/electricowizard/docs/)の位置は、プログラムの構成特性であり、ファイルシステム内のドキュメントの位置は、各ドキュメントの特徴です。

もちろん、文書を整理する他の方法もあります。多くの人々が、「文書」ではなく「イメージ」として考えていたことを使って、この問題に取り組んできました。その事実は、より多くの情報を検索するのに役立ちます。

広く採用されている例:ワードプレスのuploadsフォルダ:

関連する問題