BLOB与FileSystem

时间:2013-10-30 07:31:30

标签: mysql filesystems blob

虽然这个问题已经出现在过去的上一篇文章中,但不同的场景和不同的考虑决定哪一个是最好的。

我需要实现一个系统,每年可以处理200GB到400GB大小的图像(每张图像大约<1mb)。它是P&amp; C图像,仅允许授权的个人访问和仅查看。我打算使用基于系统的应用程序来INSERT到MYSQL数据库,并使用基于PHP的Web应用程序进行VIEW。

我正在考虑使用FILESYSTEM,因为它很容易备份&a​​mp;恢复图像,无需担心MYSQL数据库的大小。

我正在使用在Windows Server中运行的MySQL + Apache + PHP。

非常感谢您的建议和意见。

谢谢。

此致 德斯蒙德

2 个答案:

答案 0 :(得分:6)

  

小于256K的对象最好存储在数据库中而对象中   大于1M的文件最好存储在文件系统中。在256K和1M之间,   读取:写入比率和对象覆盖或替换的速率   重要因素。

烃源: http://research.microsoft.com/apps/pubs/default.aspx?id=64525

编辑:它是MS SQL,因此可能与Mysql相同:)

答案 1 :(得分:3)

另外值得一读: Best Practice in File Storage while Building Applications - Database (Blob Storage) Vs File System

BLOB存储作为最佳解决方案

  • 为了更好的可扩展性。尽管文件系统设计用于处理大量不同大小的对象,例如文件和文件夹,但实际上它们并未针对大量(数千万)小文件进行优化。数据库系统针对此类情况进行了优化。

  • 为了更好的可用性。数据库服务器的可用性功能超出了文件系统提供的功能。数据库复制是一组允许您在分布式环境中复制,分发和可能修改数据的解决方案,而日志传送提供了一种在主系统出现故障时保留数据库备用副本的方法。

  • 用于具有受控增长的数据的中央存储库。 DBA有权控制和监视数据库的增长,并在需要时拆分数据库。

  • 用于全文索引和搜索操作。您可以索引和搜索存储在BLOB列中的某些类型的数据。当数据库设计者决定某个表将包含BLOB列并且该列将参与全文索引时,设计人员必须在同一个表中创建一个单独的基于字符的数据列,该列将保存该文件的扩展名。文件在相应的BLOB字段中。在全文索引操作期间,全文服务查看基于字符的列(.txt,.doc,.xls等)中列出的扩展,应用相应的过滤器来解释二进制数据,并提取索引和查询所需的文本信息。

文件系统存储是最佳解决方案

  • 对于使用图像的应用程序,需要流式传输性能,例如实时视频播放。
  • 适用于仅了解如何访问文件的MicrosoftPhotoDraw®或Adobe PhotoShop等应用程序。
  • 如果要在NTFS文件系统中使用某些特定功能,例如远程存储。