Je prévois d'utiliser dokuwiki pour mon site Web, mais mon ami m'a dit que, puisque dokuwiki n'utilise pas de base de données et ne stocke pas les données dans du texte brut, mon hôte sera très sollicité à mesure que mon site grandira et que je paierai beaucoup de l'argent pour le garder en vie. est-ce vrai? la méthode de stockage a-t-elle un effet?
J'ai créé une base de données de fichiers plats basée sur SQL qui s'exécutait cinq fois plus rapidement que MySQL. Incroyable!! Cependant, j'ai trouvé un point faible. J'ai manqué d'iNodes. Ooopppsss !! Néanmoins, elle supportait un site Web avec plus de 1,6 million de pages Web sans souffler ni bouffer. Le déplacer vers MySQL a en fait ralenti le site. Mais gardez à l’esprit que j’écrivais régulièrement du code pour bases de données et que je savais ce que je faisais.
Il y a des avantages et des inconvénients pour chacun. Les bases de données relationnelles traditionnelles basées sur SQL sont beaucoup plus efficaces pour stocker et récupérer des données, et requièrent moins d'espace disque et beaucoup moins d'E/S pour fonctionner. Cependant, cela entraîne des frais généraux. Il y a un point de basculement pour tout. Cela signifie que pour des données plus petites, une base de données relationnelle telle que MySQL peut ne pas être une bonne réponse. SQLite a été créé pour cette raison.
Et il existe toujours des bases de données SQL basées sur des fichiers plats qui sont parfaitement adaptées aux besoins les plus petits. Il n'y a absolument rien de mal avec une structure de données de fichier à plat. Certains de mes sites Web utilisent encore entièrement ces structures et tous les utilisent en partie. La plupart des applications basées sur des fichiers plats sont efficaces. Un avantage est que tout ce qui ne va pas, il est beaucoup plus facile de corriger les données.
Donc, au final, la décision est vraiment basée sur ce dont vous avez besoin. Si l'application que vous regardez fait bien ce que vous voulez, ne vous inquiétez pas. Envoyez votre ami trouver un tournevis pour gaucher pendant le déploiement de votre site.
Le DokuWiki FAQ répond assez longuement à cette question. Voir https://www.dokuwiki.org/faq:database
DokuWiki a été conçu pour contenir de la documentation de toutes sortes. Alors, que faites-vous lorsque votre base de données ou votre serveur Web est en panne et que la documentation pour la remonter n’est accessible que via ce serveur Web ou cette base de données? Beurk! Donc, DokuWiki stocke toutes ces informations vitales sous forme de texte brut qui est toujours lisible, même s'il ne reste que des sauvegardes sur bande de votre serveur bien-aimé :-).
Base de données vs stockage de fichiers à plat
Dissipons l'hypothèse qu'un système de gestion de base de données (SGBD) est le référentiel idéal pour les informations wiki. Cela ne veut pas dire qu'un SGBD n'est pas le bon choix, mais simplement que ce n'est pas le seul choix et que l'utilisation du système de fichiers de la même manière que DokuWiki n'est en aucun cas un mauvais choix pour un wiki.
Avant de continuer, rappelez-vous les caractéristiques des données wiki:
- lire souvent, mis à jour moins souvent
- contenu textuel mixte et non structuré
Un système de fichiers est un endroit extrêmement efficace pour stocker des données. C'est là qu'un SGBD est susceptible de mettre ses données. Pour une récupération simple, un système de fichiers doit vaincre le SGBD. Il est fort probable qu'une application de SGBD bien construite mettra en cache les résultats de ses requêtes courantes dans le système de fichiers pour une récupération plus rapide!
De plus, tous les systèmes de fichiers modernes mettent en cache les fichiers fréquemment consultés en mémoire. La lecture de ces données ne frappera même plus les disques.
Une grande partie du travail d'un DokuWiki est une simple récupération: récupérer un fichier et en afficher le contenu éventuellement avec un traitement. Ceci est très bien adapté à un système de fichiers. Bases de données Excel lorsqu'il s'agit de données hautement structurées et où de petites parties de ces données sont mises à jour fréquemment. Les wikis ne sont pas comme ça.
Rechercher dans un wiki ou plus correctement, indexer un wiki pour permettre une recherche rapide est un domaine dans lequel la technologie de SGBD peut aider un wiki. DokuWiki implémente sa propre indexation en créant une liste de chaque "mot" de trois lettres ou plus du wiki. La recherche partielle est plus lente qu'avec une BD et il est plus difficile de gérer les "recherches avancées". Toutefois, elle est une solution viable pour la recherche de mots entiers (c'est-à-dire que les résultats sont présentés dans un délai raisonnable par rapport à d'autres wiki). On peut soutenir que Google fournit un meilleur service d’indexation que toute recherche interne.
Un SGBD peut faciliter le franchissement du seuil d'un serveur unique. Dans sa forme la plus simple, le SGBD est placé sur une boîte et le composant serveur/application Web sur une autre. DokuWiki pourrait faire quelque chose de similaire en utilisant des montages NFS pour permettre à plusieurs serveurs localement distants (c'est-à-dire connectés au réseau local) d'accéder à l'arborescence du répertoire de données du wiki.
Pour les très grandes installations où les données doivent résider sur plusieurs serveurs, au lieu de résoudre les problèmes de réplication/synchronisation, l'application peut les transférer à un SGBD approprié.
Le stockage de système de fichiers présente également d'autres avantages. Comme il n’existe qu’un seul service (serveur Web) au lieu de deux (SGBD + serveur Web) à exécuter sur le serveur, l’installation du wiki est facilitée, la configuration requise pour le serveur est plus basse et la tolérance aux pannes plus élevée.
La sauvegarde et la restauration de vos données ou le déplacement du wiki sur un autre serveur consistent simplement à copier des fichiers. Le fait de disposer de vos données wiki dans le système de fichiers facilite également sa lecture ou sa manipulation avec d'autres outils ou scripts.
Voir aussi:
Ne pas utiliser de base de données présente certains avantages:
Lorsque chaque requête atteint votre serveur, il s'agit soit d'un accès à la base de données, soit d'un accès aux fichiers d'E/S. C'est plutôt une petite différence, IMO.
Dans les deux cas, l'utilisation réelle du processeur et l'espace de stockage utilisé sont assez comparables.