2

我想创建一个通用机制来在我的应用程序和数据库中保存文件,为此我想出了创建两个表的想法,schema以便在任何数据库表中保存与任何行相关的文件:

FileInfo
=================================================================
ID   FileName   ContentType   FileSize   DatabaseTableName  RowID

并创建具有OneToOne关系的下表以将文件数据保存在单独的表中,以便FileInfo可以更快地执行查询表:

FileData
=================================================================
ID  FileData

好吧,我不是数据库性能方面的专家,这就是为什么我想知道这种将所有表的所有文件保存在一个表中的设计是否会导致性能问题,这是一种不好的做法吗?

如果可以,您能否为我提供更好的解决方案?

提前致谢

4

1 回答 1

1

我觉得没有论文就无法回答这个问题。基本上可以将文件存储在数据库中。数据库和文件系统具有截然不同的属性。值得称赞的是,您希望为您的框架的用户提供为他们的案例选择正确选择的选项。

将其拆分为许多表(手动分区)或任何其他形式的分区都无济于事。SQL Server 在处理超大表时没有固有的问题。

数据库中的 Blob 会导致一些特定的缺陷。这些 blob 住在哪里并不重要。

我喜欢你做的分成两张桌子。通常,这不是必需的。如果查询编写正确并且只提取所需的列,则 SQL Server 将根本不会触及未使用的 blob 列。

这就是说,像你一样分离大块通常很方便。ORM 不喜欢大行。工具(和运行简单手册的管理员select *)现在能够查看FileInfo表格而不会因为大数据而失败。

拆分不是必需的,但可以使使用数据库更容易。

于 2017-09-17T17:40:43.953 回答