在数据库中存储文件大小

Rio*_*ams 12 storage database-design filesize

我目前正在研究一个涉及存储多项研究及其内容细节的系统(一项研究通常可以包含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...
Run Code Online (Sandbox Code Playgroud)

我没有处理过大量存储文件的问题,并且想知道实现这个目的的最有效/最实用的方法是什么?

Mat*_*all 11

如果您要显式存储大小,请存储字节数.使用其他单位时存在太多混淆/模糊.

示例:不同的人可能会解释kb为:

  • 千字节
  • 千比特
  • kibibytes
  • kibibits

......无论如何,一千字节有多大?

也就是说,如果您将实际数据存储在数据库中,我看不出立即明确存储数据长度的明确理由.


Ste*_*age 6

没有正确的答案.由于精确的原因,我喜欢马特的答案.出于节省空间的原因,我喜欢安倍的答案......(是的,表中的空间比文件系统更具"影响力")

真正的答案是,您存储价值的目的是什么?这是一种机制来为存储数据的用户开具发票吗?然后你必须依赖合同.这是测量驱动器上的空间......如果是这样,文件真的占用了一些"块"而不是一些字节数.如果最小块大小是2KB,那么你应该说每个文件都是2kb的增量...如果你存储那个值或那个值2kb取决于你.

也许你存储了这个值,因为检索算法有2个优化路径,一个用于较大的文件,另一个用于较小的文件,并且该过程想知道大小而不询问文件系统.(在这种情况下,可能只需要一个"is_greater_than_x_kb"标志列.)

这里没有人可以告诉你你的要求是什么.现有答案给你的唯一一点是意见,而不是正确的答案.


Ste*_*man 5

我将文件大小以字节为单位存储在数据库中。mysql 的(有符号)整数字段的最大值为 2147483647,因此可以毫无问题地存储高达 2GB 的文件大小。