5 votes

Quelle est la meilleure pratique pour stocker de grandes quantités de texte (dans une base de données ou dans un fichier ?), et qu'en est-il de la compression ?

Je développe une application web qui gère les courriels internes et d'autres petits ou moyens morceaux de texte fréquents entre les utilisateurs et les clients. Quelle est la meilleure méthode pour stocker ces données ? Dans une base de données (MySQL) ou dans des milliers de fichiers individuels ? Qu'en est-il de la compression (gzcompress() de PHP ou les fonctions de compression de MySQL) ?

Il ne s'agira pas d'une application publique, la charge d'utilisateurs sera donc minimale (moins de 20 utilisateurs à la fois). Cependant, il y aura beaucoup de communications qui iront et viendront chaque jour au sein de l'application, et je m'attends donc à ce que la quantité de données devienne assez importante au fil du temps (c'est pourquoi j'aimerais les compresser).

J'aimerais conserver les données dans une base de données pour en faciliter l'accès et la portabilité, mais certaines des discussions que j'ai vues ici concernant les images ont suggéré d'utiliser le stockage de fichiers. Qu'en pensez-vous ?

Nous vous remercions, Seth

Édition pour clarification : Je n'exige aucune recherche dans le texte, c'est pourquoi j'aurais tendance à le compresser pour économiser de l'espace.

1voto

Ryan Guill Points 6115

Pour les images et les documents qui sont déjà dans un format spécifique (excel, documents word, fichiers pdf, etc.), je préfère le stockage de fichiers. Mais pour le texte brut, je préférerais probablement utiliser une base de données. Elle est plus facile à répliquer sur les machines pour le basculement, vous pouvez faire des recherches de sous-chaînes sur le texte et, bien que je ne connaisse pas d'algorithme spécifique à utiliser pour le compresser, je pense qu'une base de données serait une meilleure solution. Mais seulement si vous ne disposez que du texte et qu'il ne s'agit que de texte. Pour tout autre format de document, je préférerais utiliser le stockage de fichiers.

Et à moins que quelque chose ne m'échappe, j'utiliserais un CLOB au lieu d'un BLOB, s'il ne s'agit que de texte.

1voto

Simon Groenewolt Points 7046

L'une des principales raisons pour lesquelles les fichiers sont conservés dans une base de données est qu'ils doivent rester cohérents avec le reste des données stockées. Il sera plus facile de faire des sauvegardes, de (re)déployer avec des ensembles de données prédéfinis, etc. En outre, il est plus facile de garantir l'intégrité transactionnelle.

L'un des avantages du stockage des textes sous forme de fichiers pourrait être qu'il est plus facile de les servir à l'aide d'un serveur web. Si c'est le seul avantage restant de l'utilisation de fichiers, vous pourriez envisager la mise en cache des fichiers sur le serveur web - cela vous permettra de bénéficier de la facilité de sauvegarde et de transaction de la base de données, tout en accélérant les requêtes http.

0voto

J'aurais choisi d'utiliser une DB. Vous décrivez un scénario dans lequel vous allez stocker une grande quantité de messages. Vous ne donnez pas beaucoup d'informations sur le système, mais je suppose que vous aimeriez probablement trier, grouper et appliquer plusieurs autres propriétés aux messages. Il serait beaucoup plus facile et probablement plus rapide de conserver le message avec ses attributs dans une base de données plutôt que d'utiliser un fichier de stockage.

En ce qui concerne la compression, je ne sais pas laquelle des méthodes est la plus efficace. Vous devriez probablement essayer les deux avant de choisir.

0voto

Riho Points 3192

Je me demande quelle est la taille de ce "morceau moyen". Si le texte n'est constitué que de messages écrits (donc moins de 10 Ko), la compression les rend encore plus petits et il n'y aurait pas d'impact important sur la croissance de la base de données. Le développement et la maintenance sont également facilités par le fait que tout est disponible avec une seule requête et qu'il n'est pas nécessaire d'obtenir le contenu des fichiers séparément.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X