Quelle est la meilleure pratique pour stocker d’énormes quantités de texte (dans une base de données ou sous forme de fichier?), Et qu’en est-il de la compression?

StackOverflow https://stackoverflow.com/questions/504544

Question

Je construis une application Web qui gère les courriels internes et autres morceaux de texte fréquents de taille petite à moyenne 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 sous forme de milliers de fichiers individuels? Qu'en est-il de la compression (gzcompress () de PHP ou des fonctionnalités de compression de MySQL)?

Ce ne sera pas une application publique, donc la charge de l'utilisateur sera minimale (moins de 20 utilisateurs à la fois). Cependant, il y aura beaucoup de communication va-et-vient chaque jour au sein de l'application, donc je m'attends à ce que la quantité de données augmente assez avec le temps (c'est pourquoi je voudrais la compresser).

Je voudrais conserver les données dans une base de données pour en faciliter l’accès et la portabilité, mais certains des fils que j’ai vus ici concernant les images ont suggéré d’utiliser le stockage de fichiers. Qu'en penses-tu?

Merci Seth

Éditer pour clarification: je n’exige aucune recherche dans le texte. C’est pourquoi j’encouragerais à le compresser pour gagner de la place.

Était-ce utile?

La solution

Pour les images et les documents qui se trouvent déjà dans un format spécifique (excel, documents Word, fichiers PDF, etc.), je préfère le stockage de fichiers. Mais pour du texte brut, je préférerais probablement utiliser une base de données. Il est plus facile de répliquer sur plusieurs ordinateurs en cas de basculement. Vous pouvez effectuer des recherches de sous-chaîne sur du texte. Bien que je ne connaisse pas d'algorithme spécifique à utiliser pour le compresser, je penserais qu'une base de données serait une meilleure solution. Mais seulement si vous avez déjà juste le texte et que ce n'est que du texte. Pour tout autre format de document, je préférerais utiliser le stockage de fichiers.

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

Autres conseils

L'une des principales raisons de conserver les fichiers dans une base de données est de le rendre cohérent avec le reste des données que vous stockez. 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 de texte sous forme de fichiers peut être qu'il est plus facile de les servir à l'aide d'un serveur Web. S'il s'agit du dernier avantage de l'utilisation de fichiers, vous pouvez envisager de mettre en cache les fichiers sur le serveur Web. La plupart des opérations de sauvegarde et des transactions de la base de données sont faciles, tout en permettant une certaine accélération des requêtes http.

J'aurais choisi d'utiliser une base de données. Vous décrivez un scénario dans lequel vous allez stocker une grande quantité de messages. Vous ne fournissez pas beaucoup d'informations sur le système, mais je suppose que vous voudriez 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 au lieu d'utiliser le stockage de fichiers.

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.

Je me demande quelle est la taille de cette & "; portion moyenne &"; Si le texte ne contient que des messages écrits (moins de 10 Ko), la compression les rend encore plus petits et n'aura aucun impact important sur la croissance de la base de données. Il est également beaucoup plus facile de développer et de gérer tout ce qui est disponible avec une requête unique sans avoir à récupérer le contenu du fichier séparément.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top