MySql est-il bon pour les grandes bases de données?
Je travaille pour une entreprise et nous sommes toujours en accédant à un site externe pour plus d'informations. Le site a été développé par archaïque société de développement de logiciels qui n'ont même pas de site web. Ils joli beaucoup ont un monopole dans mon état depuis le fournisseur de contenu pour la base de données utilise uniquement cette très dysfonctionnelle site pour télécharger leurs données. Le problème de ce site est qu'il est tellement lent qu'il n'est pas encore fonctionnelle.
Avoir contrôlé pour des choses comme la vitesse de Connexion et le type de Navigateur, il est clair que le problème se trouve à l'intérieur du site lui-même. Donc, je pense à refaire le site, puis de le proposer pour le fournisseur de contenu comme un moyen pour mettre en ligne leurs données. Essentiellement, ce projet nécessite une très grande base de données pour stocker des centaines de milliers de noms, d'adresses, et d'autres types de données.
Ma seule expérience avec les bases de données est MySql, et vraiment ma seule expérience avec le contenu dynamique est PHP. Donc, oui, je suis en train de voir si le vieux PHP + MySQL combinaison est adaptée pour le stockage et le représentant de grandes quantités de données. J'ai seulement fait ce sur de petits projets, mais je pense que l'ensemble des modèles HTML avec des espaces réservés pour le contenu dynamique marcherait bien.
Bien sûr, je ne sais pas pourquoi ce site est si lent. C'est peut-être pas la DB à tous. C'est peut-être le serveur ou quelque chose d'autre. Mais la principale chose que je suis en train d'accomplir est d'améliorer la vitesse et la fonctionnalité de ce site. Je n'ai aucune expérience avec d'autres types de bases de données, de sorte que toute les astuces /conseils que vous pouvez offrir pour faire un projet comme ce serait grandement apprécié. Aussi, des conseils concernant la façon dont, généralement, de faire un rapide et fonctionnelle du site qui serait nécessaire pour représenter la dynamique des données à partir d'une grande base de données serait également utile.
*Edit: je suis en train d'apprendre python donc, si vous pensez que ce serait un meilleur côté-langage de script alors je peux certainement essayer de mettre en œuvre quelque chose de différent que le plan initial ci-dessus.
source d'informationauteur jerry
Vous devez vous connecter pour publier un commentaire.
Si vous faites un bon design, vous pouvez avoir de très grandes bases de données dans MySQL (cette autre question, peut vous aider à). Définir correctement les clés et indexoptimiser vos requêtes (
EXPLAIN
est votre ami ici). Choisir un bon moteur de base de données.Il y a beaucoup de choses à faire pour obtenir le meilleur de MySQL.
EDIT: encore plus d'idées...
C'est aussi très important de la façon dont vous structurez vos données et les tableaux afin de rendre facile de les écrire, de les récupérer ou de trouver un compromis entre les deux (en fonction du cas d'utilisation).
Aussi si il grandit, vous pouvez utiliser un clusterpartition de vos données entre plusieurs bases de données MySQL dans plusieurs machines (à l'aide d'un Maître-esclave schéma par exemple), il est une autre option.
Pour améliorer les performances, vous devez également penser à l'aide d'une sorte de cache pour la répétition des requêtes.
Il existe également des outils comme Vitess qui aident à l'échelle d'une base de données MySQL dans une manière semblable à celle des bases de données NoSQL.
Si PHP/MySQL peut l'échelle de Facebook d'utilisationil peut l'échelle de la vôtre. Ce n'est pas nécessairement la meilleure solution pour toutes les situations, ni de mise à l'échelle toujours une tâche simple.
Vous ne vraiment commencer à frapper mysql limite de dans la des millions (et peut encore pousser plus loin si vraiment nécessaire). Vous pouvez prendre un coup d'oeil à mysql spin off, ou si vous utilisez des milliards, de regarder quelque chose comme Cassandra.
Performance sage, php n'est pas le jeûne, mais devrait être assez rapide. Essayez à l'aide de tâches d'arrière-plan/cron jobs pour le temps des emplois, et beaucoup de mise en cache.
Oui, Vous pouvez créer des applications à grande échelle à l'aide de PHP et MySQL. Vous avez besoin d'utiliser certains autres outils d'aide, ce qui aidera le détartrage de votre application, par exemple les équilibreurs de charge.
Maintenant, la chose est que vous ne pouvez pas faire cela avec l'installation par défaut de MySQL. Vous avez besoin de comprendre comment équilibrer la charge sur plusieurs serveurs. Et puis comment utiliser des clusters ou des fragments. Donc tu peux tout faire aussi longtemps que votre système est développé sur une architecture évolutive.
Et ne commencez pas à vous soucier des millions de documents lorsque vous êtes juste de déploiement de votre première version. Mise à l'échelle arrive peu à peu. Vous ne pouvez pas déployer une application qui balance en une seule journée. Vous devez optimiser au jour le jour. Souvenez-vous de Donald Knuth citation de "l'optimisation Prématurée est la racine de tout mal"
Site comme HighScalability peut vous aider à comprendre mieux concevoir les architectures sur le dessus de la pile LAMP 🙂
=H=
Personnellement, j'ai utilisé MySQL grande échelle de la base de données est mélangé avec du PHP rapports fondés sur le site web. Nous avons un bon couple de plusieurs milliers de lignes, avec environ 20+ colonnes de données que d'aller et venir tous les jours avec la constante de multiples connexions au serveur. MySQL doit être facilement capable d'effectuer la plupart des mêmes fonctionnalités que normale MSSQL, PostgreSQL, Oracle, etc... La clé est à vos requêtes et s'assurer qu'ils sont le meilleur que vous pouvez être amenés à réduire la charge sur le serveur lui-même. Bonne chance avec votre projet!
MySQL peut gérer beaucoup, vous devez juste vous assurer que vous utilisez le bon moteur de base de données qui convient à vos besoins. J'utilise MyISAM pour la plupart des raisons de performances, mais vous pouvez utiliser tout ce qui n'est pas MyISAM.
De votre cours sur PHP et MySQL et permet de traiter un grand nombre de données, si vous avez une bonne structuré (bien normalisée) alors vous n'avez rien à craindre.
MySQL est utilisé pour un très très gros projets, certains d'entre eux sont:
Il y a quelques points à soumettre à votre question.
Le premier élément que j'ai remarqué, c'est que vous l'avez mentionné, le stockage des "centaines de milliers" de lignes. Ce n'est pas très grand. Mon 386 serveur avec 512M de ram peut gérer que de nombreuses lignes avec un petit retard. Si vous créez votre base de données correctement, votre vrai problème va être d'environ la largeur de bande (requêtes par seconde) qui vont venir sur votre serveur.
MySQL peut évoluer, mais elle n'est pas grande. Facebook n'utiliser PHP/MySQL pour certains de leurs services, mais pour la plus rapide et la plus gourmande en bande passante qu'ils utilisent hadoop. Ils ont également l'utilisation de PHP, mais pour leur plus rapides des applications qu'ils utilisent le hip-hop pour le convertir en c++ et le compiler.
MySQL peut évoluer, mais si vous n'avez pas à configurer correctement alors il va échouer lamentablement lorsque les tables deviennent trop grands. PostgreSQL échelles mieux hors de la boîte, mais ne fait amende s'il est configuré correctement.
Il ressemble à votre demande est plus forte que vous êtes habitué, mais n'est vraiment pas "que" de grandes. Je voudrais vous inquiétez plus sur le temps de réponse de la base de données mise à l'échelle en fonction de votre situation particulière.