我有一个新程序可以生成大量 Base64 编码的音频和图像数据。此数据将以 XML 的形式通过 HTTP 提供,并且 Base64 数据将是内联的。这些文件很可能会超过 20MB 或更大。直接从文件系统提供这些文件会更有效,还是将数据存储在 MySQL 数据库中是否可行?将设置缓存,但总体上没有必要,因为这些数据很可能会在创建和提供后不久被清除。
我知道在大多数情况下,在数据库中存储二进制数据是不受欢迎的,但由于这都是字符数据,我想看看共识是什么。截至目前,出于效率原因,我倾向于将它们存储在文件系统中,但如果将它们存储在数据库中是可行的,那么管理数据会容易得多。
最佳答案
您需要权衡几个因素:
访问速度 如果您将所有文件转储到文件系统中,那么当文件太多时,某些文件系统会崩溃或变慢。我见过许多不同的目录分段方案来解决这个问题。
压缩 MySQL 可以轻松压缩您存储的数据。使用文件系统可能更难压缩数据。使用任何类型的压缩也会引起对服务器 CPU 速度的担忧。
备份/恢复 数据库是为轻松备份/恢复而设计的,文件系统的难易程度差别很大。如果您在文件系统中有数据要备份/恢复,那么这会使您的备份/恢复更加复杂,而复杂在危机中并不好。
数据丢失容忍度 使用数据库,您可以操作一条记录,所有数据都在同一个地方。如果将数据保存到文件中,则需要使用额外的代码来操作关联的文件,这就引入了另一个有错误和可能丢失数据的地方。更具体地说,如果您将部分记录存储在文件系统中,其余部分存储在数据库中,则需要竭尽全力维护事务完整性。除非您丢失数据,否则没人会关心这一点,因此请注意这一方面,即使它看起来并不重要。
复制 如果您只需要在一个级别上处理,那么处理复制问题会更容易。仅将数据存储在数据库中,然后仅复制数据库比对数据库和文件系统执行此操作要容易得多。
繁琐处理较大的数据库备份比处理较小的数据库备份更麻烦。
这些是我想到的首要问题。我试着不提倡任何一种解决方案,它实际上在很大程度上也取决于您所谈论的文件系统,并且由于未指定,您需要自己做出决定。
关于database - Base64 编码数据 - 数据库或文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216057/