【发布时间】:2010-12-15 13:32:57
【问题描述】:
我不是 DBA,所以我只是不知道使用各种方法在 SQL Server 中存储二进制数据的优缺点。
-
varbinary(n)仅存储 8000 字节 -
varbinary(max)存储 2 GB -
BLOBs 适用于大文件,但会带来“管理”开销(文件仅在数据库中引用,但实际上位于本地硬盘上)
我基本上有大约 1000 个文档(每年),我想将它们存储在 SQL Server 2008 R2 数据库中(通过简单的 ASPX 表单上传填充,通过简单的 Gridview 下载查看)。所有文档可能在 2MB - 8MB 左右(Word、Excel 文件)。我的猜测是我应该使用具有以下布局的表格MyDocuments:
MyDocuments
Data varbinary(max)
Title varchar(255)
ModifiedOn datetime()
ModifiedBy varchar(100)
我是否与varbinary(max) 保持一致?还是我走错了方向(例如性能方面)?
【问题讨论】:
-
最好将它们压缩,然后进行一次保存。
-
不是一个选项,因为它们是在 GridView 中作为单个文档引用的单个文档。想想文档管理系统。
-
那么在插入之前压缩每一个。 Excel 和 word 文件具有相当高的压缩率。这也将减少数据库大小。
-
您对数据库大小的看法是正确的。对我实际上如何保存压缩文件的问题没有帮助。
-
您可以使用“Sharpziplib”库。这些文件将保存为普通的非压缩文件。只需将原始文件名保存在一个额外的列中,以便它可以显示给用户。压缩/解压缩将在上传/下载之前完成。
标签: sql-server-2008 types binary-data