1
7
好的,我们开始吧。选项2是一个非常糟糕的主意-您最终会遇到不稳定的完整性约束和备份,这些约束和备份不能保证每个定义都是一致的,因为您不能进行时间点备份。在大多数情况下都不是问题,当您进行更复杂的(时间点)恢复时,它就会变成一个问题。 选项1和3是相当平等的,尽管有一些含义。
关于你的问题: 1:我会去数据库存储。同时尝试-filestream和not。不管怎样,当您使用相同的API时,这只是表定义中的一个简单更改。 2:是的,比直接文件访问更糟糕,但它比直接文件访问更受保护。否则,我认为filestream和blob没有显著区别。 3:你在哪里有巨大的后援?不好意思问,但您的340GB并不完全是一个大型数据库。无论如何,你需要备份它。最好在一个一致的状态下完成,这就是使用DB存储所能实现的。加上完整性(没有人在不清理数据库的情况下意外删除未使用的文档)。数据库并没有明显大于进行分割,它是一个简单的一处备份。 最后,问题是数据库的完整性和备份的容易性。赢得SQL Server,除非你得到大的-这意味着360兆字节的数据。 |
2
1
将文件存储在数据库外部,并将路径存储在数据库中。 因为在数据库中存储文件需要太多的空间。 |
3
0
我肯定会推荐(3)-这是一种专门为处理而构建的场景,在我看来,它处理得非常好。 这份白皮书有很多有用的信息- http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx -从安全的角度来看…
关于备份,请参阅此问题的公认答案- SQL Server FILESTREAM limitation |
4
0
我使用了一个你没有列出的索引/内容方法,但它可能会有所帮助。您有一个文件表,它存储为一个具有唯一ID或行号的二进制代码块。下一个SQL表将提供索引、文件名、路径、关键字、文件类型、文件大小、校验和…无论你需要什么。这是我见过的最好的存储文件,用于处理数千个上传的文档。如果用户不知道文件类型,则需要索引来查看该文件,因为它只是用户的二进制文本。我们将数据存储在两个独立的数据库中,以允许索引位于一台服务器上,文件存储位于多台服务器上,以便于扩展。此时,索引表/数据库包含文件所在服务器的名称或密钥。如果用户有权读取该特定索引表,那么他们有权访问该文件。 |
5
0
您看过RBS(远程Blob存储)解决方案吗?如果使用filestream RBS提供程序,它将在内部保留blob作为filestream文件或varbinary(max)值,具体取决于基于blob大小获得更好性能的内容。 Remote BLOB Store Provider Library Implementation Specification |
6
0
这种情况很简单:文件流建议说,当文件(平均)大于1MB时最好,而不是您的情况,对于较小的对象,在数据库中存储varbinary(max)blob通常提供更好的流性能。 因为您将直接从SQL Server访问文件,而不是从文件系统访问文件,所以应该使用blob存储文件。 读取何时使用文件流: http://technet.microsoft.com/en-us/library/bb933993%28v=sql.105%29.aspx |
Jack Skeletron · T-SQL三表求和 6 年前 |
CSK · 列出sql server中存储过程中的存储过程 6 年前 |
DRT · 从文本字段中提取多个日期 6 年前 |
ihatemash · 确定可以合并哪些行的SQL查询 6 年前 |
Shawn · 使用WinZip命令行的SQL Server作业 6 年前 |