database - Base64 编码数据 - 数据库或文件系统

标签 database filesystems base64

我有一个新程序可以生成大量 Base64 编码的音频和图像数据。此数据将以 XML 的形式通过 HTTP 提供,并且 Base64 数据将是内联的。这些文件很可能会超过 20MB 或更大。直接从文件系统提供这些文件会更有效,还是将数据存储在 MySQL 数据库中是否可行?将设置缓存,但总体上没有必要,因为这些数据很可能会在创建和提供后不久被清除。

我知道在大多数情况下,在数据库中存储二进制数据是不受欢迎的,但由于这都是字符数据,我想看看共识是什么。截至目前,出于效率原因,我倾向于将它们存储在文件系统中,但如果将它们存储在数据库中是可行的,那么管理数据会容易得多。

最佳答案

您需要权衡几个因素:

  • 访问速度 如果您将所有文件转储到文件系统中,那么当文件太多时,某些文件系统会崩溃或变慢。我见过许多不同的目录分段方案来解决这个问题。

  • 压缩 MySQL 可以轻松压缩您存储的数据。使用文件系统可能更难压缩数据。使用任何类型的压缩也会引起对服务器 CPU 速度的担忧。

  • 备份/恢复 数据库是为轻松备份/恢复而设计的,文件系统的难易程度差别很大。如果您在文件系统中有数据要备份/恢复,那么这会使您的备份/恢复更加复杂,而复杂在危机中并不好。

  • 数据丢失容忍度 使用数据库,您可以操作一条记录,所有数据都在同一个地方。如果将数据保存到文件中,则需要使用额外的代码来操作关联的文件,这就引入了另一个有错误和可能丢失数据的地方。更具体地说,如果您将部分记录存储在文件系统中,其余部分存储在数据库中,则需要竭尽全力维护事务完整性。除非您丢失数据,否则没人会关心这一点,因此请注意这一方面,即使它看起来并不重要。

  • 复制 如果您只需要在一个级别上处理,那么处理复制问题会更容易。仅将数据存储在数据库中,然后仅复制数据库比对数据库和文件系统执行此操作要容易得多。

  • 繁琐处理较大的数据库备份比处理较小的数据库备份更麻烦。

这些是我想到的首要问题。我试着不提倡任何一种解决方案,它实际上在很大程度上也取决于您所谈论的文件系统,并且由于未指定,您需要自己做出决定。

关于database - Base64 编码数据 - 数据库或文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216057/

相关文章:

php - 如何在 PHP/MySQL 中组织和构建用户图像相册

java - 生成图像的 base64 字符串以在数据 URI 中使用

node.js - 如何在 Node.js 中检查文件的大小?

mysql - 存储具有多个整数值的属性

mysql - SQL 数据库电影票

c# - Visual C# 和设置

three.js - 如何使用 Base 64 字符串作为法线贴图?

java - 甲骨文数据库 : DBMS_ALERT usage with java application

c - stat 系统调用的 st_mode 标志

objective-c - 当我有目录路径、文件名和扩展名时,如何构建完整且安全的文件路径?