2011-01-06 20 views
6

私は現在、複数の研究とその内容の詳細を格納するシステムを研究しています(調査には、通常、1 < X <〜2000画像が含まれます)。私の同僚と私は、ファイルサイズ(具体的には画像サイズ)をデータベースに格納する最良の方法が何であるかを議論していました。データベースにファイルサイズを格納する

ファイルサイズは、通常、< 1kBから> 20MBの範囲です。

我々は現在のように画像を保存するサイズの間で議論されています

# of kilobytes (as an integer value) 
# of bytes (as a large integer value) 
# of megabytes (possibly as a decimal value) 
Other Options... 

私は多くのファイルのサイズを格納し、これを達成する最も効率的/実用的な方法であるかもしれないと思いまして働いていませんか?

答えて

6

正解はありません。精度の理由からMattの答えが好きです。私はスペース節約のために、安倍氏の答えが好きです...(はい、テーブル内のスペースは、ファイルシステムよりもはるかに 'インパクトがあります)

実際の答えは、どのような目的のために値を格納していますか?これは、データを格納しているユーザーに請求する仕組みですか?その後、契約に頼らざるを得ません。これはドライブ上のスペースを測定するためのものです...もしそうなら、ファイルは本当にいくつかの数のバイトではなく、いくつかのブロックを占有します。最小ブロックサイズが2KBの場合は、すべてのファイルが2KBの増分であると言います。その値またはその値を保存する場合、2KBはあなた次第です。

検索アルゴリズムに2つの最適化パスがあるため、値を格納している可能性があります.1つは大きいファイル用、もう1つは小さく、そのプロセスはファイルシステムを調べずにサイズを知りたいと考えます。 (この場合、おそらく "is_greater_than_x_kb"フラグの欄が必要なのです)。

あなたの要件が何であるかは誰にも分かりません。既存の答えがあなたに与える唯一のことは、正解ではなく、意見です。

+0

ありがとうSteph-私は正確な答えがないことを知っています。私は、ファイルサイズを保存するさまざまな理由と、それらを特定の方法で保存する利点について、人々の考えを得るでしょう。みんなの答えはとても役に立ちました。 –

+0

これらはすべて役に立ちますが、明確な要件に代わるものではありません。私が見ている問題の95%は明確な要件の欠如に由来しています。また、全統計の76%が完全に作成されています。 ;-) –

+1

要件でない限り、ファイルサイズを保存する理由は考えられません。 Stephanieが述べているように、 "is_greater_than_x_kb"の使用があります。ファイルサイズがいくつかのBAデザインであった場合、アプリケーションは正しいファイルがあるかどうかをチェックしてチェックサムやファイルの一意の識別子を考慮するかどうかを尋ねるので、試していたファイルがアプリケーションにあることがわかります取得するため。 –

3

私は個人的には、#kbをint型の列として使用します(1kb未満は決してありません)。 bigintは2倍のスペース(8バイトvs 4)を使い、十分に文書化されていれば混乱しないようにしてください。

+0

最大20MBのファイルを格納している場合は、サイズの説明に4バイトを保存することが最優先事項ではないと言います。 ;-) –

9

サイズを明示的に格納する場合は、バイト数を格納します。他のユニットを使用するときに混乱/あいまいさが多すぎます。

例:

  • キロバイト
  • キロビット
  • kibibytes
  • kibibits

...and how big is a kilobyte, anyway?

T:異なる人々がkbとして解釈かもしれません帽子によると、データベースに実際のデータを格納している場合は、データの長さを明示的に格納する理由はまったくありません。

+0

私は本当にそれが格納されている理由はわかりません - 私は実際にはシステムのその側で働いていないので。しかし、私はそれが格納されていることを知っていたし、誰かがトピックを入力したかどうか、またはファイルサイズを格納するための「ベストプラクティス」またはその他のタイプの使用方法があるかどうかを知ることができると考えました。 –

2

私は、ファイルサイズをバイト単位でデータベースに格納します。 mysqlの(符号付き)整数フィールドの最大値は2147483647です。したがって、最大2GBのファイルサイズを問題なく保存できます。