1

我有几千个小 ASCII 文件,其中包含我需要存储在某处的分子中原子的 3D 笛卡尔坐标(以及其他信息)。

一个简单的计算告诉我,我们将需要几个 TB 的空间,最多可能会减少到几个 GB,但在当前的基础设施限制下是无法管理的。有人告诉我,有些人在 MySQL 和 Oracle 中以 BLOB 字段的形式存储了相似数量的文件(格式相同,但有时被压缩)。我的问题是,存储诸如 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 回答