1

どこかに保存する必要がある分子内の原子の 3D デカルト座標を含む小さな ASCII ファイルが数千あります (その他の情報も含まれます)。

簡単な計算では、数テラバイトのスペースが必要になることがわかりました。これは、最大でも数ギガバイトに削減される可能性がありますが、現在のインフラストラクチャの制約の下では管理できません。MySQL と Oracle に BLOB フィールドとして同じ数のファイル (同じ形式ですが、bzip 圧縮されている場合もあります) を格納している人がいると誰かが私に言いました。私の質問は、そのようなファイルを BLOB として保存すると、ストレージ要件が何らかの形で削減されるのでしょうか? はいの場合、どの程度の削減が期待できますか?

これは、保存する必要がある ASCII ファイルのテキストの例です。

@<TRIPOS>MOLECULE
****
    5     4     1     1     0
SMALL
GAST_HUCK


@<TRIPOS>ATOM
      1 C1         -9.7504    2.6683    0.0002 C.3       1 <1>        -0.0776 
      2 H1         -8.6504    2.6685    0.0010 H         1 <1>         0.0194 
      3 H2        -10.1163    2.1494   -0.8981 H         1 <1>         0.0194 
      4 H3        -10.1173    3.7053   -0.0004 H         1 <1>         0.0194 
      5 H4        -10.1176    2.1500    0.8982 H         1 <1>         0.0194 
@<TRIPOS>BOND
     1    1    2 1    
     2    1    3 1    
     3    1    4 1    
     4    1    5 1    
@<TRIPOS>SUBSTRUCTURE
     1 ****        1 TEMP              0 ****  ****    0 ROOT 
@<TRIPOS>NORMAL
@<TRIPOS>FF_PBC
FORCE_FIELD_SETUP_FEATURE Force Field Setup information
v1.0  0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 NONE 0 0 0 0 1 0 0 0 0 0 0 0 0
4

1 に答える 1

1

列にデータを格納してBLOBも、ストレージ要件が軽減されるわけではありません。型のストレージ要件BLOBは単純です。

  • TINYBLOB     L + 1 バイト、ここで L < 2 8
  • BLOB             L + 2 バイト、ここで L < 2 16
  • MEDIUMBLOBL + 3 バイト、ここで L < 2 24
  • LONGBLOB     L + 4 バイト、ここで L < 2 32

L文字列データの長さをバイト単位で表します。

詳細については、ストレージ要件を参照してください。

データベース内の分子ファイルの内容を検索する必要がない場合は、データを挿入する前にデータを圧縮するか、挿入時に MySQL COMPRESS()関数を使用することで、ストレージ要件を減らすことができます。

これで主な質問に答えたと思います。これらの数値と、平均サイズに基づいて保存する予定のファイルの数に基づいて、BLOBタイプ列によって消費されるストレージ容量を計算できます。

于 2012-09-11T22:51:36.617 に答える