我想在数据库中存储大量声音文件,但我不知道这是否是一种好的做法.我想知道这样做的利弊.

我也考虑过是否有可能与这些文件建立"链接",但这可能带来更多的问题,而不是解决方案.欢迎在这方面有任何经验:)

注意:数据库将是MySQL.

推荐答案

我所知道的每一个存储大量大文件的系统都将它们存储在数据库的外部.将文件的所有可查询数据(标题、艺术家、长度等)以及文件的部分路径存储在数据库中.当需要检索文件时,可以提取文件的路径,为其添加一些文件根(或URL),然后返回该路径.

所以,你会有一个"位置"列,其中有一个部分路径,比如"a/b/c/http://myserver/files/a/b/c/1000.mp30",然后映射到:

确保您有一种简单的方法将媒体数据库指向不同的服务器/目录,以防数据恢复时需要.此外,您可能需要一个 routine 来将数据库与文件归档的内容重新同步.

此外,如果你将拥有数千个媒体文件,不要将它们全部存储在一个巨大的目录中——这是某些文件系统的性能瓶颈.相反,将它们分解为多个平衡的子树.

Mysql相关问答推荐

客户跨订阅的跨时间线计数

Google Sheet查询以提取数据并用值替换复选框.(差异)

数组上的MySQL、JSON_CONTAINS用法

可以优化这个带有重复WHERE子句的查询吗?

使用Workbench时如何添加mysqldump配置标志

按相关表中的计数和特定值过滤

将递归 CTE 结果合并到辅助 SQL Select

条件触发mysql

try 在 .map 中使用 Favorite 选项卡进行react .我无法更改 mysql 表上的布尔类型

MySQL:根据条件查找某些用户的行位置

检索按键列值分组的最新日期 (MySql)

使用另一个表中的值更新一个表中的值

处理 Visits 表中数百万行的最佳方法是什么?

MySQL在定义表的位置后抛出错误

MySQL查询根据同一表中其他字段的值更新表中的字段

MySQL时区更改?

当您无法修复表时,如何修复 MySQL不正确的密钥文件错误?

MySQL:低基数/ Select 性列=如何索引?

授予用户对 MySQL 中有限数量表的访问权限

WHERE 子句中的条件顺序会影响 MySQL 性能吗?