2013-05-13 3 views
0

Dans mon application Windows 8/RT, j'utilise SQLite DataBase (sqlite-net) dans un stockage isolé. Dans DataBase, j'ai beaucoup de données, y compris des fichiers (images, pdf et autres). Je reçois ces liens du serveur Web. Quand j'ai un lien, je veux télécharger le fichier et le stocker localement.

Ma question est: quelle est la meilleure façon de stocker un grand nombre de fichiers (100+)?
Un important pense: Je dois organiser rapidement trouver le fichier désiré.La meilleure façon de stocker un grand nombre de fichiers avec l'ajout de la recherche rapide

J'ai trois idées:

  1. Créer un autre DataBase uniquement pour les fichiers (je ne peux pas modifier existante)
  2. Créer un dossier dans IS et stocker ici directement.
  3. Créez une liste de fichiers et stockez-la dans IS.

Quel serait le meilleur/le plus rapide? Ou quelqu'un a une autre excellente solution?

+0

Quelle est la taille moyenne et la plus grande des fichiers que vous attendez? – mvp

+0

taille maximale == 5Mb, taille moyenne == 1Mb – jimpanzer

Répondre

0

100 fichiers n'est pas un si grand nombre que vous pouvez facilement stocker jusqu'à 100k fichiers (ou dossiers) dans un seul répertoire (NTFS).

Si vous recevez les fichiers d'un serveur Web, la question est de savoir si la source vérifie qu'il n'y a pas de noms de fichiers en double. Si cela ne peut pas être assuré, je vous recommande d'avoir un mappage de la table de base de données du fichier original et des métadonnées vers son hachage (SHA256 ou similaire) et de stocker le fichier avec un nom de fichier correspondant à son hachage. Puis, lors de l'utilisation du fichier, vous pouvez le transmettre à l'utilisateur en utilisant le nom de fichier d'origine à l'aide de l'API StorageFile.

Au-delà des fichiers de 100 Ko, vous pouvez créer une structure de sous-dossier à partir des deux premières lettres du hachage. De toute façon, stocker les métadonnées de fichiers dans une base de données et les fichiers dans un répertoire a été l'approche la plus utile pour nous par le passé.

0

100 fichiers avec une taille moyenne de 1 Mo ne font que 100 Mo. La plupart des gens disent que stocker les fichiers binaires dans la base de données est faux et suggèrent de stocker les fichiers séparément et de ne garder que les noms de fichiers dans la base de données, mais je pense que c'est bien pourvu que vous sachiez ce que vous faites.

Le gros avantage de stocker des fichiers dans la base de données est que vous gardez logiquement les fichiers avec leurs propriétés en un seul endroit. En outre, vous pouvez simplement copier un fichier et cela sauvegardera tout.

La base de données vous permet également d'effectuer des transactions. Vous avez peut-être des problèmes pour lire et écrire des BLOB dans la base de données, mais ce n'est pas très difficile.

+0

Pourquoi les gens disent cela? Stocker des fichiers séparément est fragile si vous y accédez toujours via la base de données. – reinierpost

+0

Je ne sais pas pourquoi. J'ai tendance à utiliser la base de données pour tout. Je reconsidérerais probablement si mes dossiers étaient plus de 100MB – mvp

+1

Je pense que c'est souvent juste une association automatique: les documents sont habituellement des dossiers sur un système de fichiers ainsi il ne se produit pas au développeur qu'ils peuvent également être stockés d'une manière différente. – reinierpost

Questions connexes