【发布时间】:2019-12-12 10:56:18
【问题描述】:
我有一个软件可以检查每台工厂机器并生成大约 100kb 的 PDF 输出。这是 12 小时的计划任务。我有超过 18.000 台机器,并且随着新工厂的增加,它会增加。我在一个月内大约获得了数百万条 PDF 文档记录。如果机器出现任何问题,我还需要通过过滤选项向最终用户展示它们。
我在后端使用 C# ASP.NET 和 SQL Server 2014。
存储它们的有效方法是什么?直接在数据库中使用 nvarbinary(max) 还是使用文件系统?
我本来打算用文件服务器的,但是这个link让我很困惑,所以我想问一下。
-编辑-
在与我的经理讨论后,我们决定使用以下方法。感谢大家提供帮助的 cmets,你们贡献了很多。
我们将数据以文本格式存储在有意义的表结构中。当最终用户想要 PDF 时,我们将创建 PDF 并及时提供。不会存储它们。我们还将对 PDF 中的图像使用 S3 CDN,并将它们的元数据保存在 DB 中。
当需要新报告时,开发人员首先从 db 获取模板,使用报告编辑器实现详细信息,然后将此 xml 脚本连同用户参数(语言、权限等)发送到我们的 SOA(面向服务的架构)基于机制。我们的 SOA 引擎将评估请求,用正确的数据和语言填充 xml 脚本,渲染,然后发送回用户。
非常感谢。
【问题讨论】:
-
在 SQL Server 中查看 FILESTREAM 可能是个好主意
-
不要不将文件存储为
nvarchar(max)。可能varbinary(max)启用FILESTREAM,但坦率地说:这尖叫“文件系统” -
再次为 FILESTREAM 投票
-
我希望 Azure 存储在您的数据库中有元数据。
标签: c# sql sql-server sql-server-2014