web-dev-qa-db-fra.com

Fichiers texte et texte dans la base de données

Je conçois un nouveau site, décidant de conserver la majeure partie du contenu de chaque page dans un fichier texte, avec juste le nom du fichier dans un enregistrement de base de données pour cette page, ou de conserver le texte entier dans l'enregistrement de base de données en tant que chaîne. Le texte comprend généralement quelques centaines à quelques milliers de mots, avec un balisage incorporé pour inclure des photos ou autre, à traiter en PHP avant d'être envoyé au format HTML.

Je ne trouve pas assez de discussions éclairantes sur ce choix de design en ligne. Quels sont les avantages et les inconvénients de chaque voie?

J'imagine que l'avantage des fichiers texte est un accès facile au fichier par ftp ou par un autre moyen, ce qui permet de corriger les fautes de frappe ou de modifier le matériel sans avoir à manipuler la base de données.

OTOH, le garder directement dans la base de données signifie que je n'aurai pas à apprendre à lire les fichiers texte sous PHP 8P. Sérieusement, quelles sont les implications pour la maintenance du site, la sécurité, l'efficacité et les aspects connexes ' je ne pense pas?

4
DarenW

Les fichiers texte sont un peu plus rapides et faciles à manipuler.

La chose est ... vous devrez traiter des bases de données tôt ou tard en tant que développeur.

J'ai remarqué que vous n'avez mentionné aucune fonctionnalité de recherche. Si vos textes doivent faire l'objet d'une recherche interne, l'utilisation de la base de données ne fait aucun doute, car ils comptent avec les fonctions de recherche en texte intégral intégrées.

2
Dave

Stockez le texte dans la base de données, mais mettez-le en cache dans des fichiers. Vous obtiendrez tous les avantages des deux approches. Le rendu d'une page ressemblerait à ceci:

if (a cached version of page doesn't exist) {
    generate the page content from the database
    store the page content in the cache
}
serve the page from the cache

Ensuite, lors de l'édition d'une page:

store the new content in the database
wipe the cache for that page

Ainsi, vous n'aurez besoin que d'un seul coup de base de données, lorsqu'une page est modifiée. Vos performances seront bien meilleures qu'un magasin de base de données directe, car la grande majorité des pages consultées sont de simples fichiers statiques et vous bénéficiez de la gestion centralisée, de l'indexation de texte, etc.

3
Alex Howansky

La question compare:

  1. Stocker du texte dans la base de données
  2. Stocker du texte dans des fichiers et stocker les noms de fichiers de ces fichiers dans la base de données

Dans ces conditions, tout stocker dans la base de données sera non seulement beaucoup plus facile, car vous n’aurez à résoudre le problème qu’une seule fois, mais aussi plus robuste.

Les bases de données renforcent l'intégrité de leurs données. Il est très sûr qu'un processus écrive dans la base de données et qu'un autre le lise en même temps. Le serveur de base de données utilise le verrouillage pour s'assurer que le processus de lecture ne lit pas un enregistrement partiellement écrit.

Toutefois, si vous essayez de maintenir le système de fichiers et la base de données synchronisés, il est impossible d'empêcher d'autres processus de lire au mauvais moment. Dans votre exemple trivial, le problème ne sera probablement pas énorme tant que votre application ne fera rien de trop catastrophique si elle trouve une anomalie.

Les sauvegardes, en particulier, posent tout un problème car il est fréquent qu'une sauvegarde du système de fichiers ne soit plus synchronisée avec la base de données dans un délai très long, car les bases de données sont sauvegardées à l'aide d'une méthode différente.

Si vous pouvez conserver toutes les données variables dans une base de données, les sauvegardes et la mise à l'échelle sur plusieurs serveurs seront plus faciles. Bien sûr, cela est parfois impraticable - de nombreuses personnes préconisent de stocker des données dans des fichiers si elles sont très volumineuses.

1
thomasrutter

Les fichiers texte sont beaucoup plus faciles à utiliser car tout système que vous devez éditer et gérer fonctionnera de manière transparente. Les inclure dans PHP consiste uniquement à apprendre à utiliser la fonction include (). Vous pouvez facilement utiliser tous les outils pour FTP, la synchronisation et le contrôle de source directement. Ces avantages sont énormes.

Si vous stockez votre texte dans la base de données, vous pouvez soit le mettre directement en utilisant votre interface de base de données préférée, ce qui sera au mieux une torture. Vous aurez du mal à vérifier l'orthographe, à réviser et à saisir les données (en particulier selon la longueur demandée). Au lieu de cela, vous construirez probablement une autre application Web pour insérer le texte dans la base de données, ce qui sera probablement une perte de temps par rapport au simple appel include () nécessaire.

0
Itai