web-dev-qa-db-fra.com

Quoi de mieux / plus rapide? MySql ou FileSystem?

Imaginons un site Web qui est un répertoire de personnes. Pour chaque personne, il peut y avoir une photo de profil et une biographie.

J'admettrai que mes requêtes SQL pourraient être meilleures, mais en général, ce serait plus rapide et utiliserait moins de puissance de traitement.

Pour vérifier si un fichier existe puis l'ouvrir ou

vérifiez avec MySql pour voir si une bio existe et affichez-la.

Je suis presque sûr que dans le cas ci-dessus, le système de fichiers fumera la base de données mysql.

Que faire si je fais de la base de données un fichier txt délimité en lecture seule?

Quoi de plus rapide dans ce cas?

Y a-t-il un certain point où si le fichier txt a trop d'enregistrements, il est préférable d'utiliser MySql?

9

Le système de fichiers est utile si vous recherchez un fichier particulier, car les systèmes d'exploitation conservent une sorte d'index. Cependant, le contenu d'un fichier txt ne sera pas indexé, ce qui est l'un des principaux avantages d'une base de données. Un autre consiste à comprendre le modèle relationnel, afin que les données n'aient pas besoin d'être répétées encore et encore. Un autre est la compréhension des types. Si vous avez un fichier txt, vous devrez analyser les nombres, les dates, etc.

Donc - le système de fichiers peut fonctionner pour vous dans certains cas, mais certainement pas tous.

17
Rob Farley

Cela dépend vraiment de ce que vous faites. En général, la vitesse à laquelle vous pouvez ouvrir un fichier en lecture sera meilleure que la vitesse à laquelle vous pouvez établir une connexion réseau. Ainsi, pour des opérations très simples, le système de fichiers est nettement plus rapide. Les systèmes de fichiers battront probablement aussi un SGBDR pour le débit de lecture brut car il y a moins de surcharge. En fait, si vous y réfléchissez, la base de données ne peut jamais être plus rapide que le système de fichiers sur lequel elle se trouve en termes de débit brut.

Pour les opérations très complexes, le système de fichiers est susceptible d'être très lent. Par exemple:

Lisez 10 lignes de ce fichier d'un milliard de lignes, puis recherchez les lignes correspondantes dans cet autre fichier. Je te plains si tu dois faire ça. Un bon serveur de base de données a cependant des stratégies pour le faire rapidement et bien, donc vous ne réinventez pas la roue.

De plus, vous devez vraiment comprendre quoi que vous faites. Quelles données stockez-vous? Comment allez-vous le transformer? S'il s'agit de fichiers image de 100 000, votre solution sera très différente de celle d'un répertoire pour 100 000 personnes. (LDAP peut-être? Ou une base de données SQL? Cela dépend de ce que vous faites, peut-être.) La clé ici est de choisir les outils qui correspondent à ce que vous faites et qui vous donnent la possibilité d'ajouter plus d'utilisations, plutôt que ce qui semble le plus rapide pour certains. cas d'utilisation plutôt abstrait. Les bases de données sont de merveilleux outils, mais vous ne pouvez pas obtenir une bonne réponse à une question comme celle-ci.

Enfin, l'optimisation prématurée est la racine de tout mal. Choisissez des outils utiles maintenant et découvrez le reste plus tard.

12
Chris Travers

Le système de fichiers pourrait être plus rapide au début, mais j'en doute. Cependant, à mesure que la taille de vos données augmente, vous devrez probablement restructurer votre système de fichiers pour maintenir les performances. Outre leur capacité évidente à indexer sur plusieurs attributs, les bases de données ont tendance à mieux évoluer.

Les caches Web qui fonctionnent de manière similaire à ce que vous envisagez utilisent l'arborescence de répertoires pour maintenir les performances. Ils ont également tendance à être d'une échelle relativement fixe, de sorte qu'ils n'ont pas à faire face à une échelle croissante.

Pour ce type d'application, je commencerais par une base de données, car elle correspond mieux à vos besoins. Il évoluera beaucoup mieux à long terme. Par rapport à la plupart des systèmes de fichiers, une base de données sera également plus économe en espace.

5
BillThor

J'adore toujours venir sur ces forums et lire tous les gourous de la base de données qui disent que le système de fichiers ne peut pas le faire aussi rapidement que la base de données. Au contraire, un arbre correctement disposé, des tables de hachage bien conçues et les enregistrer en tant qu'objet dans un fichier produiront les mêmes vitesses qu'une base de données et de mes tests. Une table de hachage et une arborescence de répertoires correctement conçues gagneront à chaque fois. Beaucoup moins de frais généraux. Récemment, je me suis éloigné de la programmation basée sur la base de données et plus sur l'arborescence de fichiers pour plus de simplicité et de portabilité du programme. Aucune base de données ne signifie une sauvegarde facile. Fermez simplement votre arbre et partez. C'est très agréable et une recommandation de programmer de cette façon pour les clients ponctuels avec de petites applications. Regardez la grande image ai-je le temps de concevoir le mien ou simplement de tirer parti de ce qui est déjà là comme la base de données. Personnellement, j'aime enregistrer mes objets dans un fichier et les utiliser plus tard, gardez un œil sur la taille de vos tables et examinez comment utiliser un RandomAccessFile afin de pouvoir le rechercher rapidement comme une base de données et le décomposer en objets de table de hachage . Prendre plaisir. Rappelez-vous que les données que vous stockez dans le fichier consomment parfois le double de la mémoire en fonction de votre code. La table de hachage elle-même et généralement l'endroit où vous la consommez pour la visualiser.

1
JDeCarlo