繁体   English   中英

临时存储图像直到创建数据库实体的最佳实践是什么?

[英]what's best practice for temporarily storing images until their database entity is created?

我正在使用ASP.NET 4.0,并且已经有一个代表单个业务实体的大型Web表单。 用户可以上传与实体关联的多个图像。 提交表单后,将创建实体并为其分配GUID。 文件将存储到文件系统。

问题在于,在将实体插入数据库后,我们必须使用分配给实体的GUID来命名文件。 因此,在单击“提交”按钮之前,我们将有几个图像文件处于混乱状态。

这个问题有很明显的答案-将图像保存到文件系统,然后在创建业务实体时重命名这些文件。 但是,我相信必须有非常强大的模式和几个关键细节,才能构成一个非常强大的系统。 这种情况下的最佳做法是什么?

GUID的优点之一是可以在任何地方创建它们。 因此,让您的应用创建并分配GUID,然后使用预先分配的GUID在实体上执行插入。 然后,您的应用程序将具有用于命名文件的GUID。

如果这不可行,那么您的重命名方案对我来说似乎是最好的选择。

正如您提到的“非常强大的系统”,我只是在写这篇文章:

我会尝试阻止维护除数据库(包括文件系统)之外的任何状态,因为从长远来看,这会增加维护的复杂性。 无论如何,您都必须清理文件,我更希望从数据库中清理文件。 文件系统(在大多数情况下)并不理想,因为它不是:

  • 跨多个前端服务器,因此扩展性较差
  • 交易性操作(大部分时间)
  • 当您还原数据库备份时,文件也将位于“ Limbo”中

也许这并不是您真正要寻找的答案,因为您可能无法更改需求(对不起,如果不是这样的话),但是正如您提到使系统“非常强大”一样,我认为这可能是相关的。

如果您使用的是SQL 2008,请查看FILESTREAM: http : //technet.microsoft.com/zh-cn/library/bb933993.aspx

就个人而言,我将避免将上载保存在文件系统中,而是将其移动到数据库中。 这样一来,您在备份和灾难恢复计划中就省去了更少的资源,从而减少了复杂性并减少了维护。 我过去的做法是,将文件上传后保存在文件服务器上,然后在提交并接受表单后将它们复制到DB,然后从文件系统中删除它。 也将有一个常规的维护脚本来清除所有孤立文件的“ limbo”文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM