在 SQL 服务器中存储数百万个 100kb 的 PDF

Storing millions of 100kb PDFs in SQL Server

我有一个软件可以检查每台工厂机器并生成大约 100kb 的 PDF 输出。这是一个12小时的定时任务。我有超过 18.000 台机器,随着新工厂的建立,它会增加。大约我在一个月内获得了百万条 PDF 文档记录。我还需要通过过滤器选项向最终用户展示它们,以防机器出现任何问题。

我在后端使用 C# ASP.NET 和 SQL Server 2014。

存储它们的有效方法是什么?直接在数据库中使用 nvarbinary(max) 还是使用文件系统?

我本来打算用文件服务器的,但是这个link弄得我很困惑,所以我想问一下。

-编辑-

在与我的经理讨论后,我们决定使用以下方法。感谢大家的宝贵意见,你们贡献良多。

我们会将数据存储在具有文本格式的有意义的 table 结构中。当最终用户想要 PDF 时,我们将创建 PDF 并及时提供。不会存储它们。我们还将为 PDF 中的图像使用 S3 CDN,并将它们的元数据保存在数据库中。

当需要新报告时,开发人员首先从数据库中获取模板,使用报告编辑器实现细节,然后将这个 xml 脚本连同用户参数(语言、权限等)发送到我们的基于 SOA(面向服务的体系结构)的机制。我们的 SOA 引擎将评估请求,用正确的数据和语言填充 xml 脚本,渲染,然后发回给用户。

非常感谢。

如果您写入的 PDF 大部分相同,您可以将变量存储到数据库中。然后,当有人请求报告或其他任何内容时,您可以提取 PDF 模板文件并用从数据库中检索到的适当值填充它。

I have a software that checks every factory machine and produces PDF output around 100kb.

您有两个选择,第一个是不生成 PDF 作为输出,而是生成文本,因为您可以比 PDF 更有效地存储文本。

我要猜测一下,根据你说你已经有 18,000 家工厂,我会说这可能有点太晚了,在这种情况下,将 pdf 存储在文件系统上并将其位置存储在数据库。

当你处理大量数据时,不要使用 PDF 文件存储在数据库中,而是使用 table 结构化数据,因为 SQL 数据库是为之设计的,并使用 PDF 变量如果您的 PDF 文件中有类似类型的数据结构,请使用模板。

您的顺序是:流程(也可能包括数据库)> PDF > 数据库

应该是:进程 > 数据库 > PDF

此外,如果您的文件也有一些几何和图形数据,请使用示例文件更详细地描述您的问题,以便我们也能提供帮助。