首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像数据库管理

图像数据库管理
EN

Stack Overflow用户
提问于 2013-08-27 05:25:55
回答 3查看 92关注 0票数 1

一点点背景信息:前任项目经理因未能按时交付项目而被解雇。我没有什么经验的编码,但现在领导的团队完成网站。

该网站本身类似易趣,其中一个项目是增加出售。图像和文档将与该项相关联,但托管在上载图像时创建的文件夹中。开发团队问我“如何管理与项目列表相关的文档的文件夹”。每个项目将有1-10张图片/文件上传,并在某一时间点(如果不是更多的话)列出1000-2000个项目。

环顾四周,我认为最简单的解决方案是按项目号命名文件夹,并在MySql中列出引用。每个项目将有一个单独的项目编号,不应重复。是否有更好的文件夹管理解决方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-27 05:38:44

您需要注意的是,大多数文件系统对一个文件夹中可以存储多少项有一个限制;在Linux上,限制通常在30000左右。有了你给出的数字,应该不会有什么担心,但你仍然应该计划系统成为未来的证据。

我发现用散列存储图像是非常有用的。例如,创建图像的SHA1散列,例如:cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5。然后将图像存储在基于此散列的目录结构中,其中包含几个文件夹:

代码语言:javascript
复制
cce/719/066/3c5/cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5.jpg

这将使用哈希的前12个字符形成一个4层的文件夹结构,然后文件名就是整个哈希。根据需要增加或减少文件夹深度。这允许您存储相当多的图像(16^3)^4)*限制),而不触及文件系统限制。然后,将此路径与有关图像及其所属项的其他信息保存在数据库中。这种方法也有效地消除了数据存储的重复,您将永远不会存储相同的图像两次.

票数 1
EN

Stack Overflow用户

发布于 2013-08-27 05:39:24

正如先生所说,如果图像不能被检索,那么图像可以用productid-docid-imageid时间戳重新命名,通常将图像存储在db中作为blob存储,并且打印不同名称的图像可能会有帮助。

票数 2
EN

Stack Overflow用户

发布于 2013-08-27 05:37:10

过去,如果一个目录中有太多的文件,那么文件系统的性能就会恶化,所以通常的智慧是将任何目录中的项目限制在1,000项以内。

尝试在item_id (填充)周围创建一个目录结构,所以#1002003可能是001002003,这可以在001/002/001002003.jpg中找到。

由于每个项目存储多个图像,因此可能会有一个级别,例如001/002/003/001002003_1.jpg。

在最终目录中使用完整的ID作为项目的名称(001002003.jpg,而不是003.jpg)。以后会派上用场的。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18457603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档