【发布时间】:2017-09-16 18:22:19
【问题描述】:
我想创建一个通用机制来在我的应用程序和数据库中保存文件,为此我想出了创建两个带有以下schema 的表的想法,以便保存与任何数据库中的任何行相关的文件表:
FileInfo
=================================================================
ID FileName ContentType FileSize DatabaseTableName RowID
并使用OneToOne 关系创建下表以将文件数据保存在单独的表中,以便可以更快地查询FileInfo 表:
FileData
=================================================================
ID FileData
好吧,我不是数据库性能方面的专家,这就是为什么我想知道这种将所有表的所有文件保存在一个表中的设计是否会导致性能问题?练习?
如果可以的话,您能否提供一个更好的解决方案?
提前致谢
【问题讨论】:
-
您是否尝试将文件数据存储在数据库中,如果是,我建议您查看 Filestream::docs.microsoft.com/en-us/sql/relational-databases/blob/…
-
@TheGameiswar 我想让用户配置文件是保存在数据库中还是作为文件系统保存。所以是的文件可能会保存在数据库中。
-
好的,有什么理由这样做
I want to allow users to configure whether the files will be saved in database or as file system -
@TheGameiswar 在我看来不是真的!我只想考虑用户的意愿……一些用户和数据库管理员可能更喜欢将文件保存在数据库中,而另一些用户和数据库管理员可能更喜欢将它们保存为系统文件。我关心的只是实现灵活和高性能的设计
-
恕我直言,用户不应决定应用程序应将其数据和文件存储在何处以及如何存储。他们通常不会理解选项并做出错误的选择。也就是说,SQL Server 不是文件服务器,因此在其中存储文件是一个好的解决方案的情况是有限的。
标签: sql-server performance database-performance sql-server-performance