Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conception de base de données pour la première fois :suis-je en sur-ingénierie ?

Quelques réponses supplémentaires à vos questions :

1) Vous êtes à peu près sur la cible pour quelqu'un qui aborde un problème comme celui-ci pour la première fois. Je pense que les indications des autres sur cette question jusqu'à présent la couvrent à peu près. Bon travail !

2 &3) Le coup de performance que vous subirez dépendra en grande partie de la possession et de l'optimisation des bons index pour vos requêtes / procédures particulières et, plus important encore, du volume d'enregistrements. À moins que vous ne parliez de plus d'un million d'enregistrements dans vos tables principales, vous semblez être sur la bonne voie pour avoir une conception suffisamment courante pour que les performances ne soient pas un problème sur un matériel raisonnable.

Cela dit, et cela se rapporte à votre question 3, avec le début que vous avez, vous ne devriez probablement pas vraiment vous inquiéter outre mesure des performances ou de l'hypersensibilité à l'orthodoxie de normalisation ici. Il s'agit d'un serveur de rapports que vous créez, et non d'un backend d'application basé sur les transactions, qui aurait un profil très différent en ce qui concerne l'importance des performances ou de la normalisation. Une base de données soutenant une application d'inscription et de planification en direct doit être consciente des requêtes qui prennent quelques secondes pour renvoyer des données. Non seulement une fonction de serveur de rapports tolère mieux les requêtes complexes et longues, mais les stratégies d'amélioration des performances sont très différentes.

Par exemple, dans un environnement d'application basé sur les transactions, vos options d'amélioration des performances peuvent inclure la refactorisation de vos procédures stockées et de vos structures de table au nième degré, ou le développement d'une stratégie de mise en cache pour de petites quantités de données fréquemment demandées. Dans un environnement de création de rapports, vous pouvez certainement le faire, mais vous pouvez avoir un impact encore plus important sur les performances en introduisant un mécanisme d'instantané où un processus planifié s'exécute et stocke des rapports préconfigurés et vos utilisateurs accèdent aux données d'instantané sans stress sur votre niveau de base de données sur une base par demande.

Tout cela est une longue diatribe pour illustrer que les principes de conception et les astuces que vous utilisez peuvent différer compte tenu du rôle de la base de données que vous créez. J'espère que cela vous sera utile.