我在写一个简单的文件管理系统,对我的工作。我只是一个业余爱好者,但现在已经被编程了一段时间。我的问题是这样的。当我通过我的应用程序中删除了一些文件,然后我需要删除相关的数据库记录。什么是去这个问题,而不带有任何数据库记录文件,或指向不存在的,文件记录结束了最好的方式,如果有异常抛出?

有帮助吗?

解决方案

在数据库中存储文件。然后,你可以有不会增加复杂性(MSMQ等),您的应用程序参照完整性。是的,这会增加你的数据库的大小。但这些文件已经在您的服务器上,所以它只是在不同的地方同位。

其他提示

这是一种“分布式事务”系统。你可能想编写一个合并程序,并在一段时间运行一次,你的将会的在某些时候有不一致的地方。

您说:“通过我的应用程序”。这是否意味着他们只能通过应用程序界面中删除文件?如果是这样,包删除了在自定义的交易,既除去了文件并删除数据库记录。如果一方发生故障时,回退等。

如果您希望让他们从文件目录中自动删除文件,然后删除该数据库的记录,你可以做很多事情,包括定期清洗和/或监视活动的文件目录观察家Windows服务一个目录,然后序幕清理工作。

感谢您的答复。我已经考虑去的BLOB路线,但不知道如果我的老板会去了。他喜欢一个良好的目录结构,你知道吗?对于分布式事务,我也不知道他们,但他们似乎是最专业的方式来处理它。但我是一个业余爱好者,这一切似乎太参与,所以我要赢我的老板轮的BLOB前面。干杯。

您应该使用分布式事务,其中将包括数据库和MS消息队列(MSMQ)。检查你的数据库可以与Microsoft分布式事务处理协调器(DTC)分布式事务中就读。

与MSMQ计划的所有文件的操作。

链接可能会帮助你。

我在我的一些应用程序的类似的功能。

我要做的就是先删除该文件直通的AP,然后删除了有一个链接/指向该文件的数据库记录。当用户请求一个文件(这意味着该链接的文件中的数据库中存在静止),应用程序检查该文件第一,如果由于某种原因它不存在,因为它希望它是,它清理数据库记录在这一点上,并通知“错误”的用户正常。

“孤立”的文件没有发生太大反正,但使用这种方法确保数据库不断清洗作为运行的应用程序的正常组成部分。

有很多处理这种其它方式,但是这一个我的作品。

第一删除数据库记录和审计库偶尔。通过审核我的意思是仓库寻找那些没有数据库记录的文件。如果删除了数据库记录第一你的代码不会是寻找一个实际上并不存在的文件。

有多少文件,并且你刨什么类型的文件存储?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top