在数据库中仅存储文件路径是一种好习惯吗?在MySQL中存储文件本身有什么好处?如果将文件直接存储到MySQL,文本文件和音频文件的数据类型是什么?
答案 0 :(得分:2)
我建议将音频和视频文件存储在某个存储设备中,并仅将其路径和元信息存储在数据库中。当您需要检索这些媒体文件时,请在数据库中查找它们的路径。
我所知道的每个存储大量大文件的系统都将它们存储在数据库的外部。您将文件的所有可查询数据(标题,艺术家,长度等)以及文件的部分路径存储在数据库中。当需要检索文件时,您需要提取文件的路径,在其前面添加一些文件根目录(或URL),然后返回该文件。
因此,您有一个“位置”列,其中包含部分路径,例如“a / b / c / 1000”,然后您可以将其映射到:“http://myserver/files/a/b/c/1000.mp3”
确保您可以轻松地将媒体数据库指向不同的服务器/目录,以防您需要进行数据恢复。此外,您可能需要一个例程,将数据库与文件存档的内容重新同步。
此外,如果您要拥有数千个媒体文件,请不要将它们全部存储在一个巨大的目录中 - 这是某些文件系统的性能瓶颈。相反,将它们分解为多个平衡的子树。
答案 1 :(得分:1)
MEDIUMBLOB - 用于音频文件
MEDIUMBLOB为您提供高达16 MB的数据 - 很可能为您拥有的MP3提供足够的空间,并且您所获得的尺寸为长度+3。
对于TextFile
Type | Maximum length
-----------+-------------------------------------
TINYTEXT | 255 (2 8−1) bytes
TEXT | 65,535 (216−1) bytes = 64 KiB
MEDIUMTEXT | 16,777,215 (224−1) bytes = 16 MiB
LONGTEXT | 4,294,967,295 (232−1) bytes = 4 GiB
请注意,列中可存储的字符数取决于字符编码。
答案 2 :(得分:0)
当您在SQL中存储文件时,您实际上使用BINARY or VARBINARY data types存储其字节数据,如果您要在SQL中存储文件,则必须根据需要对文件进行编码和解码,否则您可能会复制数据。但是,将文件存储为文件的问题是您无法灵活地移动它们。什么是“最好的”取决于用例。