kur*_*ast 19 database performance blob image
当你保存你的图像时(你有很多这样的图像)你会在数据库中存储为blob,还是作为文件存储?为什么?
Bra*_*ood 18
我通常将它们存储为文件,并将路径存储在数据库中.对我来说,这比将它们作为blob推入数据库更容易,更自然.
将它们存储在数据库中的一个理由:完全备份要容易得多,但这取决于您的需求.如果您需要能够轻松获取数据库的完整快照(包括图像),那么将它们作为blob存储在数据库中可能就是要走的路.否则,您必须将数据库备份与文件备份配对,并以某种方式尝试将两者关联,这样,如果必须执行还原,则可以知道要还原哪一对.
我试图使用db(SQL Server和MySQL)来存储中(<5mb)文件,而我得到的是很多麻烦.
1)某些DB(SQL Server Express)具有大小限制;
2)一些DB(MySQL)变得非常慢;
3)当你必须显示一个对象列表时,如果你无意中做了SELECT*FROM表,那么大量数据会尝试从数据库中上下移动,导致响应速度慢或内存失败;
4)一些前端(ruby ActiveRecord)处理blob有很大的麻烦.
只需使用文件.不要将它们全部存储在同一目录中,使用某种技术将它们放在几个目录上(例如,您可以使用GUID的最后两个字符或int id的最后两个数字)然后将路径存储在db上.
小智 5
数据库服务器的性能损失是一个没有实际意义的问题。如果您需要文件系统的性能优势,您只需在第一次请求时将其缓存在那里。然后可以通过直接链接直接从文件系统提供后续请求(对于 Web 应用程序,您可以在刷新输出缓冲区之前使用它重写 HTML)。
这提供了两全其美的:
没有必要为了不会一直变化的东西不断敲打数据库,但重要的是用户数据都在那里,而不是分散在不同的地方,使多服务器操作和部署变得一团糟。我一直提倡“数据库作为用户数据存储,除非”方法,因为它在架构上更好,并且有效缓存不一定更慢。
话虽如此,使用文件系统作为权威存储的一个很好的理由是当您确实需要使用外部独立工具来访问它时,例如 SFTP 等。
| 归档时间: |
|
| 查看次数: |
39445 次 |
| 最近记录: |