我有几千个小的ASCII文件,其中包含分子中原子的3D笛卡尔坐标(以及其他信息),我需要存储在某处。
一个简单的计算告诉我,我们将需要几个TB的空间,最多可能减少到几千兆字节,但在当前的基础设施限制下无法管理。有人告诉我,有些人在MySQL和Oracle中存储了类似数量的文件(格式相同但有时是bzipped)作为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
答案 0 :(得分:1)
在BLOB
列中存储数据不会降低存储要求。 BLOB
类型的存储要求很简单:
TINYBLOB
L + 1个字节,其中L <1。 2 8 BLOB
L + 2个字节,其中L <1。 2 16 MEDIUMBLOB
L + 3个字节,其中L <1。 2 24 LONGBLOB
L + 4个字节,其中L <1。 2 32 L
以字节为单位表示字符串数据的长度。
有关详细信息,请参阅Storage Requrements。
如果不需要搜索数据库中分子文件的内容,可以通过在插入数据之前压缩数据或在插入时使用MySQL COMPRESS()函数来降低存储要求。
我认为这解决了您的主要问题,并根据这些数据以及您计划根据平均大小存储的文件数量,您可以计算BLOB
类型列将消耗多少存储空间。