2013-05-13 70 views
0

在我的Windows 8/RT应用程序中,我在独立存储中使用SQLite DataBase(sqlite-net)女巫商店。在DataBase中,我有很多数据,包括文件(图像,pdf和其他)链接。我从Web服务器获得这些链接。当我获得链接时,我想要下载文件并将其存储在本地。

我的问题是:什么是存储大量文件(100 +)的最佳方式?
一个重要的想法:我需要组织快速找到想要的文件通过添加快速搜索来存储大量文件的最佳方式

我有三个想法:

  1. 仅创建的文件另一个数据库(我不能修改现有的)
  2. 在IS中创建文件夹,并直接存储在这里。
  3. 创建文件列表并将其存储在IS中。

这将是更好/更快?或者有人有另一个伟大的解决方案?

+0

什么是您期望的平均和最大文件大小? – mvp 2013-05-13 08:15:35

+0

最大尺寸== 5Mb,平均尺寸== 1Mb – jimpanzer 2013-05-13 08:26:47

回答

0

100个文件是不是就可以轻松存储多达在单(NTFS)目录100K的文件(或文件夹)这样的大数目。

如果从Web服务器接收文件,则问题是源是否可以确保没有重复的文件名。如果这不能保证,我建议有一个数据库表从原始文件名和元数据映射到它的散列(SHA256或类似),并存储文件与其散列相对应的文件名。

然后,使用文件时,你可以通过它传递给使用使用StorageFile API原来的文件名用户。

超过100k个文件,您可以从散列的前两个字母创建子文件夹结构。

无论哪种方式,存储在数据库中,并在目录中的文件的文件元数据已经为我们在过去的最有用的方法。

0

平均大小为1MB的100个文件只有100MB。

大多数人说,存储数据库二进制文件是错误的,建议分开,只存储文件保存的文件名在数据库中,但我认为它是好的前提是你知道自己在做什么,为什么。

在数据库中存储文件的巨大优势在于,您可以将文件与其属性逻辑地保存在一起。此外,你可以简单地复制一个文件,这将备份一切。

数据库还为您提供交易支持。读取BLOB并将其写入数据库可能会遇到一些问题,但这不是很困难。

+0

为什么人们这么说?如果您始终通过数据库访问文件,则单独存储文件非常脆弱。 – reinierpost 2013-05-13 08:40:20

+0

我不知道为什么。我倾向于使用数据库的一切。我可能会重新考虑我的文件是否超过100MB – mvp 2013-05-13 08:41:30

+1

我认为它通常只是一种自动关联:文档通常是文件系统上的文件,因此开发人员不会想到它们也可以以不同的方式存储。 – reinierpost 2013-05-13 08:44:53

相关问题