2010-05-01 7 views
1

Ceci est une suite à une autre question que j'ai posée plus tôt aujourd'hui. Je crée une application de bureau qui stocke les documents texte enrichis créés dans WPF (dans un contrôle RichTextBox). L'application utilise SQL Compact, et jusqu'à présent, j'avais prévu de stocker chaque document dans une colonne binaire dans la base de données.Stockage de documents texte enrichi

Je repense cette approche. Serait-il préférable de stocker chaque document texte enrichi dans le système de fichiers plutôt que de l'enregistrer dans la base de données? Je pense que je pourrais mettre les documents dans le même dossier avec la base de données, puis stocker un chemin relatif à chaque document dans son enregistrement de base de données, avec d'autres informations sur le document (balises et ainsi de suite). Je voudrais connaître quelques avantages et inconvénients de cette approche, ainsi que des idées de ce qui est généralement considéré comme la meilleure pratique pour ce genre de chose. Merci de votre aide.

Répondre

1

Personnellement, je tendance à utiliser le système de fichiers

Pro DB

  • peut rechercher à l'aide des fonctions de recherche SQL (sera probablement un peu bancale avec RTF becuase des codes de contrôle)
  • sauvegarde le fichier MDF & vous avez sauvegardé tous les documents en un seul endroit
  • Peut facilement mettre en œuvre le versionnement
  • plus facile de conserver les données de fichiers & choses qu'il fait référence à la synchronisation

Pro Filesystem

  • chargeable par des applications externes (et les gens)
  • Un DB corrompu tue tous vos documents
  • Possibilité de recherche via les outils de système de fichiers/indexeurs
  • Code d'E/S moins complexe requis
  • familier à l'utilisateur
  • Le chemin peut pointer n'importe où (par exemple sur une autre machine/une autre unité logique)
  • Plus de code portable IO
+0

Thannks - Je vais laisser cela ouvert un moment avant d'accepter une réponse, mais je l'ai upvoted. –

+0

Je suis allé avec le système de fichiers, et cela a très bien fonctionné. Je stocke chaque FlowDocument dans un fichier XPS distinct; le nom de fichier XPS est le même GUID que j'utilise comme clé primaire pour l'enregistrement de base de données correspondant. –

1

Je ne sais pas pourquoi il n'a pas été mentionné auparavant, mais avez-vous regardé le type de données FILESTREAM qui est disponible dans SQL Server 2008 et au-dessus?

Il combine les avantages du stockage de système de fichiers avec les avantages du stockage DB. Voici un lien vers un livre blanc MS http://download.microsoft.com/download/a/c/d/acd8e043-d69b-4f09-bc9e-4168b65aaa71/SQL2008UnstructuredData.doc

Un autre point très fort avec filestream de mon point de vue est qu'il ne mange pas dans la limite de taille des éditions Express de SQL Server qui peut être très pratique

+0

Très intéressant - merci –

Questions connexes