0

我有一个将图像存储在数据库中的应用程序。现在我了解到,由于性能原因,这不是最好的方法。

我已经开始从数据库中提取所有“blob”并将它们(通过虚拟文件夹)添加到数据文件夹中

问题是我已经存储了 8000 个 blob,如果我将它们放在像这样的文件夹中“数据/<blobid>/<blobname.extension>”这个文件夹将包含许多文件夹以进行管理。

我想知道如何最好地存储文件?将它们按创建日期分组,如“数据/< 年 >/< 月 >/< 日 >/< blobid >/< 名称 >”。我还必须补充一点,我们的文件存储在数据库的树中。我想知道是否应该将该树结构映射到文件系统,唯一的问题是您可以移动分支。这意味着我必须移动文件系统上的分支。

欢迎任何帮助。

格兹,米

4

4 回答 4

7

您使用的是什么版本的 SQL Server?因为如果您使用的是 2008,您可以使用FILESTREAM 数据类型来存储图像。这与将它们存储在文件存储中一样有效,但没有任何相关的麻烦。请参阅使用 SQL Server 2008 Filestream 获得牵引力

于 2009-11-09T14:27:24.230 回答
1

一个简单的策略是根据前 [few] 数字进行分组。例如:

1/
    2/
        123.blob
        129.blob
    5/
        151.blob
2/
    0/
        208.blob

这样,您就知道一个目录中的子目录永远不会超过 10 个。您当然可以使用更多或更少的(目录)级别和/或每个级别的更多数字。

更复杂的动态系统可以按需创建子级别:如果某个目录中的 blob 数量超过预设的最大值,则再创建 10 个子目录并将文件移入。

于 2009-11-09T14:46:07.320 回答
1

大多数 BLOB 数据的文件系统都会设置许多子目录。例如,如果您的 ID 为 1-10000,则可以:

00/
    00/
    01/
    02/
        00020.blob
        00021.blob
        ...
    ...
01/
02/
03/
...

我要回答您的另一个问题:为什么将它们作为 BLOB 进行管理对您来说如此糟糕?

于 2009-11-09T14:47:36.217 回答
0

您需要将文件存储在相关的树结构中吗?如果不是,您可以将文件命名为 /YOURFOLDER/blobid_blobname.extension。这样,上传文件夹纯粹充当数据的存储库,而不是模仿数据结构。

于 2009-11-09T14:40:10.133 回答