est-il préférable de les stocker configuration de plate-forme de base de données ou un fichier?
nous sommes actuellement en train de développer une application dans laquelle nous utilisons la table de base de données pour stocker les paramètres de plate-forme, comme la taille de fichier maximale, le maximum de nombre d'utilisateurs, e-mail de soutien, etc.
cela signifie que chaque fois que nous ajoutons une plate-forme de paramètre, nous devons ajouter une colonne de ce tableau.
dans mes précédents projets, je suis utilisés pour stocker ces informations dans un fichier.
ce qui est mieux, plus rapide approche?
ps, je suis presque sûr que quelqu'un avait déjà une telle question, mais je n'arrive pas à trouver
- Si vous avez besoin d'ajouter une nouvelle colonne si un nouveau type de ce que vous êtes stockage s'affiche, votre schéma est probablement pas normalisée.
Vous devez vous connecter pour publier un commentaire.
Cela dépend vraiment de votre application.
Stocker les paramètres dans la base de données a plusieurs avantages:
Inconvénients:
Stocker dans le fichier avantages:
Inconvénients:
cela signifie que chaque fois que nous ajoutons une plate-forme de paramètre, nous devons ajouter une colonne de ce tableau
- selon la base de données que vous utilisez, mais vous pouvez stocker l'ensemble de paramètres au format XML (SQL server permet) dans le tableau, de sorte que vous n'avez pas besoin de modifier le schéma de la table à chaque fois que l'ajout d'un paramètre; tout ce que vous devez faire est de modifier le XML, l'ajout d'éléments ou de les retirer de la il.
mais en fin de compte, vous devez décider vous-même,
il n'y a pas de meilleur ou de pire pour tout le monde.
Nous stocker les paramètres de configuration d'une clé/valeur de type tableau, quelque chose comme:
La
SectionName
&SettingName
sont la clé primaire, nous nous sommes séparés d'eux jusqu'à le rendre plus facile d'interroger ce qui se trouve dans une section, et pour permettre le chargement de toutes les sections en gestionnaires plutôt que de se charger de l'ensemble du lot à la fois. LeSettingValue
est une chaîne de caractères, puis leSettingType
est un discriminateur qui nous renseigne sur la valeur de réglage doit être interprété (par exemple, 1 = chaîne de caractères, 2 = bool, 3 = décimal, etc.).Cela signifie que vous n'avez pas à changer la structure de la table pour que les nouveaux paramètres, il suffit d'ajouter un nouveau dans le script de déploiement ou partout où il est vous définissez ces choses.
Nous trouver une meilleure façon de faire de config qu'un fichier, car cela signifie que vous pouvez facilement changer par programmation config valeurs à travers une interface d'administration si nécessaire, qui permet d'appliquer la logique autour de ce qui peut se passer dans chaque réglage. Vous ne pouvez pas le faire si facilement avec un fichier (si, bien sûr, c'est possible).
Je peux vous dire que je gère une très grande demande à l'un des nombreux sites que le maintien de configs dans des fichiers en local est une douleur complète. Souvent, les configs sont lus et mis en cache et ne pourra pas être modifié pendant l'exécution d'autres ont de la gamme de systèmes où les configs besoin d'être changé à plusieurs reprises et a rebondi.
Ma vie serait 10% plus facile pendant le paysage du système de mise en œuvre si les concepteurs voudrais juste garder les propriétés du système à la DB.
Pourquoi une nouvelle colonne à chaque fois? Pourquoi ne pas juste 2 colonnes: le NOM et la VALEUR.
Ce que nous avons à faire est de définir les valeurs par défaut dans un fichier, puis de remplacer ces valeurs par défaut dans la base de données lorsque nécessaire, par le déploiement.
Aussi, en termes de vitesse, nous le cache de la configuration (avec la possibilité de déclencher un reload). N'a pas de sens pour une re-lecture de la configuration chaque fois que vous besoin d'une propriété à partir d'elle. Donc, en termes de vitesse, il n'a pas vraiment d'importance. Vous n'avez qu'une seule fois.
NULL
colonne de valeurs pour les paramètres.Pour être juste, la réponse n'est pas aussi coupé et clair.
Les réponses ci-dessus ne semblent pas prendre en compte les applications qui doivent être déployés dans les différents environnements ie: dev , qa, la mise en scène, prod.
Ils ne prennent pas en compte l'importance de la gestion des versions de configuration, c'est à dire de savoir qui a modifié quoi, où et quand.
Tous les cadres de fournir un moyen de récupérer une configuration correcte pour des environnements spécifiques, généralement par l'intermédiaire de la variable d'environnement.
Chaque environnment a sa propre config, pensez à la façon dont symfony expose ses fichiers de configuration:
Pour ces raisons, j'ai très certainement préfèrent configuration dans le fichier.
Mes 2 cents.
Je pense comme tout le monde dit, dépend de votre environnement d'applications et d'exigences. Mais si je devais choisir une règle générale, je dirais les DEUX.
Tout d'abord, vous créez une table de base de données pour stocker toutes vos configurations. C'est bien pour deux raisons:
1) la gestion des versions permet de suivre facilement les configurations précédentes.
2) - Vous pouvez créer une interface que les utilisateurs peuvent avoir accès pour modifier les paramètres.
Ensuite, vous créez un fichier que, après que vous avez enregistré et publié sur le site en production, il sera également enregistrer tous les paramètres dans un fichier qui sera facilement accessible. En fait, si vous êtes à la programmation en PHP pour le web, ce fichier doit être un fichier php avec un tableau de données (les paires clé-valeur) qui n'ont besoin d'aucune autre manipulation. Par cela, je veux dire, pas besoin de convertir votre fichier yaml, ou json en un tableau, si c'est le résultat final, vous avez besoin.